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

Slides:



Advertisements
Ähnliche Präsentationen
Christian Scheideler SS 2009
Advertisements

Grundlagen des A*-Algorithmus und Anwendung in der Routenplanung
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Minimum Spanning Tree: MST
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 1 SS 2001 Algorithmus von Dijkstra.
Effiziente Algorithmen
Effiziente Algorithmen
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Effiziente Algorithmen
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Effiziente Algorithmen
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/ /23.1.
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation
Information und Kommunikation
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Hartmut Klauck Universität Frankfurt WS 06/
Hartmut Klauck Universität Frankfurt WS 06/
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Analyse der Laufzeit von Algorithmen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Suche des kürzesten Weges in einem Netz.
Gliederung der Vorlesung
 Präsentation transkript:

Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS

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

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.

Ü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.

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

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.

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

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

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)

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:

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.

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

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

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

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 )

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)

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.

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