Rev. 1, 19.11.2015 TU Ilmenau, Fakultät für Informatik und Automatisierung FG Komplexitätstheorie und Effiziente Algorithmen Univ.-Prof. Dr. M. Dietzfelbinger, Dipl.-Ing. C. Mattern http://www.tu-ilmenau.de/iti/lehre/lehre-ws-20152016/ra/ Randomisierte Algorithmen WS 2015/16 – Übung 3 Besprechung: Donnerstag, 26. November 2015 Hinweis: Für das erfolgreiche Vorrechnen einer mit *“ gekennzeichneten Aufgabe wird ein Bo” nuspunkt vergeben, es gibt maximal zwei Bonuspunkte pro Studierendem im Semester. Aufgabe 1 (Geometrische Verteilung) *1 Die Zufallsvariable X sei geometrisch verteilt mit Parameter p, d. h. Pr(X = i) = (1 − p)i−1 p für i ≥ 1. (Die Zufallsvariable X modelliert die Wartezeit auf Erfolg“ bei einer unabhängigen Folge von Zufalls” experimenten mit Erfolgswahrscheinlichkeit p.) Zeigen Sie: 1 1− p E(X) = und Var(X) = 2 . p p d i−1 i Hinweis: Benutzen Sie i · q = dq q , um E(X) zu berechnen. Zweimaliges Differenzieren von Termen der Form qi hilft ebenfalls bei der Berechnung von Var(X). Aufgabe 2 (Coupon collector’s problem) *1 Betrachten Sie nun das Zufallsexperiment, so lange unabhängig wiederholt Bälle auf m Körbe zu werfen, bis in jedem Korb mindestens ein Ball liegt, wobei wieder jeder Korb bei einem einzelnen Wurf mit gleicher Wahrscheinlichkeit 1/m getroffen wird. Dieses Zufallsexperiment erinnert an das Sammeln von Sammelbildern, bis man alle Bilder einer Serie aus m Bildern zusammen hat. Daher der Name coupon collector’s problem. (a) Bestimmen Sie zunächst einen geeigneten Wahrscheinlichkeitsraum für dieses Zufallsexperiment. (b) Angenommen, i Körbe sind leer, 1 ≤ i ≤ m, die anderen m − i sind nicht-leer. Was ist dann die erwartete Anzahl ti an Würfen, bis zum ersten Mal ein leerer Korb getroffen wird? Hinweis: Aufgabe 1 ist hilfreich. (c) Angenommen, anfangs sind alle Körbe leer. Was ist die erwartete Anzahl an Bällen, die man werfen muss, bis in jedem Korb mindestens ein Ball liegt? Hinweis: (b) und Linearität des Erwartungswertes. Weiter auf nächster Seite! 1 Um einen Bonuspunkt zu erhalten, lösen Sie Aufgabe 1 und Aufgabe 2. 2 Randomisierte Algorithmen WS 2015/16 – Übung 3 Aufgabe 3 (Erzeugen einer Zufallspermutation) * Wir möchten eine zufällige Permutation von {1, 2, . . . , n} generieren, jede mögliche Permutation soll dabei gleiche Wahrscheinlichkeit haben. Dazu betrachten wir folgende Algorithmen, die die Permutation im Array I[1..n] speichern: Algorithmus 1 : Permutation naive Algorithmus 2 : Permutation clever : Ganze Zahl n ≥ 1. : Permutation von {1, 2, . . . , n} im Array I[1..n]. Datenstruktur : Arrays I[1..n] und H[1..n]. for i = 1, 2, . . . , n do H[i] ← 0; for i = 1, 2, . . . , n do repeat j ← eine uniform zufällig gezogene Zahl aus {1, 2, . . . , n}; until H[j] = 0; I[i] ← j; H[j] ← 1; end return I; Eingabe Ausgabe Eingabe Ausgabe 1 2 3 4 5 6 7 8 1 2 3 4 5 6 : Ganze Zahl n ≥ 1. : Permutation von {1, 2, . . . , n} im Array I[1..n]. Datenstruktur : Array I[1..n]. for i = 1, 2, . . . , n do I[i] ← i; for i = n, n − 1, . . . , 2 do j ← eine uniform zufällig gezogene Zahl aus {1, 2, . . . , i}; Tausche I[i] und I[j]; end return I; (a) Begründen Sie, dass Algorithmus 1 korrekt ist und bestimmen Sie die erwartete Laufzeit. (b) Zeigen Sie, dass Algorithmus 2 korrekt ist und geben Sie die Laufzeit an. Hinweis: Formulieren und beweisen Sie eine geeignete Scheifeninvariante für die Schleife 2–5. (c) Wie würde man eine zufällige (genau) k-elementige Teilmenge von {1, . . . , n} erzeugen? Hinweis: Hierauf gibt es keine geschlossene Antwort. Es kommt darauf an, wie groß k ist und welche Laufzeiten akzeptabel sind. Finden Sie möglichst ein Verfahren mit Laufzeit O(k).