Effiziente Algorithmen

Slides:



Advertisements
Ähnliche Präsentationen
Vortrag von Stephanie Weirauch Jens Pleger Peter Jancke Frank Wejmelka
Advertisements

Algorithmen für das Erfüllbarkeitsproblem SAT
Christian Scheideler SS 2009
Berechne den optimalen (kürzesten, schnellsten) Weg
Single-Source Shortest Paths: SSSP
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken X Christian Schindelhauer
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
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
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Vortrag über Graphen Von Jörg Hendricks.
Christian Scheideler Institut für Informatik Universität Paderborn
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
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
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 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
Effiziente 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
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
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
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/
Information und Kommunikation
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation
Information und Kommunikation
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation
Verteilte Algorithmen und Datenstrukturen Kapitel 4: Caching Christian Scheideler Institut für Informatik Universität Paderborn.
Christian Scheideler Institut für Informatik Universität Paderborn
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Algorithmen für das Erfüllbarkeitsproblem SAT
Analyse der Laufzeit von Algorithmen
Der Dijkstra-Algorithmus
 Präsentation transkript:

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

Das single-source shortest-path Problem mit negativen Gewichten Gegeben Graph G, Gewichtsfunktion W auf den Kanten, Startknoten s Ausgabe: Ein Bit, das anzeigt, ob ein Zyklus negativer Länge von s erreichbar ist, wenn nicht, dann kürzeste Pfade von s zu allen anderen Knoten.

Bellman-Ford Algorithmus Initialisiere d(s)=0, d(v)=1 sonst For i=1 to n-1: Relaxiere alle Kanten (u,v) Für jede Kante (u,v): wenn d(v)>d(u)+W(u,v), Ausgabe: „es existiert ein negativer Zyklus“ Bemerkung: d(v) und (v) enthalten Distanz und Vorgänger zum Schluss

Laufzeit Der Algorithmus läuft offensichtlich in Zeit O(nm)

Korrektheit Angenommen kein Zyklus negativer Länge ist von s aus erreichbar. Theorem: Nach n-1 Iterationen der for-Schleife gilt d(v)=(s,v) für alle erreichbaren Knoten. Wir verwenden ein Lemma: Lemma: Sei v0,…,vk ein kürzester Weg von v0 zu vk. Relaxiere die Kanten (v0,v1)….(vk-1,vk) nacheinander. Dann gilt d(vk)=(s,vk). Dies gilt unabhängig von weiteren Relaxierungen zwischendurch.

Korrektheit Folgerung des Theorems: Sei v irgendein erreichbarer Knoten. s, …, v sei ein kürzester Pfad mit k Kanten. k· n-1 Jede Iteration relaxiert alle Kanten Damit ist nach dem Lemma d(v) korrekt nach n-1 Iterationen. Weiterhin gilt für alle unerreichbaren Knoten, dass d(v)=1 zum Schluss. Noch zu zeigen: Der Algorithmus entscheidet nicht (fälschlicherweise), dass negative Zyklen existieren Für alle Kanten (u,v) gilt: d(v)=(s,v)· (s,u)+W(u,v)=d(u)+W(u,v)

Korrektheit Wenn andererseits ein negativer Zyklus existiert: Sei v0,…,vk, ein Pfad mit negativer Gesamtlänge mit v0=vk. Wenn der Algorithmus NICHT abbricht mit der Meldung neg. Zykl. existiert, dann d(vi)· d(vi-1)+W(vi-1,vi) für alle i. Somit

Korrektheit v0=vk, und alle Knoten tauchen je einmal auf, also d(vi)· 1 für alle Knoten, die von s erreichbar sind (Übung), also

Das Lemma Lemma: Sei v0,…,vk ein kürzester Weg von s=v0 zu vk. Relaxiere die Kanten (v0,v1)….(vk-1,vk) nacheinander. Dann gilt d(vk)=(s,vk). Dies gilt unabhängig von weiteren Relaxierungen zwischendurch. Beweis: Wie zeigen per Induktion, dass nach Relaxierung von Kante (vi-1, vi) der Wert d(vi) korrekt ist. Anfang: i=0, d(v0)=d(s)=0 ist korrekt Sei d(vi-1) schon korrekt. Nach Beobachtung 3 vom Anfang gilt aber nach einer Relaxation der nächsten Kante, dass d(vi) korrekt ist. Wenn d(v) einmal korrekt ist, wird der Wert nie mehr falsch (d(v) ist immer obere Schranke, und kann nicht kleiner werden durch eine Relaxation, da bereits korrekt.)

Weitere Anwendung des Bellman Ford Algorithmus‘ Betrachte Netzwerk aus z.B. Routern Gesucht: Distanz der Router von einem speziellen Knoten s Verteilte Berechnung im Netzwerk, ohne globale Steuerung Kenntnis der Struktur des Netzwerks Dijkstra benötigt globales Wissen über das Netz Bellman-Ford kann verteilt ausgeführt werden Laufzeit: n-1 Phasen, Berechnung jeweils durch die Knoten selbst

All-pairs shortest path Gegeben sei ein Graph Varianten: gerichtet/ungerichtet gewichtet/ungewichtet/mit pos./neg. Gewichten Gesucht: Für alle Paare von Knoten u,v: Distanz im Graphen (APD: All-pairs distances) Kürzeste Wege (APSP: All-pairs shortest-path)

APSP APD: n2 Ausgaben, daher Laufzeit immer mind. n2 Verwenden Adjazenzmatrix als Eingabekonvention APSP: Problem: wie werden Wege effizient repräsentiert? Übung: Konstruiere einen Graphen, bei dem es (n2) Knotenpaare gibt, deren Distanz mindestens (n) ist Daher kann ein simples Aufschreiben der Wege bereits n3 Zeit benötigen Ausweg?

APSP Ausgabekonvention Wir verwenden eine implizite Darstellung der kürzesten Wege durch eine Nachfolgermatrix Eine Nachfolgermatrix S ist eine n£ n Matrix, so dass S[i,j]=k für einen Nachbarn k von i, der auf einem kürzesten Weg von i nach j liegt. Klar: aus S können kürzeste Wege effizient abgelesen werden.

APSP: einfache Beobachtungen Wenn alle Kantengewichte ¸ 0 sind, können wir n mal Dijkstra laufen lassen, Laufzeit: O(nm+n2log n) Bei ungewichteten Graphen n mal Breitensuche O(nm+n2) Jedoch für m=(n2) ist dies nur O(n3) Können wir insgesamt Arbeit sparen? Zunächst jedoch: ein klassischer Algorithmus

Floyd-Warshall Algorithmus Gegeben gewichteter gerichteter Graph mit positiven und negativen Kanten, aber ohne negative Zyklen O(n3) Algorithmus basiert auf dynamischem Programmieren Rekursive Berechnung von kürzesten Pfaden von u nach v, die nur Knoten aus 1… k enthalten

Floyd-Warshall Algorithmus Rekursive Definition: d[u,v,k]= Länge des kürzesten Pfades von u nach v, der (ausser u,v) nur Knoten aus {1,…,k} enthält. d[u,v,0]=W(u,v) ist =1 wenn (u,v) keine Kante Rekursion: d[u,v,k]= min d[u,v,k-1] Pfade über 1,…,k-1 d[u,k,k-1] + d[k,v,k-1] Pfade mit k

Floyd-Warshall Algorithmus Initialisiere d[u,v,0] für alle Paare u,v For k=1,…,n Berechne d[u,v,k] für alle u,v Gesamtzeit: O(n3) Korrektheit: Beachte: Für alle Paare u,v gibt es einen kürzesten Pfad, auf dem sich kein Knoten wiederholt (keine neg. Zyklen erlaubt) Induktionsbeweis über k, Übung

Floyd-Warshall Algorithmus Berechnung der Wege: Übung Hinweis: Datenstrukturen im Algorithmus sind sehr einfach, daher konstante Faktoren in der Laufzeit sehr klein