Randomisierte Algorithmen WS 2015/16 – ¨Ubung 3

Werbung
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).
Herunterladen