Es ist bekannt, dass für jede Matroid und jede Gewichtsfunktion ein Algorithmus der eine maximale Gewichtsbasis von zurückgibt . Stimmt also auch die umgekehrte Richtung? Das heißt, wenn es einen gierigen Algorithmus gibt, muss es auch eine Matroid-Struktur geben.
ds.algorithms
greedy-algorithms
Jan Johannsen
quelle
quelle
Antworten:
Der Greedy-Algorithmus ist kein formal definiertes Konzept. Es gibt verschiedene Modelle, die versuchen, diese intuitive Vorstellung zu erfassen, aber es gibt keinen Konsens darüber, was ein gieriger Algorithmus ist. Wenn Sie keine formale Definition für den Begriff "gieriger Algorithmus" angeben, kann die Frage nicht mit "Ja" oder "Nein" beantwortet werden.
Es gibt eine Verallgemeinerung von Matroiden namens Greedoid, die von gierigen Algorithmen inspiriert ist.
quelle
Tatsächlich ist die vollständige und allgemeine Beschreibung eines Problems, das durch einen Greedy-Algorithmus gelöst werden kann, eine Matroid-Einbettung , die sowohl das Konzept eines Matroids als auch das eines Greedoids verallgemeinert . Die Antwort ist nein - ein Problem, das durch einen gierigen Algorithmus lösbar ist, muss keine Matroid-Struktur haben, aber es wird die Struktur einer Matroid-Einbettung haben (was leider viel komplizierter ist).
Ein mentales Modell für einige davon könnte sein, minimale Spannbäume zu finden. Die von Kruskals Algorithmus verwendete Struktur ist eine Matroide, die von Prims Algorithmus (für den ein Startknoten erforderlich ist) jedoch nicht. (Es handelt sich jedoch um eine Gier - und eine Matroid-Einbettung.)
Helman et al. (1993) definieren in ihrer Arbeit Eine genaue Charakterisierung gieriger Strukturen ihren Begriff eines gierigen Algorithmus in Bezug auf Mengen-Systeme, der der gleiche Formalismus ist, der für Matroiden und Greedoiden verwendet wird. Ein Mengen-System besteht aus einer Menge S und einer Sammlung C von Teilmengen von S , den sogenannten Machbaren Mengen . Eine Basis für das Mengen-System ist eine maximal mögliche Menge, dh eine Menge, die machbar ist, aber in keiner anderen machbaren Menge enthalten ist. Eine Zielfunktion f : 2 S → R( S, C) S C S f: 2S→ R ordnet jede Teilmenge von einem Wert zu. Ein Optimierungsproblem in diesem Formalismus besteht darin, eine Basis für den maximalen Zielwert für ein gegebenes Satzsystem und eine gegebene Zielfunktion zu finden.S
Der im Sinne dieses Formalismus definierte Greedy-Algorithmus ist recht einfach: Sie beginnen mit der leeren Menge und fügen nacheinander ein einzelnes Element hinzu, bis Sie zu einer Basis gelangen, wobei Sie stets sicherstellen, dass (i) Ihre Menge bei jedem Schritt durchführbar ist, und ( ii) Das Element, das Sie hinzufügen, maximiert die objektive Funktion des resultierenden Ergebnisses, z. Alle alternativen Elemente, die Sie hätten hinzufügen können. (Das heißt, Sie versuchen konzeptionell, alle möglichen Alternativen hinzuzufügen, und wählen diejenige, die den höchsten objektiven Wert ergibt.)
Sie könnten vielleicht argumentieren, dass es andere Formen von Greedy-Algorithmen geben könnte, aber es gibt mehrere Lehrbücher über Algorithmen und kombinatorische Optimierung, die diesen Algorithmus auf der Basis von Mengen-Systemen als Greedy-Algorithmus beschreiben. Das hindert Sie nicht daran, etwas zu beschreiben, das nicht passt, aber trotzdem als gierig bezeichnet werden könnte, nehme ich an. (Still, dies tut Abdeckung alles , was potenziell eine Matroid Struktur haben könnte, zum Beispiel, obwohl es viel allgemeiner.)
Was Helman et al. Sie beschreiben, wann dieser Algorithmus funktioniert. Genauer:
Sie zeigen, dass für lineare Zielfunktionen (wobei der Zielwert die Summe der Elementgewichte ist) der Greedy-Algorithmus genau auf die Struktur angewendet wird, die sie als Matroid-Einbettung definieren.
Sie geben eine ähnliche Charakterisierung für sogenannte Engpassziele (wobei der Zielwert einer Menge über die einzelnen Elementgewichte gleich dem Minimum ist); und
Sie geben eine genaue Beschreibung, welche objektiven Funktionen (über die linearen hinaus) durch den gierigen Algorithmus bei Matroid-Einbettungen optimiert werden.
quelle
Berücksichtigen Sie folgende Probleme: KETTENRECHTLICHER EURO: Bezahlen Sie bei einem unendlichen Betrag von 1,2,5,10 Euro-Banknoten X Euro mit möglichst wenigen Banknoten. Dies kann durch die Verwendung eines gierigen Algorithmus gelöst werden, der die größtmögliche Beachtung findet. Bei diesem Problem gibt es jedoch keine Matroid-Struktur.
LOCHABDECKUNG: An den Positionen x_1, x_2, ..., x_n sind Löcher vorhanden. Sie haben einen Patch von 10 cm Länge. Patchen Sie die Löcher mit so wenig Patches wie möglich. Auch dies kann auf gierige Weise gelöst werden (Patch so richtig wie möglich platzieren), aber es gibt keine Matroid-Struktur.
quelle