Greedy für Matroide < Operations Research < Diskrete Mathematik < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 13:29 Di 29.07.2014 | Autor: | Morgyr |
Aufgabe | Gegeben seien eine Menge von n Aufträgen. Zu jedem Auftrag gehört ein
Schlußtermin [mm] d_{i} \in \IN [/mm] und ein Gewinn [mm] p_{i} \in \IN. [/mm] Diese Aufträge sollen auf einer Maschine
ausgeführt werden. Die Maschine kann jeden der Aufträge in einer Zeiteinheit erledigen.
Eine zulässige Lösung ist eine Auswahl A [mm] \subseteq \{1,\ldots,n\} [/mm] der Aufträge, so dass die Aufträge
in A so angeordnet werden können, dass jeder dieser Aufträge bis zu seinem Schlußtermin
erledigt ist. Gesucht ist eine zulässige Lösung mit maximalem Gewinn.
Zeige, dass dem Problem ein Matroid zugrunde liegt und mit einem Greedy-Algorithmus
gelöst werden kann. |
Moin,
ein paar Fragen zum Algorithmus(die sich während des schreibens auch fast wieder erledigt hatten), und bissl Übung zum Sätze formulieren :D
Fange erstmal an:
Sei M=(S,U) ein Matroid.
Die Menge der Aufträge entspreche S.
Für die Lösung des Problems muss jede mögliche Kombination der Aufträge betrachet werden. Diese Kombinationen bilden die Menge U. Da jede Kombination eine Teilmenge von S ist, ist U ein Menge von Teilmengen von S.
Da jede erdenkliche Kombination betrachtet wird, ist auch die leere Menge in U enthalten. Entsprechend ist auch jede Teilmenge einer Teilmenge von S in U enthalten und umgekehrt gibt es für jedes A, B [mm] \in [/mm] U und |B| = |A|+1 ein x [mm] \in [/mm] B \ A für das gilt [mm] A\cup \{x\} \subseteq [/mm] U.
Damit sind alle Bedingungen eines Matroids erfüllt und daher liegt dem Problem ein Matroid zu Grunde.
Der Greedy-Algorithmus findet für Matroide und eine Gewichtsfunktion eine Basis A minimalen Gewichts.
Eine (inklusions)maximale unabhängige Menge A [mm] \in [/mm] U nennt man Basis.
Entsprechend bricht der Algorithmus ab, sobald A eine Basis von M ist. Dies ist genau dann gegeben, wenn für jedes Element x x [mm] \in [/mm] S und x [mm] \in [/mm] A gilt. Da je Schleife das kleinste Element w(y) mit y [mm] \in [/mm] S zu A hinzugefügt wird, und A erst dann Basis ist, wenn jedes Element sortiert enthalten ist, terminiert der Algorithmus immer mit einer Basis und einer aufsteigenden Sortierung der Elemente x entlang w(x).
Da für das Problem ein Matroid zu Grunde liegt und eine Gewichtsfunktion d(x) gegeben ist, liefert der Greedy-Algorithmus eine Menge von allen Aufträgen, aufsteigend nach dem Schlußtermin sortiert. Somit erfüllt der Greedy die Aufgabenstellung nicht.
Ende
p(x) bzw [mm] p_{i} [/mm] wird ja gar nicht betrachtet, und es ist auch nicht gewährleistet, dass jeder Auftrag rechtzeitig abgearbeitet werden kann. Für 3 Aufträge, wobei der 1. Schlußtermin 1 hat und die beiden anderen Schlußtermin 2 haben, habe ich ja nicht unbedingt den maximalen Gewinn.
Nun kann man natürlich sagen, dass die Gewichtsfunktion p(x) ist und dann praktisch die sortierte Menge von hinten ausgelesen wird. Da wird der Schlußtermin gar nicht berücksichtigt, d.h. der erste bearbeitete Auftrag kann auch derjenige sein, der zwar den höchsten Profit hat aber auch die niedrigste Dringlichkeit. Da der ja direkt bearbeitet wird, hat ein Auftrag mit Schlußtermin 1 keine Chance mehr bearbeitet zu werden und somit ist auch der Profit nicht unbedingt der höchste.
Darüber hinaus liefert der Greedy ja eine sortierte Menge und nicht eine "Auswahl A ... die noch sortiert wird"
Oder verstehe ich da was falsch?
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 06:48 Fr 01.08.2014 | Autor: | meili |
Hallo,
> Gegeben seien eine Menge von n Aufträgen. Zu jedem Auftrag
> gehört ein
> Schlußtermin [mm]d_{i} \in \IN[/mm] und ein Gewinn [mm]p_{i} \in \IN.[/mm]
> Diese Aufträge sollen auf einer Maschine
> ausgeführt werden. Die Maschine kann jeden der Aufträge
> in einer Zeiteinheit erledigen.
> Eine zulässige Lösung ist eine Auswahl A [mm]\subseteq \{1,\ldots,n\}[/mm]
> der Aufträge, so dass die Aufträge
> in A so angeordnet werden können, dass jeder dieser
> Aufträge bis zu seinem Schlußtermin
> erledigt ist. Gesucht ist eine zulässige Lösung mit
> maximalem Gewinn.
> Zeige, dass dem Problem ein Matroid zugrunde liegt und mit
> einem Greedy-Algorithmus
> gelöst werden kann.
> Moin,
> ein paar Fragen zum Algorithmus(die sich während des
> schreibens auch fast wieder erledigt hatten), und bissl
> Übung zum Sätze formulieren :D
>
> Fange erstmal an:
>
> Sei M=(S,U) ein Matroid.
>
> Die Menge der Aufträge entspreche S.
> Für die Lösung des Problems muss jede mögliche
> Kombination der Aufträge betrachet werden. Diese
> Kombinationen bilden die Menge U. Da jede Kombination eine
> Teilmenge von S ist, ist U eine Menge von Teilmengen von S.
> Da jede erdenkliche Kombination betrachtet wird, ist auch
> die leere Menge in U enthalten.
> Entsprechend ist auch jede
> Teilmenge einer Teilmenge von S in U enthalten und
Hier solltest du noch genauer sein. Es ist besser, wenn man als U nicht
die Potenzmenge von S (alle Teilmengen von S) nimmt, sondern nur die
in der Aufgabe als zulässige Lösungen bezeichneten Teilmengen von S.
Und dann zeigen, dass S mit diesem Mengensystem ein Matroid ist.
> umgekehrt gibt es für jedes A, B [mm]\in[/mm] U und |B| = |A|+1 ein
> x [mm]\in[/mm] B \ A für das gilt [mm]A\cup \{x\} \subseteq[/mm] U.
> Damit sind alle Bedingungen eines Matroids erfüllt und
> daher liegt dem Problem ein Matroid zu Grunde.
>
> Der Greedy-Algorithmus findet für Matroide und eine
> Gewichtsfunktion eine Basis A minimalen Gewichts.
> Eine (inklusions)maximale unabhängige Menge A [mm]\in[/mm] U nennt
> man Basis.
> Entsprechend bricht der Algorithmus ab, sobald A eine
> Basis von M ist. Dies ist genau dann gegeben, wenn für
> jedes Element x x [mm]\in[/mm] S und x [mm]\in[/mm] A gilt. Da je Schleife
> das kleinste Element w(y) mit y [mm]\in[/mm] S zu A hinzugefügt
> wird, und A erst dann Basis ist, wenn jedes Element
> sortiert enthalten ist, terminiert der Algorithmus immer
> mit einer Basis und einer aufsteigenden Sortierung der
> Elemente x entlang w(x).
>
> Da für das Problem ein Matroid zu Grunde liegt und eine
> Gewichtsfunktion d(x) gegeben ist, liefert der
> Greedy-Algorithmus eine Menge von allen Aufträgen,
> aufsteigend nach dem Schlußtermin sortiert. Somit erfüllt
> der Greedy die Aufgabenstellung nicht.
Mit verändertem Matroid und als Gewichtsfunktion p(x) der Gewinn pro
Autrag sollte es gehen.
Wie ist das mit minimal und maximal der Gewichtsfunktion?
Gewinn soll ja maximal werden.
>
> Ende
> p(x) bzw [mm]p_{i}[/mm] wird ja gar nicht betrachtet, und es ist
> auch nicht gewährleistet, dass jeder Auftrag rechtzeitig
> abgearbeitet werden kann. Für 3 Aufträge, wobei der 1.
> Schlußtermin 1 hat und die beiden anderen Schlußtermin 2
> haben, habe ich ja nicht unbedingt den maximalen Gewinn.
>
> Nun kann man natürlich sagen, dass die Gewichtsfunktion
> p(x) ist und dann praktisch die sortierte Menge von hinten
> ausgelesen wird. Da wird der Schlußtermin gar nicht
> berücksichtigt, d.h. der erste bearbeitete Auftrag kann
> auch derjenige sein, der zwar den höchsten Profit hat aber
> auch die niedrigste Dringlichkeit. Da der ja direkt
> bearbeitet wird, hat ein Auftrag mit Schlußtermin 1 keine
> Chance mehr bearbeitet zu werden und somit ist auch der
> Profit nicht unbedingt der höchste.
>
> Darüber hinaus liefert der Greedy ja eine sortierte Menge
> und nicht eine "Auswahl A ... die noch sortiert wird"
>
> Oder verstehe ich da was falsch?
Wahrscheinlich muss du U auf andere weise wie ein Greedy-Algorithmus herstellen.
>
>
Gruß
meili
|
|
|
|