Greedy-Algorithmus

Greedy-Algorithmus

Greedy-Algorithmen oder gierige Algorithmen bilden eine spezielle Klasse von Algorithmen, die in der Informatik auftreten. Sie zeichnen sich dadurch aus, dass sie schrittweise den Folgezustand auswählen, der zum Zeitpunkt der Wahl den größten Gewinn bzw. das beste Ergebnis verspricht (z. B. Gradientenverfahren). Um unter den Folgezuständen eine Auswahl zu treffen, wird oft eine Bewertungsfunktion verwendet.

Greedy-Algorithmen sind meist schnell, lösen viele Probleme aber nicht optimal.

Inhaltsverzeichnis

Optimierungsprobleme auf Unabhängigkeitssystemen

Ein Greedy-Algorithmus findet für ein Optimierungsproblem auf Unabhängigkeitssystemen genau dann die optimale Lösung für alle Bewertungsfunktionen, wenn die zulässigen Lösungen die unabhängigen Mengen eines Matroids sind. Sonst führt der Algorithmus lediglich zu einem lokalen Optimum. Beispiele dafür sind das Rucksackproblem und das Problem des Handlungsreisenden. Bei diesen Problemen ist es wesentlich aufwändiger, die optimale Lösung zu finden, da die Probleme NP-vollständig sind.

Algorithmus für das Maximierungsproblem

Zu einem Matroid (E,U) sei eine Gewichtsfunktion w:E\rightarrow \mathbb{R}^+ gegeben. Der folgende Algorithmus findet eine schwerste unabhängige Menge, bestimmt also ein F\in U, das w(F) := \sum_{e\in F} w(e) maximiert:

01  // Ordne alle Elemente in E nach absteigendem Gewicht
02  w(e_1)\geq\ldots\geq w(e_n)
03  
04  T=\emptyset;
05  
06  for (k = 1; k <= n; k++) {
07    if (T\cup\{e_k\}\in U)
08      T=T\cup\{e_k\}
09  }
10  
11  Ausgabe der Lösung T

Verallgemeinerbarkeit

Der Algorithmus löst auch Maximierungs- und Minimierungsprobleme zu beliebigen Gewichtsfunktionen w: E\to \mathbb{R}: 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, können wir auf die Lösung des Maximierungsproblems zurückführen, indem wir die Gewichte durch ihre additiven Inversen ersetzen.

Laufzeit

Ist L die Laufzeit der Prüfung einer Menge auf Unabhängigkeit, so ist die Laufzeit des Algorithmus durch \mathcal{O}(|E|\cdot(\log(|E|+L))) 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 (E,U) sei eine Gewichtsfunktion w:E\rightarrow \mathbb{R}^+ gegeben. Der folgende Algorithmus findet eine leichteste Basis, bestimmt also unter den kardinalitätsmaximalen B\in U eines, das c(B) := \sum_{e\in B} c(e) minimiert:

  • Sortiere E, so dass E=\{e_1, \ldots, e_n\} mit w(e_1) \geq w(e_2) \geq \cdots \geq w(e_n)
  • T := E
  • Für jedes i von 1 bis n:
Enthält T\setminus e_i eine Basis, so setze T := T \setminus e_i.
  • Gib T aus.

Vergleich zum Maximierungsproblem, Verallgemeinerbarkeit

Da wir positive Gewichte vergeben, ist das Problem, nach einer leichtesten Basis-Obermenge zu suchen, äquivalent. Dieses Problem ist dual zum Maximierungsproblem und kann analog auf beliebige Gewichtsfunktionen und das entsprechende Minimierungsproblem verallgemeinert werden.

Laufzeit

Ist L die Laufzeit der Prüfung, ob eine Teilmenge von E Obermenge einer Basis ist, so ist die Laufzeit des Algorithmus durch \mathcal{O}(|E|\cdot(\log(|E|+L))) 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

  • Algorithmus von Kruskal für die Suche nach einem minimalen Spannbaum
  • Algorithmus von Prim für die Suche nach einem minimalen Spannbaum (das zugrundeliegende Mengensystem – die Menge der Bäume – ist aber kein Unabhängigkeitssystem)
  • Algorithmus von Dijkstra zur Suche eines kürzesten Weges

Literatur


Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР
Synonyme:

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Greedy Algorithmus — Greedy Algorithmen bzw. Gierige Algorithmen bilden eine spezielle Klasse von Algorithmen, wie sie in der Informatik auftreten. Sie zeichnen sich dadurch aus, dass sie schrittweise denjenigen Folgezustand auswählen, der zum Zeitpunkt der Wahl den… …   Deutsch Wikipedia

  • Greedy-Algorithmen — bzw. Gierige Algorithmen bilden eine spezielle Klasse von Algorithmen, wie sie in der Informatik auftreten. Sie zeichnen sich dadurch aus, dass sie schrittweise denjenigen Folgezustand auswählen, der zum Zeitpunkt der Wahl den größten Gewinn bzw …   Deutsch Wikipedia

  • Greedy Perimeter Stateless Routing in Wireless Networks — (engl. „Greedy Perimeter Wegewahl in Funknetzen“, Abkürzung GPSR) ist ein Routing Protokoll für mobile Ad hoc Netze, also ein Verfahren, mit dem Datenpakete in spontan aufgebauten Rechnernetzen an ihr Bestimmungsziel gelotst werden sollen. Das… …   Deutsch Wikipedia

  • Greedy — steht für Greedy Algorithmus, spezielle Klasse von Algorithmen in der Informatik Greedy (Film), US amerikanische Filmkomödie von Jonathan Lynn aus dem Jahr 1994 Greedy Perimeter Stateless Routing in Wireless Networks (GPSR), Routing Protokoll für …   Deutsch Wikipedia

  • Algorithmus von Bellman und Ford — Der Algorithmus von Bellman und Ford (nach seinen Erfindern Richard Bellman und Lester Ford) ist ein Algorithmus der Graphentheorie und dient der Berechnung der kürzesten Wege ausgehend von einem Startknoten in einem kantengewichteten Graphen.… …   Deutsch Wikipedia

  • Algorithmus von Jarnik, Prim und Dijkstra — Der Algorithmus von Prim dient der Berechnung eines minimalen Spannbaumes in einem zusammenhängenden, ungerichteten, kantengewichteten Graphen. Der Algorithmus wurde 1930 von dem tschechischen Mathematiker Vojtěch Jarník entwickelt. 1957 wurde er …   Deutsch Wikipedia

  • Algorithmus — Al Chwarizmi, der Namensgeber des Algorithmus, auf einer sowjetischen Briefmarke anlässlich seines 1200 jährigen Geburtsjubiläums. Ein Algorithmus ist eine aus endlich vielen Schritten bestehende eindeutige Handlungsvorschrift zur Lösung eines… …   Deutsch Wikipedia

  • Algorithmus von Prim — Der Algorithmus von Prim dient der Berechnung eines minimalen Spannbaumes in einem zusammenhängenden, ungerichteten, kantengewichteten Graphen. Der Algorithmus wurde 1930 vom tschechischen Mathematiker Vojtěch Jarník entwickelt. 1957 wurde er… …   Deutsch Wikipedia

  • Gieriger Algorithmus — Greedy Algorithmen bzw. Gierige Algorithmen bilden eine spezielle Klasse von Algorithmen, wie sie in der Informatik auftreten. Sie zeichnen sich dadurch aus, dass sie schrittweise denjenigen Folgezustand auswählen, der zum Zeitpunkt der Wahl den… …   Deutsch Wikipedia

  • A-Stern-Algorithmus — Der A* Algorithmus („A Stern“ oder englisch „a star“) gehört zur Klasse der informierten Suchalgorithmen. Er dient in der Informatik der Berechnung eines kürzesten Pfades zwischen zwei Knoten in einem Graphen mit positiven Kantengewichten. Er… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”