Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS 06 16.5.

Ähnliche Präsentationen


Präsentation zum Thema: "Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS 06 16.5."—  Präsentation transkript:

1 Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS 06 16.5.

2 Ungerichtete Graphen Unser Ziel ist es, für ungerichtete Graphen paarweise Distanzen in Zeit O(n 2 polylog n) mit Verlustfaktor 3 zu approximieren Der Algorithmus benutzt daher nicht Matrixmultiplikation Dies macht den Algorithmus wesentlich praktikabler als Algorithmen, die Matrixmultiplikation benutzen Erst Approximation mit Verlustfaktor ¸ 2 und die Einschränkung auf ungerichtete Graphen machen dies möglich

3 Einige Grundlagen Wir betrachten Graphen G=(V,E) mit beliebigen nichtnegativen Gewichten Eine dominierende Menge für eine Menge V µ V ist eine Teilmenge D µ V, so dass alle Knoten in V mindestens einen Nachbarn in D haben Eine minimale dominierende Menge zu finden ist Np- schwierig. Folgendes aber geht: Theorem: Sei 1 · s · n. Wir können in Zeit O(m+n) eine Menge D bestimmen, die alle Knoten vom Grad mindestens s dominiert, und |D|=O(n log n/s). Der Algorithmus ist randomisiert.

4 Überblick Wir verwenden die Prozedur dominate(G,s), eine Prozedur dijkstra(G,M, s), welche die Distanzschätzungen in M von Knoten s aus mit Dijkstra verbessert, sowie eine Partitionsprozedur. Wir partitionieren den Graphen auf geeignete Weise und lassen dann für alle Knoten dijkstra laufen. Dies wird schneller als O(mn) sein.

5 Details Prozedur dominate(G,s) bestimme eine dominierende Menge D für Knoten mit Grad s, sowie eine Menge von Kanten E*, die für alle Knoten mit Grad s eine Kante zu einem Knoten in D enthält. dijkstra(G,M,s) berechnet alle Distanzen in G mit Gewichten M und Startknoten s, Ausgabe in M

6 Die Partitionierungsprozedur Wir nehmen an, dass der Graph als Adjazenzliste vorliegt und die Nachbarn eines Knoten v sortiert sind nach Gewicht (dies kann in Zeit O(n 2 +m log n) erreicht werden). Wir betrachten den Graph momentan als gerichtet, d.h. Kanten {u,v} werden ersetzt durch gerichtete Kanten (u,v) und (v,u) ind(e) für e=(u,v) sei die Position von Kante e in us Adjazenzliste.

7 Die Partitionierungsprozedur Eingabe Graph G,W, Folge s 1 >…>s k-1 (k ist ein Parameter) Ausgaben E 1,…,E k, E*, D 1,…,D k 1. Für i=2 bis k setze E i ={e 2 E: ind(e) · s i-1 } Bemerkung: wenn ein Knoten v einen Grad kleiner als s i-1 hat, werden alle Kanten gewählt 2. Für i=1 bis k-1 setze (D i,E i *)=dominate(V,E i+1,s i ) 3. E 1 =E,D k =V,E*= [ E i * Bemerkung: |E*| · kn

8 Eine 2-Approximation Wir sehen zuerst einen Algorithmus mit Verlustfaktor 2 Laufzeit: O(n 3/2 m 1/2 polylog n) Dies ist also immer O(n 2.5 polylog n) Damit langsamer als Matrixmultiplikation, aber dieser Algorithmus ist praktikabel

9 Algorithmus stretch2 Eingaben: Graph G, Gewichte W Ausgabe: Matrix M von geschätzten Distanzen, mit (u,v) · M(u,v) · 2 (u,v) 1. (E 1,E 2,E*,D 1,D 2 )=partition(G,W,(m/n) 1/2 ) 2. Für alle u,v setze M(u,v)=W(u,v) 3. Wiederhole zweimal (Runde 1,2): a) Für jedes u aus D 1 : dijkstra(V,E 1 [ ({u} £ V),M,u) b) Für jedes u aus D 2 : dijkstra(V,E 2 [ ({u} £ V),M,u)

10 Laufzeit Schritt 1 in Zeit O(n 2 +m log n) Schritt 2 O(n 2 ) Schritt 3: |D 1 |= |D 2 |= E 1 =E; |E 2 | · E.h. Wir benutzen dijkstra mal in Graphen mit O(m) Kanten und n mal in Graphen mit Insgesamt:

11 Zur Korrektheit Wir müssen zeigen, dass die Ausgaben grösser gleich den Distanzen sind, aber nicht mehr als einen Faktor 2 danebenliegen M(u,v) ¸ (u,v) nach Ende des Algo: Zu Beginn wird M=W initialisiert und die Behauptung gilt Dann werden die dijkstra Läufe durchgeführt Diese werden auf Teilgraphen von Startknoten u durchgeführt, die um Kanten (u,v) für alle v aus V erweitert sind, welche aber mit M(u,v) als Gewicht belegt sind, also einer Schätzung, die (per Induktion) immer ¸ (u,v) ist Dijkstra wird niemals zu kleine Schätzungen berechnen.

12 Zur Korrektheit M(u,v) · 2 (u,v) nach Ende des Algo: M i (u,v) sei Distanzschätzung nach dem dijkstra Lauf auf D i in Runde 1 von Schritt3 Analog M i für Runde 2 Klar: M 2 (u,v) · M 1 (u,v) · M 2 (u,v) · M 1 (u,v) M 2 (u,v) ist die Ausgabe Wir unterscheiden 3 Fälle, in zwei Fällen werden kürzeste Wege berechnet, in Fall 3 eine 2-Approximation

13 Korrektheit p sei ein kürzester Pfad von u nach v p x,y ein Pfadsegment von x nach y Fall 1: Alle Kanten von p liegen in E 2 Fall 2: Nur eine Kante von p liegt nicht in E 2 Fall 3: mindestens 2 Kanten von p liegen nicht in E 2 Fall 1: der Graph, in dem wir Dijkstra von u aus laufen lassen in Schritt 3)b, Runde 1, enthält alle Kanten von p, wir finden also den kürzesten Pfad

14 Korrektheit Fall 2: p enthält genau eine Kante, welche nicht in E 2 liegt Sei e=(u,v) diese Kante Alle Kanten von p liegen in (V,E 2 [ {v} £ V) Erste Runde Schritt 3)b führt dijktra von v aus Daher gilt M 2 (u,v)=M 2 (v,u)= (u,v) Der Graph V,E 2 [ {u} £ V enthält eine Kante (u,v) mit Gewicht (u,v) und alle Kanten des Weges p v,v Daher ist M 2 (u,v) korrekt

15 Korrektheit Fall 3: p enthält mindestens 2 Kanten, die nicht in E 2 liegen Sei e 1 =(u 1,v 1 ) die erste Kante in p, die nicht in E 2 liegt Sei e 2 =(u 2,v 2 ) die letzte Kante in p, die nicht in E 2 liegt e 1 e 2 O.B.d.A. sei W(e 2 ) · W(e 1 ), daher auch W(e 2 ) · (u,v)/2 ind v2 (e 2 )>(m/n) 1/2, denn e 2 nicht in E 2 Grad von v 2 daher mindestens (m/n) 1/2 v 2 hat somit einen Nachbarn w in D 1 und e=(v 2,w) 2 E 2 und ind(e) · (m/n) 1/2 Damit gilt aber W(e) · W(e 2 )

16 Korrektheit Erste Runde, Schritt 3)a läuft von w 2 D 1 aus mit allen Kanten, also M 1 (u,w)=M 1 (w,u) · (u,v 2 )+W(e) · (u,v 2 )+W(e 2 ) Erste Runde Schritt 3)b von u aus läuft mit Kanten E 2 [ {u} £ V, darunter e 2 E 2, daher M 2 (u,v) · M 1 (u,w)+W(e)+ (v 2,v) · (u,v)+2W(e) · (u,v)+2W(e 2 ) · 2 (u,v)

17 Zusammenfassung In Fall 1 und 2 werden kürzeste Wege gefunden In Fall 3 verdoppelt sich die Weglänge eventuell Stärkeres Resultat: Sei p ein kürzester Weg von u nach v und W(e 2 ) das Gewicht der zweitschwersten Kante in p, dann gilt M(u,v) · (u,v)+2W(e 2 ) Tatsächlich gilt dies sogar für jeden Pfad u,v Insbesondere erhalten wir in ungewichteten Graphen eine Approximation mit additivem Fehler 2 Sehr lange Wege (Verlustfaktor 2) werden nur dann erzeugt, wenn das meiste Gewicht des kürzesten Weges in genau 2 Kanten konzentriert ist.

18 Bemerkung Es gibt einen Algorithmus, der mit Verlustfaktor 7/3 in Zeit n 7/3 polylog n läuft.


Herunterladen ppt "Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS 06 16.5."

Ähnliche Präsentationen


Google-Anzeigen