Online Algorithmen • Eigenschaften von Online Algorithmen • Unvollständige (Vorab-)Information • Sequentielle Anfragen • Abarbeitung der aktuellen Anfragen ohne Information über zukünftige Anfragen Wiederholung • Beispiele: Paging, Bin-Packing, Kürzeste Wege • Definition: Ein Online Algorithmus ist eine Funktion A : I ∗ → O, die jeder Anfrage bzw. Anfragesequenz Σ ∈ I n auf der Basis bekannter Informationen eine Antwort bzw. Antwortsequenz Ω aus O n+1 zuordnet. Die Kostenfunktion c ordnet dem Paar (Σ, Ω) Kosten zu, die die Güte der Lösung A(Σ) für das gegebene Online Problem P (I, O, c) bestimmen. 1 / 23 Online Algorithmen — Kompetitivität 2 Online Kürzeste Wege Probleme • Kompetitivität( [engl.] to compete = wettstreiten ) • Idee Vergleiche die Kosten der Lösung A(Σ) mit den Kosten der optimalen Lösung OPT (Σ) : c(Σ, A(Σ)) c(Σ, OPT (Σ)) • Allgemeines Canadian Traveller Problem Gegeben: Graph G = (V , E ), Startknoten s, Zielknoten t , Kostenfunktion c Beliebig viele Kanten können beliebig lange blockiert sein. Gesucht: Reisestrategie, die an Knoten v aufgrund der aktuell bekannten Blockaden möglichst günstigen nächsten Knoten ausgibt ! • Offline Lösung: (OPT (P ) = OPT (P 0 ) — Optimale Lösung entspricht Offline Lösung.) • Bestimme Worst Case Ratio maxΣ∈I n { c(Σ, A(Σ)) } c(Σ, OPT (Σ)) • Blockierte Kanten aus G löschen (G → G 0 ) • Dijkstra’s Algorithmus auf G 0 • Optimale, eindeutige Lösung • Ein Online Algorithmus A ist k-kompetitiv, wenn gilt: ∀Σ ∈ I n c(Σ, A(Σ)) ≤ k ∗ c(Σ, OPT (Σ)) + a • Keine günstige Online Lösung ! (→ Zusatzannahmen) 3 / 23 4 Recoverable CTP Stochastisches Recoverable CTP (srCTP) • Recoverable Canadian Traveller Problem • Zusätzliche Information : Stauprognosen für bestimmte Gegeben: Graph G = (V , E ), Startknoten s, Zielknoten t , Kostenfunktion c, Recoverfunktion tr Beliebig viele Kanten e ∈ E können für tr (e) blockiert sein. Gesucht: Reisestrategie, die an Knoten v aufgrund der aktuell bekannten Blockaden möglichst günstigen nächsten Knoten ausgibt ! • Bedingungen an tr : Strassen • Stochastisches Recoverable Canadian Traveller Problem Gegeben: Graph G = (V , E ), Startknoten s, Zielknoten t , Kostenfunktion c, Recoverfunktion tr , Blockadewahrscheinlickeit p Beliebig viele Kanten e ∈ E können mit Wahrscheinlichkeit p(e) für t r (e) blockiert sein. Gesucht: Reisestrategie, die an Knoten v aufgrund der aktuell bekannten Blockaden möglichst günstigen nächsten Knoten ausgibt ! • Lösungsidee: Dijkstra-ähnlicher Algorithmus mit neuer Kostenfunktion und mehreren alternativen Kanten an jedem Knoten v . • Neue Kostenfunktion Erwartete Reisezeit E (v , t ) von Knoten v nach Zielknoten t • tr (e) ≤ c(e 0 ), für alle Kantenpaare (e, e 0 ) → Bereist man eine Kante, so sind alle zuvor festgestellten Blockaden behoben, es sei denn, sie wurden erneut blockiert. • tr (v ) ≥ tr (e 0 ), für alle adjazenten Kanten → Wartet man an einem Knoten tr (v ), so sind anschliessend alle Kanten wieder frei, es sei denn, sie wurden erneut blockiert. • Immernoch keine günstige Online Lösung 5 / 23 srCTP — Algorithmus, Idee 6 srCTP — Prioritätslisten • Prioritätslisten PL(v ) verwalten die adjazenten Kanten zu v geordnet nach Erwartete Reisezeit E (v , t ) • Beginne bei Zielknoten t mit E (t , t ) = 0, PL(t ) = ∅ • PL(v ) sind vorläufig, solange v nicht bearbeitet wurde • PL(v ) gibt die Strategie an mit der ein Reisender von v • Setze für v 6= t ∈ V E (v , t ) = ∞, PL(t ) = ∅ • Suche u ∈ V mit minimaler E (u, t ) • Füge jede Kante (u, ui ) in PL(ui ) ein • Sortiere PL(ui ) nach c(u, ui ) + E (u) • Bestimme minimales E (ui , t ) aus neuer PL(ui ) ausgehend den günstigsten Weg zu t bestimmt: • Wähle 1. Kante in PL(v ), falls blockiert 2. Kante . . . • PL(v ) verwaltet gleichzeitig einen Index i , so so dass die i −te Kante der Schleife (v , v ) entspricht. • Wird (v , v ) gewählt, so wartete der Reisende an v . • Index i erziehlt die minimale E (v , t ). 7 / 23 8 srCTP — Minimale erwartete Reisezeit E (v , t ) srCTP-Algorithmus nach Bar-Noy und Schieber (1) setze • Erwartete Reisezeit: Eh (x , t ) = αh +Ph w (x ,xh ) 1−Ph • mit: • p(x , yi ) : Blockadewahrscheinlichkeit der zu x adjazenten Kante (x , yi ) • qi = 1 − pi : Wahrscheinlichkeit, dass Kante (x , yi ) nicht blockiert ist Q i • P0 = 1, Pi = j =1 pj : Wahrscheinlichkeit, dass alle zu x adjazenten Kanten (x , y1 ) bis (x , yi ) blockiert sind P • αi = j =1 Pj −1 qj ((w (x , xj ) + E (xj ), t ): Summe aller erwarteten Reisezeiten „für alle Fälle“ — 1. Kante ist blockiert, 1. und 2.Kante ist blockiert, . . . (2) (3) (4) (5) • Finde Kantenindex h aus PL(x ) so dass E h (x , t ) minimal unter allen Präfixen von PL(x ). (6) E (t , t ) := 0 PL(t ) := newPrior (t ) E (v , t ) := newETT (s, v ) für (s, v ) ∈ E E (v , t ) := ∞ für (s, v ) ∈ /E PL(v ) := ∅ M = {s} bestimme u ∈ / M mit E (u, t ) = min{E (v , t ) : v ∈ / M} setze M = M ∪ {u} für alle v ∈ V mit (u, v ) ∈ E falls E (v , t ) > newETT(u, v ) setze E (v , t ) = newETT(u, v ) PL(v ) := newPrior (u, v ) falls M 6= V , gehe zu (2) 9 / 23 srCTP-Algorithmus - Tipp 10 srCTP-Algorithmus — Laufzeit(1) • (2) : Bestimmung des „minimalen“ Knoten u ∈ /M • Wann sollte ein Reisender lieber an Knoten v t r (v ) Implementierung mit FHeaps ⇒ O(logn) abwarten ? • (2), . . . , (6) wird genau n = kV k mal durchlaufen • Die Option Abwarten muss in die Prioritätsliste PL(v ) n mal Minimumbestimmung ⇒ O(nlogn) eingehen. • (4), (5) : Aktualisierung von E (v , t ) und Prior (v ) • Einfache Lösung: Trick und Lemma ⇒ O(logn) → nächste Folie ! Vor Beginn des Algorithmus an jedem Knoten eine „Schleife“ einbauen, d.h. • (4), (5) wird insgesamt 2m = 2kE k mal durchlaufen • eine Kante e = (v , v ), v ∈ V mit • t (e) = tr (v ) zu G hinzufügen. m mal Aktualisierung ⇒ O(mlogn) • Da i.A. m > n ⇒ Laufzeit: O(mlogn) 11 / 23 12 srCTP-Algorithmus — Laufzeit(2) srCTP-Algorithmus — Korrektheit, Güte • Aktualisierungsschritt in O(logn): • Aktualisierung von Prior (v ) entspricht Einfügen in sortierte Liste mit maximaler Länge n − 1 ∈ O(n), da ein Knoten maximal zu allen übrigen der n Knoten adjazent sein kann. ⇒ O(logn) durch binäre Suche nach Einfügestelle • Aktualisierung von E (v , t ) entspricht Suche eines Minimums in n − 1 ∈ O(n) Werten. Bar-Noy und Schieber zeigen: • Der srCTP-Algorithmus berechnet für jeden Knoten die minimal erwartete Reisezeit (Beweis unter Berücksichtigung der Lemmata von Bar-Noy und Schieber) wie Dijkstras Algorithmus für Distanz-Berechnung. • Falls E (v , t ) = Eh (v , t ), also Kantenindex h die minimale erwartete Reisezeit bestimmt, so gilt für h als ersten Index: • Der srCTP-Algorithmus ist bezüglich der erwarteten Reisezeit optimal. αh + w (x , x ) < w (x , xh+1 ) 1 − Ph • Der srCTP-Algorithmus ist bezüglich der Distanz nicht kompetitiv. • Dies gilt (mit entprechenden Indizes) ebenfalls für alle größeren Kantenindizes in der sortierten Prioritätsliste. • ⇒ O(logn) für die Bestimmung des minimalen Index, der obige Ungleichung erfüllt (mit binärer Suche) ! • Der gesamte Aktualisierungsschritt benötigt Zeit O(logn) ! 13 / 23 Deterministisches Recoverable k-CTP (drCTP) 14 Deterministisches Recoverable k-CTP (drCTP) • Deterministisches Recoverable k-Canadian Traveller Problem Gegeben: Graph G = (V , E ), Startknoten s, Zielknoten t , Kostenfunktion c, Recoverfunktion tr , Anzahl der Blockaden k Maximal k Kanten e ∈ E können für t r (e) blockiert sein. Gesucht: Reisestrategie, die an Knoten v aufgrund der aktuell bekannten und früheren Blockaden möglichst günstigen nächsten Knoten ausgibt ! • Lösungsidee: • Zusätzliche Information : Anzahl der Blockaden (z.B. Anzahl bekannter Baustellen) • A1 : Baustelle • A3 : Keine Baustelle • A4 : Baustelle • Damit : Maximale Anzahl k (Beispiel k=2) von Blockaden gegeben • Wieder alternative Routen berechnen, diesmal abhängig von bereits blockiert aufgefundenen Kanten (Blockaden-Rest-Risiko :-) • Achtung Baustellen-Beispiel dient nur der Anschauung, wo die k möglichen Blockaden auftauchen ist völlig unbekannt !!! • k (+1) Reisestrategien Si für 0 ≤ 1 ≤ k bereits blockierte Kanten berechnen. • Kantenblockaden b zählen • Die noch möglichen Blockaden i = k − b geben Strategie Si an • Dabei ist Sk (k Kanten bereits blockiert → 0 weitere 15 / 23 Blockaden möglich) durch Dijkstra’s Algorithmus gegeben. 16 k Reisestrategien k Reisestrategien — Sicht des Reisenden • Eine Reisestrategie besteht aus n = kV k Listen von Reisender erreicht Knoten v . alternativen Kanten AE (v ) für jeden Knoten v ∈ V . • Fall 1: Es wurden bereits b Kanten blockiert, bevor v • Für eine Reisestrategie Si , die i weitere mögliche erreicht wurde → Strategie Si , i = k − b wird benutzt. Blockaden berücksichtigt gilt für alle v ∈ V kAEi (v )k = i + 1. • Fall 2: Es wurden noch keine Kanten blockiert • Besitzt Knoten v nur j < i + 1 adjazente Kanten, so wird → Strategie Sk wird benutzt. • Benutzung einer Strategie Sj an Knoten v : AEi (v ) mit der Kante (v , v ) „aufgefüllt “. • Da (v , v ) nicht blockiert sein kann, steht dem Reisenden immer die Option „Abwarten an v “zur Verfügung. • Falls keine adjazenten Kanten blockiert sind, • AEi (v ) sind vergleichbar PL(v ) sind aber anders zu • Sonst, falls b adjazente Kanten blockiert sind, benutze besondere Kante aus AEj (v ) (Primärkante) berechnen. benutze b−te alternative Kante aus AEj (v ) 17 / 23 k Reisestrategien — Berechnung, Konzept 18 k Reisestrategien — Berechnung • Berechnung von Sj , 0 < j ≤ k beruht auf S(j −1) ! • Lemma nach Bar-Noy und Schieber: • Berechnung von Sj , 0 < j ≤ k beruht auf Si , 0 < i < j ! • iterativ • Berechne Strategie S0 mit Dijkstra • Berechne Strategie S1 mittels S0 . . . • rekursiv • Berechne Sk aufgrund von S(k −1) • Berechne S(k −1) mittels S(k −2) . . . Die a−te alternative Kante aus AE j (v ) der Strategie Sj entspricht der a−ten Kante aus AE (j −1) (v ) für S(j −1) ! • D.h. alle AEj (v ), 0 < j ≤ k stimmen überein, AE j (v ) hat jeweils lediglich eine Kante mehr als AE (j −1)(v ) • Dennoch müssen alle Strategien nacheinander iterativ berechnet werden ! • Warum ? • Da wir zunächst von k möglichen Blockaden ausgehen • Die Ordnung der „restlichen“ adjazenten Kanten von v als müssen und daher ohnehin jede Strategie S 0 , . . . , Sk berechnen, können wir iterativ vorgehen alternativen Kanten AEj (v ) für Sj muss durch die komplette Liste AE(j −1)(v ) für S(j − 1) bestimmt werden! 19 / 23 20 Alternative Kanten — Berechnung Dijkstra-Analogie • Die Kanten (v , vi ) aus AEj (v ) sind sortiert nach: c(v , vi ) + dist (j , vi ) • Die k Reisestategien für das drCTP bestehen aus: • k Listen AEj (v ) der alternativen Kanten an v • k Primärkanten Pj = (v , vi )j an v • Beide können in einem Dijkstra ähnlichen Algorithmus für • Dabei ist dist (j , vi ) die worst case Distanz zwischen vi und t in Strategie Sj • dist (j , v ) wird in jeder Strategie S j bestimmt als: −1 {c(v , xi )+dist (j −i , xi )}∪{c(v , vi )+dist (j , vi )}} min(v ,vi )∈E {maxij=1 • D.h. die nächste alternative Kante der j −ten Strategie wird jede Strategie Sj bestimmt werden: • Initial: ∀v 6= t ∈ V : dist (j , v ) = ∞, dist (j , t ) = 0 • In jedem Schritt Knoten u mit minimaler dist (j , u) wählen und alle adjazenten Knoten auf Verbesserung der vorläufigen Distanz und Bestimmung einer neuen Primärkante überprüfen. so ausgewählt, dass die Distanz dist (j , v ), also die Distanz zwischen v und t im Falle dass an Knoten v j Blockaden auftreten möglichst klein ist, obwohl die Blockaden maximal ungünstig sind (worst case). • Die Kante, die zur minimalen worst case Distanz dist (j , v ) führt, wird zur Primärkante für v in Strategie S j 21 / 23 drCTP-Algorithmus nach Bar-Noy und Schieber Algorithmus zur Ermittlung der j −ten Strategie (1) setze dist (j , v ) := ∞ dist (j , t ) := 0 M = {t } (2) bestimme u ∈ / M mit dist (j , u) = min{dist (j , u) : u ∈ / M} (3) setze M = M ∪ {u} (4) für alle v ∈ V mit (u, v ) ∈ E −1 (5) falls dist 0 (j , v ) = max {{maxij=1 {c(v , xi ) + dist (j − i , xi )} ∪ {c(v , u) + dist (j , u)}} < dist (j , v ) setze dist (j , v ) = dist 0 (j , v ) Pj (v ) := (u, v ) (6) falls M 6= V , gehe zu (2) 23 / 23 22