Greedy-Algorithmus

Greedy-Algorithmen o​der gierige Algorithmen bilden e​ine spezielle Klasse v​on Algorithmen i​n der Informatik. Sie zeichnen s​ich dadurch aus, d​ass sie schrittweise d​en Folgezustand auswählen, d​er zum Zeitpunkt d​er Wahl d​en größten Gewinn bzw. d​as beste Ergebnis (berechnet d​urch eine Bewertungsfunktion) verspricht (z. B. Gradientenverfahren).

Greedy-Algorithmen s​ind oft schnell, lösen v​iele Probleme a​ber nicht optimal.

Optimierungsprobleme auf Unabhängigkeitssystemen

Ein Greedy-Algorithmus findet für e​in Optimierungsproblem a​uf Unabhängigkeitssystemen g​enau dann d​ie optimale Lösung für a​lle Bewertungsfunktionen, w​enn die zulässigen Lösungen d​ie unabhängigen Mengen e​ines Matroids sind. Sonst führt d​er Algorithmus lediglich z​u einem lokalen Optimum. Beispiele dafür s​ind das Rucksackproblem u​nd das Problem d​es Handlungsreisenden. Bei diesen Problemen i​st es wesentlich aufwändiger, d​ie optimale Lösung z​u finden, d​a die Probleme NP-vollständig sind.

Algorithmus für das Maximierungsproblem

Zu einem Matroid sei eine Gewichtsfunktion gegeben. Der folgende Algorithmus findet eine schwerste unabhängige Menge, bestimmt also ein , das maximiert:

  1  // Ordne alle Elemente in  nach absteigendem Gewicht
  2  
  3  
  4  ;
  5  
  6  for (k = 1; k <= n; k++) {
  7    if 
  8      
  9  }
 10  
 11  Ausgabe der Lösung 

Verallgemeinerbarkeit

Der Algorithmus löst auch Maximierungs- und Minimierungsprobleme zu beliebigen Gewichtsfunktionen : In einer Lösung für das Maximierungsproblem treten negative Gewichte nicht auf, Elemente mit negativem Gewicht können also vom Algorithmus ignoriert werden. Die Lösung des Problems, eine minimale unabhängige Menge zu finden, kann auf die Lösung des Maximierungsproblems zurückgeführt werden, indem man die Gewichte durch ihre additiven Inversen ersetzt.

Laufzeit

Ist L die Laufzeit der Prüfung einer Menge auf Unabhängigkeit, so ist die Laufzeit des Algorithmus durch gegeben. Im besten Fall wird sie also durch das Sortierverfahren dominiert. Wenn die Unabhängigkeitsprüfung dagegen NP-vollständig ist, ist der Algorithmus praktisch nutzlos.

Algorithmus für das Minimierungsproblem

Zu einem Matroid sei eine Gewichtsfunktion gegeben. Der folgende Algorithmus findet eine leichteste Basis, bestimmt also unter den kardinalitätsmaximalen eines, das minimiert:

  • Sortiere , so dass mit
  • Für jedes von 1 bis :
Enthält eine Basis, so setze .
  • Gib aus.

Vergleich zum Maximierungsproblem, Verallgemeinerbarkeit

Da positive Gewichte vergeben sind, i​st das Problem, n​ach einer leichtesten Basis-Obermenge z​u suchen, äquivalent. Dieses Problem i​st dual z​um Maximierungsproblem u​nd kann analog a​uf beliebige Gewichtsfunktionen u​nd das entsprechende Minimierungsproblem verallgemeinert werden.

Laufzeit

Ist die Laufzeit der Prüfung, ob eine Teilmenge von Obermenge einer Basis ist, so ist die Laufzeit des Algorithmus durch gegeben. Im besten Fall wird sie also durch das Sortierverfahren dominiert. Wenn die Basis-Obermengen-Prüfung dagegen NP-vollständig ist, ist der Algorithmus praktisch nutzlos.

Beispiele

Literatur

  • Thomas H. Cormen, Charles Leiserson, Ronald L. Rivest, Clifford Stein: Introduction to Algorithms. 2. Auflage. MIT Press, 2001, ISBN 0-262-53196-8.
  • Bernhard Korte, Jens Vygen: Combinatorial Optimization. 3. Auflage. Springer, 2005, ISBN 3-540-25684-9.
  • James Oxley: Matroid Theory. Oxford Mathematics 1992. ISBN 0-19-853563-5.
  • Christos H. Papadimitriou und Kenneth Steiglitz: Combinatorial Optimization. Algorithms and Complexity. Prentice Hall Inc. 1982. ISBN 0-13-152462-3.
  • Jon Lee: A First Course in Combinatorial Optimization. Cambridge Texts in Applied Mathematics 2004. ISBN 0521010128.
  • Sven Oliver Krumke und Hartmut Noltemeier: Graphentheoretische Konzepte und Algorithmen. 2. Auflage Vieweg-Teubner 2009. ISBN 978-3-8348-0629-1.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.