Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen

Ähnliche Präsentationen


Präsentation zum Thema: "Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen"—  Präsentation transkript:

1 Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen
WS 08/09 Friedhelm Meyer auf der Heide Vorlesung 11,

2 Randomisierte Algorithmen

3 Hängt von Schritt 1 (Wahl des Splitelements) ab.
Beispiel: Quicksort Eingabe: S={s1,…,sn} ½ N. Algo: Falls n=0, gebe leere Folge aus; falls n=1, gebe s1 aus. Sonst: - erzeuge Splitelement si, i 2 {1,…,n} - vergleiche jedes sj, ji, mit si, erzeuge dadurch S1 ={sj, sj < si} und S2 ={sj, sj > si} - sortiere S1 und S2 rekursiv - gebe “sortiertes S1”, si , “sortiertes S2” aus. Laufzeit: Hängt von Schritt 1 (Wahl des Splitelements) ab. Best case: Splitelement ist immer der Median ! Laufzeit O(n logn) Worst case: Splitelement ist immer das Minimum ! Laufzeit O(n2) Average case: Splitelement ist s1 , Eingabe ist zufällige Permutation ! Durchschnittliche Laufzeit O(n logn)

4 Ist “durchschnittliche Laufzeit” ein interessantes Kostenmaß?
Beispiel: Quicksort mit s1 als Split-Element. Absteigend sortierte Folge ist ein schlechtester Fall. Ist sie eine typische Eingabe?

5 Ist “durchschnittliche Laufzeit” ein interessantes Kostenmaß?
Bester Fall · Durchschnitt · schlechtester Fall Wo liegt der “typische Fall”? Hängt von Problem und Algorithmus ab, ist meist nicht formal beschreibbar.

6 Randomisierte Algorithmen
Beispiel: Quicksort mit zufälligem si als Split-Element. Es gibt keine guten oder schlechten Eingaben mehr!!! Es gibt nur noch gute oder schlechte Ergebnisse der Zufallsexperimente im Algorithmus! Wir betrachten Algorithmen, die Zufallszahlen benutzen, und davon den Verlauf der Rechnung abhängig machen, sog. probabilistische oder randomisierte Algorithmen.

7 Beispiel: Randomisierter Quicksort
Eingabe: S={s1,…,sn} ½ N. Algo: Falls n=0, gebe leere Folge aus; falls n=1, gebe s1 aus. Sonst: - erzeuge zufälliges Splitelement si, i 2 {1,…,n} - vergleiche jedes sj, ji, mit si, erzeuge dadurch S1 ={sj, sj < si} und S2 ={sj, sj > si} - sortiere S1 und S2 rekursiv - gebe “sortiertes S1”, si , “sortiertes S2” aus. Laufzeit (Wir messen die Zahl der Vergleiche): Die Laufzeit hängt von der Ergebnissen der Zufallsexperimente ab. Wir berechnen die erwartete Laufzeit bei zufälliger Wahl der Splitelemente

8 Erwartete Laufzeit des randomisierten Quicksort
Wir müssen E(Xi,j) berechnen. Wir müssen pi,j berechnen.

9 Erwartete Laufzeit des randomisierten Quicksort
Wann wird S(i) mit S(j) verglichen? Es gibt nur eine Chance: Betrachte die Situation, wenn Quicksort für eine Teilmenge S’ aufgerufen wird mit 1. S(i), S(j) 2 S’ (und damit {S(i), S(i+1),…, S(j-1), S(j)} µ S’) 2. Als Splitelement wird ein S(r) gewählt mit i· r · j. Nur in dieser Situation kann S(i) mit S(j) verglichen werden. Wann passiert das wirklich? Genau wenn r=i oder r=j gilt! Also:

10 Erwartete Laufzeit des randomisierten Quicksort

11 Erwartete Laufzeit des randomisierten Quicksort

12 Ein elementares Beispiel
Best case: 1, worst case: n-k+1 Best case: 1 worst case 1, (tritt mit W’keit 0 ein) erwartete Zahl von Versuchen: (n-k)/k +1

13 Ein elementares Beispiel

14 Thank you for your attention!
Friedhelm Meyer auf der Heide Heinz Nixdorf Institute & Computer Science Department University of Paderborn Fürstenallee 11 33102 Paderborn, Germany Tel.: (0) 52 51/ Fax: (0) 52 51/


Herunterladen ppt "Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen"

Ähnliche Präsentationen


Google-Anzeigen