Übersicht Programmierpraktikum • Online Algorithmen • Definition • Güte • Online Kürzeste Wege Probleme • (Recoverable) Canadian Traveller Problem (CTP) • Stochastisches Recoverable CTP • Deterministisches Recoverable k-CTP Das Canadian Traveller Problem Rainer Schrader Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln 28. April 2006 1 / 32 2 Online Algorithmen • Was sind Online Algorithmen ? • Eigenschaften • Unvollständige (Vorab-)Information • Sequentielle Anfragen • Abarbeitung der aktuellen Anfragen ohne Information über zukünftige Anfragen • Beispiele • Paging (Caching)1 • Bin-Packing (Rucksack oder Knappsack-Problem)2 • Kürzeste Wege2 Online Algorithmen 1 2 3 / 32 Generisches Online-Problem Online-Varianten von Offline-Problemen 4 Paging Bin-Packing • Vorabinformation : • Cache-Größe • Cache-Zustand • Sequentielle Anfragen : • benutzerabhängige Seitenaufrufe • Abarbeitung : Verdrängungsstrategien • First in Last Out • Least Recently Used • ... • Vorabinformation : • Größe der Bins (Eimer) • Tragfähigkeit der Bins • Sequentielle Anfragen : • Ankunft neuer Pakete • Abarbeitung : Verteilungsstrategien • First Fit • Best Fit • ... 5 / 32 Spezielle Online Kürzeste Wege Probleme 6 Online Algorithmen — Definitionen • Vorabinformation : Graph (Karte) • Sequentielle Anfragen : Start-/ Ziel-Änderung, Blockaden • Gegeben: • Inputmenge I (Menge aller möglichen Anfrage) • Outputmenge O (Menge aller möglichen Antworten) • Kostenfunktion c : I n xO n+1 → R • Eine Anfragesequenz Σ = σ1 , ..., σn ∈ I n besteht aus n (Staus, Umleitungen) Elementen der Input- oder Anfragemenge. Dabei kann n zeitlich interpretiert werden, d.h. zum Zeitpunkt t n gilt: • Anfrage σi , i < n ist beantwortet. • Anfrage σn soll beantwortet werden. • Anfrage σj , j > n ist unbekannt ! • Das Kürzeste Wege Problem mit unvollständiger • Allgemein können Anfragen auch als eintreffende Information über Blockaden etc. wird als Canadian Traveller Problem (CTP) bezeichnet. Wir betrachten später 2 Varianten des allgemeinen CTP: Informationen betrachtet werden ( Anfrage = neue Information 6= neue Aufgabenstellung ). • stochastisches recoverable CTP • determistisches recoverable k-CTP 7 / 32 8 Online Algorithmen — Definitionen Online versus Offline Problem • Ein Online Problem P (I, O, c) ist ein Optimierungsproblem, • Zu jedem Online Problem P (I, O, c) gibt es ein d.h. zu einer Anfragesequenz Σ ∈ I n wird eine bezüglich c möglichst kostengünstige Antwortsequenz Ω (analog zur Anfragesequenz) aus O n+1 gesucht, wobei die Antwort on ∈ O nur die zum Zeitpunkt tn bekannten Informationen berücksichtigen darf. entsprechendes Offline Problem P 0 (I, O, c) (Orakel, das die vollständige Anfragesequenz im voraus kennt) • Ein Offline (Optimierungs-)Problem hat (fast) immer eine optimale Lösung (auch falls diese nicht effizient zu berechnen ist). • Ein Online Algorithmus ist eine Funktion A : I ∗ → O, die • Ein Online Algorithmus A zur Lösung von P (I, O, c) liefert 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 für das Online Problem P (I, O, c) bestimmen. meist nicht die optimale Lösung für P 0 (I, O, c). • Wie ist die Güte von A (Güte der Lösung, die A für P (I, O, c) liefert) zu bestimmen ? • Achtung ! Effizienz (Laufzeit) 6= Güte (Kosten bzgl. c) 9 / 32 Online Algorithmen — Gütekriterium 10 Online Algorithmen — Kompetitivität (1) • Wie bestimmt man die Güte eines Online Algorithmus A zur Lösung von P (I, O, c)? • Worst Case : • Güte von A hängt von der ungünstigsten Anfragesequenz Σwc ab, die die höchsten Kosten maxΣ∈I n {c(Σ, A(Σ)} verursacht. • Selbst die optimale Antwortsequenz für Σwc kann teuer sein. ⇒ Unfair ! • Best Case : • Güte von A hängt von der günstigsten Anfragesequenz Σbc ab, die die geringsten Kosten verursacht. ⇒ Unrealistisch ! • Avarage Case : • Güte von A hängt von den Kosten der durchschnittlichen Anfragesequenz Σac ab. • Bestimmung von Σac ? Zufall ? Statistik ? • Neues Gütemaß für Online Algorithmen : Kompetitivität. • ( [engl.] to compete = wettstreiten ) • Ziel: Vergleiche die Kosten der Lösung A(Σ) mit den Kosten der optimalen Lösung OPT (Σ) : c(Σ, A(Σ)) c(Σ, OPT (Σ)) • Meist nimm man an : OPT (P ) = OPT (P 0 ), die optimale Lösung entspricht der offline Lösung 11 / 32 12 Online Algorithmen — Kompetitivität (2) Online Algorithmen — Kompetitivitätsfaktor • Problem: Die Lösungen welcher Anfragesequenzen • Ein Online Algorithmus A ist k-kompetitiv, wenn gilt: werden verglichen ? • Möglich (wieder): ∀Σ ∈ I n c(Σ, A(Σ)) ≤ k ∗ c(Σ, OPT (Σ)) + a • Worst Case Ratio • Best Case Ratio • Avarage Case Ratio • Vereinfacht erhalten wir mit • Meist (und hier!) : Worst Case Ratio maxΣ∈I n { k = maxΣ∈I n { c(Σ, A(Σ)) } c(Σ, OPT (Σ)) c(Σ, A(Σ)) } c(Σ, OPT (Σ)) den Kompetitivitätsfaktor des Algorithmus A. 13 / 32 14 Online Algorithmen — Böse Gegenspieler Online Kürzeste Wege Probleme am Beispiel des Canadian Traveller Problem (CTP) • Bestimmung des Kompetitivitätsfaktors von A ⇒ Verwandlung in Bösen Gegenspieler • Nutze Online Eigenschaft von A • Präsentiere immer ungünstigste neue Information/Anfrage • Beispiel Paging • A verdrängte als letztes Page p aus dem Cache • Präsentiere p als nächste Anfrage • usw. 15 / 32 16 Canadian Traveller Problem (CTP) Canadian Traveller Problem (CTP) • Algorithmus A 0 für Offline Problem (simpel) • Streiche blockierte Kanten aus E ⇒ Graph G 0 (V , E 0 ) • Benutze Dijkstra um πs,t auf G’ zu finden • Algorithmus A für Online Problem : • Tatsächliche Blockaden sind sowieso unbekannt. • Berechne kürzesten Weg πs,t mit Dijkstra wie vorher ? • Böser Gegenspieler blockiert Kanten auf π s,t , so dass z.B. • Gegeben: • Graph G(V , E ) • Gewichts-/Kostenfunktion w : E → < • Kantenblockaden • Start-/Zielknoten s, t ... • ...maximaler Umweg nötig • ...kein Weg von s nach t mehr existiert • Lösung kann beliebig schlecht werden :-( • Gesucht: Kürzester (bezgl. w günstigster) Weg πs,t von s nach t 17 / 32 18 Canadian Traveller Problem (CTP) Recoverable CTP • Problemstellung wie CTP • Kanten verschwinden durch Blockaden nicht völlig • Online Algorithmus A für CTP kann nicht günstig • Nach Wartezeit ist die Blockade der Kante behoben • Formal : • Jede Kante e ∈ E besitzt eine recover time tr (e), so dass gilt : tr (e) ≤ w (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. • Jeder Knoten v ∈ V besitzt eine recover time tr (v ), so dass gilt : 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. (kompetitiv) sein. • Aber: Böser Gegenspieler hat unrealistische Freiheiten : • Kanten (Strassen !) verschwinden einfach völlig • Wahllose Blockaden • Beliebig viele Blockaden • Einschränkung der Freiheiten ⇒ 2 Problemvarianten : • Grundlegend : Recoverable (Behebbares) CTP • Stochastisches Recoverable CTP • Deterministisches Recoverable k-CTP • Hier werden die Kantengewichte als Reisezeit betrachtet und nicht als Entfernung. Damit addiert sich eine Wartezeit an einem Knoten einfach zu den Kosten des Weges. 19 / 32 20 Stochastisches behebbares CTP — Motivation Stochastisches behebbares CTP — Problem • Problemstellung wie behebbares CTP • Kanten verschwinden nicht wahllos • Jede Kante wird mit gewisser Wahrscheinlichkeit blockiert • Formal: Jeder Kante e ∈ E wird durch die Funktion • Zusätzliche Information : Stauprognosen für bestimmte pb : E → < Strassen • • • • 08:00 Uhr : A1 - Stauwahrscheinlichkeit 0,9 10:00 Uhr : A1 - Stauwahrscheinlichkeit 0,3 17:00 Uhr : A1 - Stauwahrscheinlichkeit 0,9 23:00 Uhr : A1 - Stauwahrscheinlichkeit 0,1 • Nicht nur Weglänge/-zeit kπs,t k = eine Blockadewahrscheinlichkeit p b (e) zugewiesen. • Lösungsidee: Dijkstra-ähnlicher Algorithmus mit neuer Kostenfunktion und mehreren alternativen Kanten an jedem Knoten x . P e ∈ pis,t w (e) minimieren, sondern auch Blockadewahrscheinlichkeit entlang des Weges berücksichtigen ! • Neue Kostenfunktion Erwartete Reisezeit E (x , t ) von Knoten x nach Zielknoten t 21 / 32 22 srCTP-Algo Idee (1) Prioritätslisten • Sortiere die k adjazenten Knoten yi von x aufsteigend nach • Online Betrachtung: • Reisender erreicht Knoten x • Welche Kante soll nun bereist werden ? w (x , yi ) + E (yi , t ) • Bestimme erwartete Reisezeit: Qi • Sei pi = pb (x , yi ), qi = 1 − pi , P0 = 1, Pi = j =1 pj • Verwalte sortierte Liste von günstigen alternativen Kanten • (Prioritätsliste) • Versuche günstigste (erste) Kante zu bereisen αi = X Pj −1 qj ((w (x , xj ) + E (xj )) j =1 • Kante ist frei → Reisender erreicht nächsten Knoten • Kante ist blockiert → Versuche nächste günstige Kante zu • Finde Kantenindex h, so dass erwartete Reisezeit: bereisen Eh (x , t ) = • Falls keine günstigen Kanten mehr vorhanden, warte t r (x ) und beginne wieder mit der günstigsten Kante. αh + Ph w (x , xh ) 1 − Ph minimal ist , d.h. bestimme, wie viele Kanten aus der sortierten Liste adjazenter Knoten als günstige Alternativen in einer sogenannten Prioritätsliste PL(x ) verwaltet werden sollen. 23 / 32 24 Erwartete Reisezeit ( Expected Travel Time, ETT) srCTP-Algo Idee(2) • Analogie zu Dijkstra : • Zu Beginn ist nur E (t , t ) = 0 bekannt. • Alle anderen Knoten x haben initial E (x , t ) = ∞ • An Knoten x kann sich E (x , t ) ändern, sobald eine adjazente Kante e betrachtet wird • Änderung der (vorläufigen) Prioritätsliste PL(x ): • Füge e in PL(x ) sortiert ein • Berechne neue erwartete Reisezeit E 0 (x , t ) • Falls E 0 (x , t ) < E (x , t ) setze E (x , t ) = E 0 (x , t ) Hierbei werden u.U. mehr oder weniger alternative Kanten in PL(x ) berücksichtigt ! • Berechnung der neuen erwarteten Reisezeit E 0 (x ) • Bestimme neuen Kantenindex h’, der die minimale erwartete Reisezeit für die neue Prioritätsliste ergibt. • Formel-Erläuterungen • pi = pb (x , yi ) : Blockadewahrscheinlichkeit der zu Knoten x adjazenten Kante (x , yi ) • qi = 1 − pi : Wahrscheinlichkeit, dass Kante (x , yi ) nicht blockiert ist • P0 = 1, Pi = Qi : Wahrscheinlichkeit, dass alle zu x adjazenten Kanten in sortierter Reihenfolge (x , y 1 ) bis (x , yi ) blockiert sind P • αi = j =1 Pj −1 qj ((w (x , xj ) + E (xj , t )) : αi entspricht einer Bewertung der entstehenden Kosten bei Auswahl der nächsten Kante unter Berücksichtigung der Blockadewahrscheinlichkeit für diese Kante und aller Kanten, die zuvor an x blockiert vorgefunden wurden. j =1 pj 25 / 32 26 srCTP-Algorithmus nach Bar-Noy und Schieber srCTP-Algorithmus - Tipp (1) setze (2) (3) (4) (5) (6) E (t , t ) := 0 PL(v ) := newPrior (s, v ) 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) • Wann sollte ein Reisender lieber an Knoten v t r (v ) abwarten ? • Die Option Abwarten muss in die Prioritätsliste PL(v ) eingehen. • Einfache Lösung: Vor Beginn des Algorithmus an jedem Knoten eine „Schleife“ einbauen, d.h. • eine Kante e = (v , v ), v ∈ V mit • t (e) = tr (v ) zu G hinzufügen. 27 / 32 28