Online Algorithmen Online Algorithmen — Kompetitivität Online

Werbung
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
Herunterladen