Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Effiziente Algorithmen

Ähnliche Präsentationen


Präsentation zum Thema: "Effiziente Algorithmen"—  Präsentation transkript:

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

2 Boolesche Matrixmultiplikation mit Zeugen
Gegeben seien Boolesche Matrizen A,B P=AB unter Boolescher Multiplikation Ein Zeuge für P[i,j]=1 ist ein Index k mit A[i,k]=B[k,j]=1 Eine Zeugenmatrix sei eine Matrix, die an allen i,j mit P[i,j]=1 einen Zeugen enthält, sonst 0 Bestimme Zeugenmatrix! Beachte: Integermatrixmultiplikation liefert Anzahl der Zeugen

3 Boolesche Matrixmultiplikation mit Zeugen
Wir werden später sehen: Es gibt einen randomisierten Algorithmus, der in erwarteter Laufzeit O(T(n) log2n) die Zeugenmatrix bestimmmt, wenn T(n) die Laufzeit für Matrixmultiplikation ist.

4 APSP Verwenden Algorithmen für APD und Boolesche Matrixmultiplikation mit Zeugen. Sei A Adjazenzmatrix u, v seien Knoten mit Distanz d S[u,v] Nachfolgermatrix:=w, gdw (w,v)=d-1 und A[u,w]=1 Sei Bd eine Boolesche Matrix mit Bd[w,v]=1 gdw (w,v)=d-1 Bd kann aus den Distanzen  in Zeit O(n2) berechnet werden: Wenn (w,v)=d-1, dann setze Bd[w,v]=1, sonst 0

5 APSP Wir verwenden nun Boolesche Matrixmultiplikation mit Zeugen für die Matrizen A und Bd A¢Bd[u,v]=1 gdw es gibt Kante (u,w) und Distanz w nach v ist d-1 Zeuge: w D.h. wenn d minimal, ist w der gewünschte Eintrag der Nachfolgermatrix. Problem: wollen dies nicht für alle d ausführen!

6 APSP Nach Lemma 2 (vorige Vorlesung): wenn u, v Knoten: für alle Nachbarn w von u gilt (u,v)-1· (w,v) · (u,v)+1 Jeder Nachbar mit (u,v)-1= (w,v) ist für uns ok Somit ist w gut, wenn A[u,w]=1 und (w,v)´(u,v)- 1 mod 3 Wir betrachten für s2{0,1,2} die Matrizen Ds mit Ds[w,v]=1 gdw (w,v)+1´ s mod 3 Wir berechnen die Zeugen der Produkte A Ds für s=0, 1, 2

7 APSP Zusammengefasst:
Wenn Ws Zeugenmatrix für ADs: Ws[u,v]=w für s=(u,v) mod 3 ergibt einen Nachfolger w auf dem kürzesten Pfad von u nach v

8 Der Algorithmus Berechne Distanzmatrix D mit APD-Algorithmus
Für s=0,1, 2: Berechne Ds Berechne Zeugenmatrix Ws für ADs Berechne Nachfolgermatrix: S[u,v]=Ws[u,v] mit s=D[u,v] mod 3

9 Laufzeit Die Laufzeit wird dominiert durch die Matrixmultiplikation, also O(T(n)log2n)

10 Boolesche Matrixmultiplikation mit Zeugen
Betrachte zuerst den Fall, dass es für jeden Eintrag von P nur höchstens einen Zeugen gibt. Setze A‘[i,k]=k¢A[i,k] und multipliziere A mit B durch Integermatrixmultiplikation Ergebnis: an Stelle [i,j] erhalten wir k mit A[i,k]=B[k,j]=1 Natürlich funktioniert dies nicht allgemein

11 Boolesche Matrixmultiplikation mit Zeugen
Unser Ansatz wird es sein, durch Randomisierung zu erreichen, dass mit hoher Wahrscheinlichkeit nur ein Zeuge vorhanden ist.

12 Exkurs Randomisierte Algorithmen

13 Randomisierte Algorithmen
Randomisierte Algorithmen haben Zugriff auf eine Quelle von Zufallsbits Diese entsprechen Zufallsvariablen bi und haben folgende Wahrscheinlichkeitsverteilung: Prob(bi=1)=Prob(bi=0)=1/2. Alle bi sind paarweise voneinander unabhängig, d.h. gegeben die Werte anderer bi1,…,biT sind neue bi immer noch wie oben verteilt Der Algorithmus kann die bi von der Zufallsquelle lesen und beliebig speichern oder weiterverarbeiten

14 Beispiel Quicksort: In diesem Sortieralgorithmus wird ein Pivotelement aus 1,…,n gewählt, um die zu sortierende Folge in zwei Teilfolgen zu splitten. Der Algorithmus ist schnell, wenn die Teilfolgen ungefähr gleich gross sind. Dies kann erreicht werden durch Berechnung des Medians, aber nur mit grossem Aufwand. Eine feste Pivotwahl hingegen führt zu Laufzeit n2 im worst case. Eine zufällige Pivotwahl teilt die Folge mit guter Wahrscheinlichkeit in ungefähr gleich grosse Teile Damit erwartete Laufzeit O(n log n ) für alle Eingaben

15 Arten von randomisierten Algorithmen
Klar: ein randomisierte Algorithmus kann nicht dieselben Garantien geben wie ein deterministischer Algorithmus Wie „schwächen“ wir solche Garantien? Möglichkeit 1: Betrachten erwartete Laufzeit anstelle von worst-case Laufzeit Beobachtung: Für fixierte Werte der gelesenen Zufallsbits ist der Algorithmus ansonsten deterministisch Wie definieren die Laufzeit eines randomisierten Algorithmus als den Erwartungswert der Laufzeit über die gelesenen Zufallsbits, aber im worst case über alle Eingaben

16 Arten von randomisierten Algorithmen
Möglichkeit 2: Wir erlauben dem Algorithmus, mit geringer Wahrscheinlichkeit falsche Ergebnisse zu liefern Normalerweise Fehlerwahrscheinlichkeit 1/3, da Fehler durch Wiederholung verringert werden kann Betrachten Laufzeit im worst case über Eingaben und Zufallsbits Möglichkeit 2 ist stärker als 1, d.h. ein Algorithmus nach Def. 1 ist auch einer nach Def. 2, indem wir nach z.B. 5 mal der erwarteten Laufzeit abbrechen und irgendeine (eventuell falsche) Ausgabe machen.

17 Diskussion Ein randomisierter Entscheidungsalgorithmus mit Laufzeit T und Fehler 1/3 kann in einen ebensolchen mit Laufzeit O(T¢ S) und Fehler ½S umgewandelt werden, durch Wiederholung und Mehrheitsbildung unter den Resultaten So kann die Fehlerquelle „Algorithmus“ in dieselbe Grössenordnung gebracht werden wie die Fehlerquelle „Hardware“ Wenn ein randomisierter Algorithmus viel schneller ist als ein deterministischer, kann es sein, dass dadurch der Gesamtfehler („Hardware“+ „Algorithmus“) geringer ist als bei einem deterministischen Algorithmus Häufig sind randomisierte Algorithmen einfacher und eleganter (leichter zu implementieren) Frage: gibt es überhaupt echten Zufall?


Herunterladen ppt "Effiziente Algorithmen"

Ähnliche Präsentationen


Google-Anzeigen