Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Die Ungarische Methode für das Assignment Problem von H. W. Kuhn (1955) Seminar Kombinatorische Optimierung SS08: Christof Schulz 11.07.2008 Harold William Kuhn Das Assignmentproblem 1 Harold William Kuhn 2 Das Assignmentproblem Ungarische Methode Einfaches Assignmentproblem Das allgemeine Assignmentproblem Duale Programm Nachbesserung Zusammenfassung 3 Ungarische Methode Start Schritt 1 Schritt 3 Schritt 2 4 Aufwand Aufwandsanalyse 5 aktuelle Entwicklung Aufwand aktuelle Entwicklung Harold William Kuhn Das Assignmentproblem Ungarische Methode Harold William Kuhn Geboren: 29.07.1925 in Santa Monica, Californien, USA Bildung: California Institute of Technology(1947) Magister Artium(1948) Doktor der Mathematik Princeton University(1950) Laufbahn: Dozent(1951-1952), Assistensprofessor(1952-1959), Junior-Professor(1959-1963), Professor(1963-1995) Aktuell: Emeritus Professor(seit 1995) Ungarische 1955, Vorarbeit von Dénes König Methode: und Jeno Egerváry Aufwand aktuelle Entwicklung Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Einfaches Assignmentproblem Das Assignmentproblem Harold William Kuhn Das Assignmentproblem Ungarische Methode Einfaches Assignmentproblem Das einfache Assignmentproblem n Personen n Jobs n x n Qualikationsmatrix Q ( qij = 1 Person i ist für Job j qualiziert 0 sonst Q= 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0 1 gesucht: Maximale Anzahl unabhängiger einsen Aufwand aktuelle Entwicklung Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Einfaches Assignmentproblem komplettes Assignment Personen werden Jobs zugeordnet Denition (komplett) Es kann keine weitere Person mehr einem Job zugeordnet werden. ∗ 1 1 0 0 0 1 0 0 1 0 0 0 1 1 0 ∗ 1 kann nur noch durch Transfer verbessert werden. Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Einfaches Assignmentproblem Transfer i ir ändert die Zuordnung von r verschiedenen Personen 1 .. j jr ordnet i1 freien und Jobs 1 .. i1 i2 . . j0 j1 . . j Job 0 zu und Person ir . . . . . jr −1 jr ik Job jk − 1 für k=2..r. Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Einfaches Assignmentproblem Wesentlich Denition (wesentliche Person) Person kann in einen Transfer involviert werden Denition (wesentlicher Job) Job ist einer unwesentlichen Person zugeordnet Für eine gegebene Zuordnung (i,j) ist entweder i oder j wesentlich, aber nicht i und j. #(Personen haben Job)= #(wesentliche Personen) + #(wesentliche Jobs) Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Das allgemeine Assignmentproblem Das allgemeine Assignmentproblem n Personen, n Jobs rij ) n x n Matrix R=( mit rij ∈ N Den n Personen wird eine Permutation der n Jobs zugeordnet. Person 1 2 . . . n Job j1 j2 . . . jn Maximiere: Pn i =1 rij i über allen Permutationen J = (ji ) von 1 - n. Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand Das allgemeine Assignmentproblem allg. Assignmentproblem als LP ( Variablen: xij = Maximiere s.t. Pn i =1 1 Person i erledigt Job j 0 sonst Pn j =1 xij ∗ rij Pn i =1 xij = 1 Pn j =1 xij = 1 xij ≥ 0 xij ∈ Z , für j=1..n , für i=1..n aktuelle Entwicklung Harold William Kuhn Das Assignmentproblem Ungarische Methode Duale Programm Dualisieren Minimiere Pn i =1 ui + Pn i =1 vi s.t. ui + vj ≥ rij ui ≥ 0 vi ≥ 0 ui , vi ∈ Z Aufwand aktuelle Entwicklung Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Duale Programm Für jedes Assignment Z=((1, ji ); (2, j2 ); ...; (n, jn )) gilt: u1 + ... + un + v1 + ... + vn ≥ r1j1 + ... + rnj n opt Lösung Dual = opt Lösung Primal (Dualitätssatz) Konstruiere ein einfaches Assignmentproblem: Person i ist für Job j qualiziert, wenn ui + vj = rij Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Duale Programm Theorem Wenn allen n Personen ein Job, für den sie qualiziert sind, im konstruierten einfachen Assignmentproblem zugeordnet werden kann, dann löst dieses Assignment(Z) das allgemeine Problem optimal. Beweis. ui + vj = rij ∀(i , j ) ∈ Z ⇒ P i ui + vi = P (i ,j )∈Z rij Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Nachbesserung Nachbesserung Kann nicht allen n Personen ein Job zugeordnet werden, muÿ nachgebessert werden. Folgende Bedingungen gelten: rij > 0 ui + vj ≥ rij ⇒ ui > 0 oder vi > 0 Es können nur m < n Personen zugeordnet werden und das Assignment ist komplett nach jedem Transfer r wesentliche Personen s wesentliche Jobs m=r+s Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Nachbesserung Nachbesserungsregeln oBdA alle ui > 0 Theorem 0 0 0 0 u1 = u1 , ..., ur = ur , ur +1 = ur +1 − 1, ..., un = un − 1 0 0 0 0 v1 = v1 + 1, ..., vs = vs + 1, vs +1 = vs +1 , ..., vn = vn Die neue Zuordnung ist eine zulässige Lösung für das duale LP. Harold William Kuhn Das Assignmentproblem Nachbesserung Beweis. z.z. 0 0 ui + vj ≥ rij Ungarische Methode Aufwand aktuelle Entwicklung Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Nachbesserung Beweis. z.z. 0 0 ui + vj ≥ rij kann nur verletzt werden, wenn 0 vj = vj ui + vj = rij und 0 ui = ui − 1, Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Nachbesserung Beweis. z.z. 0 0 ui + vj ≥ rij kann nur verletzt werden, wenn 0 vj = vj ⇒ ui + vj = rij und 0 ui = ui − 1, i und j sind unwesentlich Aber: da ui + vj = rij ⇒ Person i für Job j qualiziert ( qij = 1) Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Nachbesserung Beweis. z.z. 0 0 ui + vj ≥ rij kann nur verletzt werden, wenn 0 vj = vj ⇒ ui + vj = rij 0 ui = ui − 1, i und j sind unwesentlich Aber: da ui + vj = rij ⇒ Person i für Job j qualiziert ( 3 Fälle: 1 und i ist j zugeordnet: nach Denition entweder i oder j wesentlich. qij = 1) Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Nachbesserung Beweis. z.z. 0 0 ui + vj ≥ rij kann nur verletzt werden, wenn 0 vj = vj ⇒ ui + vj = rij und 0 ui = ui − 1, i und j sind unwesentlich Aber: da ui + vj = rij ⇒ Person i für Job j qualiziert ( qij = 1) 3 Fälle: 1 i ist j zugeordnet: nach Denition entweder i oder j wesentlich. 2 i ist einem anderen Job zugeordnet: i ist wesentlich(i kann j durch einen Transfer zugeordnet werden). Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Nachbesserung Beweis. z.z. 0 0 ui + vj ≥ rij kann nur verletzt werden, wenn 0 vj = vj ⇒ ui + vj = rij und 0 ui = ui − 1, i und j sind unwesentlich Aber: da ui + vj = rij ⇒ Person i für Job j qualiziert ( qij = 1) 3 Fälle: 1 i ist j zugeordnet: nach Denition entweder i oder j wesentlich. 2 i ist einem anderen Job zugeordnet: i ist wesentlich(i kann j durch einen Transfer zugeordnet werden). 3 i ist keinem Job zugeordnet: j ist wesentlich (j kann durch keinen Transfer i zugeordnet werden, da Z komplett nach jedem Transfer ist) Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Nachbesserung Die 0 ui und 0 vj sind also eine zulässige Lösung Neuer Zielfunktionswert(NW) < Alter Zielfunktionswert (AW), da : Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Nachbesserung Die 0 ui und 0 vj sind also eine zulässige Lösung Neuer Zielfunktionswert(NW) < Alter Zielfunktionswert (AW), da : NW= AW − (n − r ) ∗ 1 + s ∗ 1 Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Nachbesserung Die 0 ui und 0 vj sind also eine zulässige Lösung Neuer Zielfunktionswert(NW) < Alter Zielfunktionswert (AW), da : NW= AW − (n − r ) ∗ 1 + s ∗ 1 = AW -n + r +s = AW -n + m < AW, da -n+m <0 Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Nachbesserung Die 0 ui und 0 vj sind also eine zulässige Lösung Neuer Zielfunktionswert(NW) < Alter Zielfunktionswert (AW), da : NW= AW − (n − r ) ∗ 1 + s ∗ 1 = AW -n + r +s = AW -n + m < AW, da -n+m <0 Neuer Zielfunktionswert < Alter Wert optimaler Zielfunktionswert >0 endliches Verfahren Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand Zusammenfassung Zusammenfassung Primal: rij ) P j1 , .., jn die ni=1 rij gegeben: n x n Matrix R= ( gesucht : Permutation i maximiert Dual: gegeben: n x n Matrix R= ( gesucht : u1 , .., un v1 , .., vn ui + vj ≥ rij rij ) so dass Pn i =1 ui + vi minimal und aktuelle Entwicklung Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand Der Algorithmus aktuelle Entwicklung Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Ungarische Methode Gestartet wird mit einer zulässigen Lösung für das duale Problem Erzeuge Matrix A=( aij )=ui + vj − rij Suche n unabhängige Nullen in A Harold William Kuhn Das Assignmentproblem Ungarische Methode Start Start-Lösung ui = maxj rij vj = 0 Beispiel: u1 = 9 u3 = 9 (Zeilenmaxima) für j=1..n R = 8 7 9 9 5 2 7 8 6 1 4 9 2 3 2 6 u2 = 8 u4 = 6 v1 = 0 v3 = 0 v2 = 0 v4 = 0 Aufwand aktuelle Entwicklung Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Start Beispiel A = 1 2 0 0 3 6 1 0 3 8 5 0 4 3 4 0 Vor Start noch das Minimum in jeder Spalte ermitteln und von der ganzen Spalte abziehen A = 0 0 0 0 2 4 1 0 2 6 5 0 3 1 4 0 Harold William Kuhn Start Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Schritt 1 Vorher: Markiere unabhängige Nullen und die jeweilige Spalte in A ↓ ↓ ∗ 0 0 0 0 2 4 1 2 6 5 0 3 1 4 0 ∗ 0 Schritt 1 Suche nicht markierte Null (keine vorhanden ∗ keine 0 in der Zeile → → Schritt 3) Schritt 2 0∗ in der Zeile und Spalte k: Zeile wird markiert, Spalte k Markierung löschen Bis alle Nullen in markierter Zeile/Spalte → Schritt 3 Im Bsp: unmarkierte Null in Zeile 1 → Zeile 1 markieren, Spalte 3 Markierung löschen Danach alle Nullen markiert → Schritt 3 Harold William Kuhn Das Assignmentproblem Ungarische Methode Schritt 3 ↓ → ∗ 0 0 0 0 2 4 1 2 6 5 0 3 1 4 0 ∗ 0 Schritt 3 aij Zeile i, Spalte j unmarkiert aij = aij + h ∀aij in markierter Zeile aij = aij − h ∀aij in unmarkierter Spalte h=min → Schritt 1 Aufwand aktuelle Entwicklung Harold William Kuhn Das Assignmentproblem Ungarische Methode Schritt 3 ↓ → ∗ 0 0 0 0 2 4 1 2 6 5 0 3 1 4 0 ∗ 0 Schritt 3 aij Zeile i, Spalte j unmarkiert aij = aij + h ∀aij in markierter Zeile aij = aij − h ∀aij in unmarkierter Spalte h=min → Schritt 1 Im Bsp: h=1 ↓ → 0 0 ∗ 0 1 3 0 1 5 4 0 2 0 3 0 1 ∗ 0 Aufwand aktuelle Entwicklung Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Schritt 3 Schritt 1: ↓ → 0 0 ∗ 0 1 3 0 1 5 4 0 2 0 3 0 1 ∗ 0 Unmarkierte Null in Zeile 2, Zeile 2 markieren, Spalte 4 Markierung löschen → → ∗ 0 0 1 3 0 1 5 4 0 2 0 3 0 unmarkierte 0 in Zeile 3, keine 0 0 1 ∗ 0 ∗ in Zeile 3 → Schritt 2 Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Schritt 2 → → ∗ 0 0 0 1 3 0 1 1 5 4 0 2 0 3 0 ∗ 0 Schritt 2 i j Starte mit unmarkierter 0 bei ( 1 , 1 ) ∗ 1 Suche 0 2 in Spalte j1 (gefunden bei (i2 ,j1 )) Suche 0 in Zeile i2 (gefunden bei (i2 ,j2 )) ∗ mehr in der Spalte Weiter bei 1 bis keine 0 ∗ und jede 0∗ in eine 0 Ändere jede 0 in Sequenz in eine 0 ∗ markieren Alle Markierungen löschen, alle Spalten mit 0 Wenn alle Spalten markiert sonst Schritt 1 → Lösung gefunden Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Schritt 2 ↓ unmarkierte 0 in Zeile 1 → ↓ ↓ 0 1 ∗ 0 ∗ 0 0 1 3 1 5 4 2 0 3 0 ∗ 0 0 Zeile 1 markieren, Spalte 1 Markierung löschen → ↓ ↓ 0 1 ∗ 0 ∗ 0 0 1 3 1 5 4 2 0 3 unmarkierte 0 in Zeile 4, keine 0 0 ∗ 0 0 ∗ in Zeile 4 → Schritt 2 Harold William Kuhn Das Assignmentproblem Ungarische Methode Schritt 2 Schritt 2: keine 0 ∗ in Spalte 2, nur eine 0 in der Sequenz: ↓ ↓ ↓ ↓ ∗ 0 0 1 1 3 ∗ 0 1 5 4 2 ∗ 0 3 0 0 0 ∗ 0 Lösung gefunden: (1,1) ; (2,4) ; (3,2) ; (4,3) Aufwand aktuelle Entwicklung Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand Aufwand aktuelle Entwicklung Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand Aufwandsanalyse Aufwand Maximale Anzahl Operationen im Worst-Case Operationen sind Zeile/Spalte scannen Zeile/Spalte markieren bzw. Markierung löschen Zu einer Zeile/Spalte addieren/subtrahieren Null auswählen bzw. Auswahl löschen aktuelle Entwicklung Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Aufwandsanalyse ∗ Start mit m 0 ∗ vorhanden sind Aufwand bis m+1 0 Schritt 1 1 Jede Zeile scannen: n Operationen 2 genau eine markierte Zeile erzeugen: 2 Operationen (Jede unmarkierte Spalte enthält mind. eine 0) Aufwand: n+2 Schritt 3 1 Minimum suchen: n Operationen 2 Zu markierten Zeilen addieren: m Operationen 3 Von unmarkierten Spalten subtrahieren: n Operationen Aufwand: 2n + m Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand Aufwandsanalyse beide Schritte werden höchstens m-Mal wiederholt (bis alle Zeilen markiert sind) Aufwand: m ∗ (3n + m)) Danach Schritt 2 3 m ∗ 1 Operation (Spalte scannen) Suche 0: m ∗ 1 Operation (Zeile scannen) ∗ ∗ 0/0 in 0 /0 ändern: 2 ∗ m + 1 Operationen 4 alle Markierungen löschen: m Operationen 5 alle 0 6 jeweilige Spalte markieren: m+1 Operationen 1 2 ∗ Suche 0 : ∗ suchen: m+1 Operationen Aufwand: 7m + 3 aktuelle Entwicklung Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Aufwandsanalyse ∗ (m=1) Im Worst-Case Start mit einer 0 Obige Schritte müssen n- Mal ausgeführt werden: Gesamtaufwand Pn O( m=1 7m + 3 + m ∗ (3n + m)) = Pn m=1 m ∗ (3n + m)) O( = Pn O( O(3 n∗ m=1 m ∗ 3n + m Pn = m =1 m + = Pn 2) m=1 m 2) n3 ) O( Vergleiche und Addition als Operationen: Aufwand von O( n4 ) Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung aktuelle Entwicklung Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Vor Kuhn n ∗ n2 ) Erster Algorithmus 1946 von Eastereld in O(2 1950 drei Heuristiken von Thorndike seit 1952 als Assignmentproblem bekannt (Votaw und Orden) Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung nach Kuhn 1960 erster Computercode von Sylver Beste Implementation der ungarischen Methode O( n3 ) Lawler 1976 n3 ) erster O( Algorithmus von Dinic und Kronrod 1969 Auktionsalgorithmen O( n1/2 m ∗ log (nC ) ) von Orlin und Ahuja Cost Scaling Technik O( n1/2 m ∗ log (nC ) C: maximale Kosten, m: Anzahl Kanten ) von Gabow 1989 Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Transportproblem n Startknoten und m Zielknoten Startknoten liefern Einheiten an Zielknoten Jede Kante hat Kosten und Kapazität Finde minimale Kosten um alle Zielknoten zu beliefern Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Transportproblem Umwandlung von Assignmentproblem in Transportproblem bipartiter Digraph G=(V=X ∪Y,E) X: n Knoten für Personen Y: n Knoten für Jobs rij Kosten der Kante (i,j): c(i,j)=- Kapazität jeder Kante: u(i,j)=1 alle Knoten v w ∈ ∈ X senden 1 Einheit Fluÿ (d(v)=1), alle Knoten Y empfangen 1 Einheit Fluÿ (d(w)=-1) ∈ V gelten: (v ,w )∈E f (v , w ) = 0 Für einen Fluÿ f muÿ für jeden Knoten v d (v ) + P (u ,v )∈E f (u , v ) − P Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Cost Scaling Algorithmen Residualkantenmenge Ef = {(v , w ) : (v , w ) ∈ E {(v,w) : (w,v) ∈ mit f (v , w ) < u (v , w )} ∪ E} (c(v,w)=-c(w,v)) Preisfunktion p: V → R: cp (u , v ) = c (v , w ) + p (v ) − p (w ) Ein Fluÿ heiÿt ( - optimal wenn ∀(u , v ) ∈ Ef cp (u , v ) ≥ 0 cp (u , v ) ≥ − (u,v) (v,u) ∈ ∈ E E Wenn alle Kantenkosten ganzzahlig sind, ist ein mit < 1/N ein optimaler Fluÿ. - optimaler Fluÿ Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Cost Scaling Algorithmen Vor Start: p(v)=0 Solange = /a ≥ 1/n ∀ v, = max |c (ij )| tue: p(v)= -min(v ,w )∈E c(v,w) - p(w) ∀ v cp (v , w ) ≥ 0) ∈X ( f(v)=0 ∀ v Erzeuge zulässigen, - optimalen Fluÿ (durch push- und relabel Operationen) Wenn < 1/n ist der Fluÿ optimal und die Lösung gefunden Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Push/Relabel Push(v,w): Sendet Fluÿ von v nach w Relabel(v): Modiziert die Preisfunktion p(v) Laufzeit hängt von der Auswahl der Knoten v und w ab Beste Laufzeit O( n1/2 m ∗ log (nC ) ) Harold William Kuhn Das Assignmentproblem Ungarische Methode Aufwand aktuelle Entwicklung Quellen The Hungarian Method for the assignment problem (Kuhn [1955]) Algorithms for the Assignment and Transportation Problems (Munkres [1957]) ADM 2 Skript http://www.blackwell-synergy.com/ Assignment Problems, by Rainer Burkard, Mauro Dell'Amico, Silvano Martello An ecient cost scaling algorithm for the assignment problem Andrew v. Goldberg und Robert Kennedy 1995