Eine überraschende Anzahl von Problemen hat eine ziemlich natürliche Reduktion auf die lineare Programmierung (LP). In Kapitel 7 von [1] finden Sie Beispiele für Netzwerkflüsse, bipartite Matching, Nullsummenspiele, kürzeste Pfade, eine Form der linearen Regression und sogar die Auswertung von Schaltkreisen!
Da sich die Schaltungsbewertung auf lineare Programmierung reduziert, muss jedes Problem in eine lineare Programmierformulierung haben. Daher haben wir einen "neuen" Sortieralgorithmus, der auf ein lineares Programm reduziert wird. Also meine Fragen sind
- Was ist das lineare Programm, das ein Array von reellen Zahlen sortiert ?
- Welche Laufzeit hat der Sortieralgorithmus zum Reduzieren auf LP und zum Lösen?
- Algorithmen von S. Dasgupta, C. Papadimitriou und U. Vazirani (2006)
Antworten:
Die folgende Antwort entspricht im Wesentlichen der, die Sie bereits kennen, scheint jedoch etwas weniger "magisch" zu sein. Auf der anderen Seite ist es technischer, aber ich glaube, dass die allgemeine Technik "Schreiben Sie Ihr Problem als Optimierung für Permutationsmatrizen und rufen Sie Birkhoff-von Neumann auf" eine großartige Technik ist.
Für eine Permutation von { 1 , ... , n } definiert die Permutationsmatrix P σ als die 0-1 - Matrix derart , daß P i j = 1 , wenn j = σ ( i ) und P i j = 0 sonst. Dies ist einfach die Matrix, die die Koordinaten eines Vektors x gemäß σ permutiert : Wenn y = P σ x, dann ist y i = x σσ {1,…,n} Pσ Pij=1 j=σ(i) Pij=0 x σ y=Pσx . Ich werdevon nun any= P σ xalsσ(x) bezeichnen.yi=xσ(i) y=Pσx σ(x)
Noch eine Definition: Eine nicht negative Matrix M ist doppelt stochastisch, wenn jede ihrer Zeilen und jede ihrer Spalten zu 1 summiert.n×n M
Und eine Tatsache, die für die kombinatorische Optimierung sehr wichtig ist - das Birkhoff-von-Neumann-Theorem:
Beachten Sie, dass eine doppelt stochastische Matrix durch die Ungleichungen definiert wird
∀ j : n Σ i = 1 M i j = 1 ∀ i , j : M i j ≥ 0
Alle diese Ungleichungen zusammen ergeben ein Polytop , und das Birkhoff-von-Neumann-Theorem besagt, dass die Extrempunkte (Eckpunkte) dieses Polytops alle Permutationsmatrizen sind. Aus der linearen Grundprogrammierung wissen wir, dass jedes lineare Programm, das die obigen Ungleichungen als Nebenbedingungen (und keine anderen Nebenbedingungen) aufweist, eine Permutationsmatrix als optimale Lösung hat.P
Wenn also eine Eingabe sortiert werden soll, müssen wir nur ein lineares Objektiv f a ( M ) aufstellen, für das:a=(a1,…,an) fa(M)
Und voila, du hast ein lineares Programm zum Sortieren. Scheint albern für das Sortieren, aber dies ist in der Tat eine leistungsfähige Methode zur Optimierung.
quelle