http://www.mpi-sb.mpg.de/~sschmitt/info5-ss01 R S IS UN E R SIT S SS 2001 SA Schmitt, Schömer IV A Grundlagen zu Datenstrukturen und Algorithmen A VIE N Lösungsvorschläge für das 3. Übungsblatt Letzte Änderung am 24. April 2001 Aufgabe 1 Analog zur Vorgehensweise bei den Fibonnacci-Zahlen vermuten wir ein exponentielles Wachstum: g(n) = AΦn mit A, Φ 6= 0 Einsetzen in die Rekursionsgleichung führt zu einer quadratischen Gleichung, die wir mit Hilfe quadratischer Ergänzung lösen: g(n) AΦn Φ2 2 Φ − 4Φ + 1 Φ2 − 4Φ + 4 (Φ − 2)2 Φ ⇔ ⇔ ⇔ ⇔ ⇔ ⇔ = = = = = = = 4g(n − 1) − g(n − 2) 4AΦn−1 − AΦn−2 4Φ − 1 0 3 3 √ 2± 3 Genau wie bei den Fibonnacci-Zahlen erhalten wir zwei Lösungen, Φ1 und Φ2 , woraufhin wir unsere Vermutung verfeinern zu: g(n) = AΦn1 + BΦn2 Einsetzen in die zweifache Rekursionsverankerung ergibt ein lineares Gleichungssystem mit den Unbekannten A und B, welche sich wie folgt ergeben: 1 = g(0) 4 = g(1) ⇔ 1 = AΦ01 + BΦ02 4 = AΦ11 + BΦ12 ⇔ 1 = A+ √ √B 4 = A(2 + 3) + B(2 − 3) ⇔ B = 1− √ √A 4 = A(2 + 3) + (1 − A)(2 − 3) ⇔ B √ = 1√ −A 2 + 3 = 2 3A ⇔ " √ 3 B = − 2− 2 3 √ A = √ 2+√ 3 2 3 # Somit behaupten wir schließlich: g(n) = = √ (2+ 3) √ (2 2 3 + √ n 3) − √ (2− 3) √ (2 2 3 − √ 3)n √ √ (2+ 3)n+1 −(2− 3)n−1 √ 2 3 Was es nun per vollständiger Induktion zu beweisen gilt. Zu zeigen: √ √ (2 + 3)n+1 − (2 − 3)n+1 √ g(n) = 2 3 Induktionsanfang für n = 0 und n = 1: g(0) = √ √ (2+ 3)−(2− 3) √ 2 3 √ 2√3 2 3√ = = 1 g(1) = = √ √ (2+ 3)2 −(2− 3)2 √ √ 2 3 √ 4+4 3+3−(4−4 3+3) √ 2 3 √ 8√3 2 3√ = = 4 Induktionsschritt n → n + 1 g(n + 1) = 4g((n + 1) − 1) − g((n + 1) − 2) = 4g(n) − g(n −√1) √ √ √ (2+ 3)n −(2− 3)n (2+ 3)n+1 −(2− 3)n+1 √ √ − = 4 2 3 2 3 = = = = = = √ √ √ √ 4(2+ 3)n+1 −4(2− 3)n+1 −(2+ 3)n +(2− 3)n √ √ √ 2 3 √ √ (4(2+ 3)−1)(2+ 3)n −(4(2− 3)−1)(2− 3)n √ 2 3 √ √ √ √ (8+4 3−1)(2+ 3)n −(8−4 3−1)(2− 3)n √ √2 3 √ √ √ (4+2·2 3+3)(2+ 3)n −(4−2·2 3+3)(2− 3)n √ 2 √3 √ √ √ (2+ 3)2 (2+ 3)n −(2− 3)2 (2− 3)n √ 2√ 3 √ (2+ 3)n+2 −(2− 3)n+2 √ 2 3 Was zu zeigen war. Aufgabe 2 (a) Sei X die Anzahl der gewürfelten 6en bei viermaligem Werfen. Jede Zahl wird mit Einzelwahrscheinlichkeit 61 gewürfelt. Wir suchen P (X ≥ 1) = 1 − P (X = 0) über das Gegenereignis. Die Wahrscheinlichkeit, pro Wurf keine 6 zu würfeln ist 1 − 61 = 56 . Somit ist die 4 Wahrscheinlichkeit, 4 mal hintereinander keine 6 zu würfeln P (X = 0) = 65 . Somit gilt 4 für unser Ausgangsereignis: P (X ≥ 1) = 1 − 56 ≈ 0, 52 Gehen wir davon aus, daß ein Wette für uns ab ≥ 50 Prozent profitabel ist, dann würden wir in diesem Fall wetten. (b) Sei X die Anzahl der gewürfelten 6er-Paschs bei 24 Würfen. Wir haben 2 Würfel, jeder hat 1 6 Seiten, somit ist die Wahrscheinlichkeit, pro Wurf einen 6er-Pasch zu würfeln 61 · 16 = 36 . Wir suchen P (X ≥ 1) = 1 − P (X = 0) wieder über das Gegenereignis. Analog zu oben 1 würfeln wir mit einer Wahscheinlichkeit von 1 − 36 = 35 pro Wurf keinen 6er-Pasch. Somit 36 35 24 ist die Wahrscheinlichkeit, 24 mal keinen 6er-Pasch zu würfeln P (X = 0) = 36 und 24 35 ≈ 0, 49 und somit sollten wir darauf liefert uns für unser Problem P (X ≥ 1) = 1 − 36 nicht wetten. Anmerkung: Natürlich kommt das gleiche raus, wenn man die Formel für Bernoulli-Ketten mit 1 n = 4 (24) und p = 61 36 anwendet. Aufgabe 3 1. Beschreibung: Die grundlegende Lösungsidee dieser Aufgabe besteht darin, zu erkennen, daß es sich beim Werfen der Würfel um unabhängige Ereignisse handelt. Also betrachtet man einen Würfel gesondert und die restlichen n − 1 Würfel zusammen. Das Problem wird jetzt in 6 Fälle unterteilt. Im ersten Fall wird mit dem ersten Würfel eine 1 gewürfelt. Um jetzt auf eine bestimmte Augenzahl S zu kommen, muss mit den verbleibenden n − 1 Würfel die Augensumme S −1 erzielt werden. Analog geht es weiter. Wurde beim ersten Wurf eine 2 gewürfelt, so muss jetzt die Augenzahl S − 2 erreicht werden. Im folgendenden bedeutet das Ereignis Sn , daß mit n Würfeln die Augensumme S erzielt wird. Also ergibt diese Betrachtung folgende Wahrscheinlichkeitsverteilung: P (Sn ) = P (11 ) · P ((S − 1)n−1 ) + . . . + P (61 ) · P ((S − 6)n−1 ) 1 1 P ((S − 1)n−1 ) + . . . + P ((S − 6)n−1 ) = 6 6 6 X1 = P ((S − k)n−1 ) 6 k=1 Diese Gleichung beinhaltet eine kleine mathematische Unkorrektheit, die einem spätestens beim Programmieren übel aufstößt: was passiert, wenn S − k < 1? In diesem Fall wird natürlich nichts hinzuaddiert. Im Programm wird dieser Fall duch eine if-Anweisung ausgeschlossen. 2. Implementierung: #include <iostream.h> /* Damit der Algorithmus erkennbar bleibt, wurde hier darauf verzichtet, das Programm platzeffizient zu schreiben */ #define N32 int i,j,k; double sum; /* Feld, in dem W-Verteilung zu einer Augensumme gespeichert wird */ double wverteilung[N+1][6*N+1]; int main () { /* Initialisierung des Feldes */ for (i = 1; i <= N; i++) for (j = 1; j <= 6*N; j++) wverteilung[i][j] = 0.0; /* Werte fuer einen Wuerfel */ for (j = 1; j <= 6; j++) wverteilung[1][j] = 1.0/6.0; /* Berechnung der Wverteilung fuer n Wuerfel aus den Daten fuer n-1 Wuerfel */ for (i = 2; i <= N; i++) for (j = i; j <= 6*i; j++) for (k = 1; k <= 6; k++) if (j-k > 0) wverteilung[i][j] += wverteilung[i-1][j-k]/6.0; /* Pruefe, ob die Summe stimmt (muss 1 sein) Aufgrund von Rundungsfehlern wird eine Genauigkeit von 0.001 zugestanden */ sum = 0; for (j = N; j <= 6*N; j++) sum += wverteilung[N][j]; if ((sum - 1.0)*(sum - 1.0) > 0.000001) cout << "Die Summe ist falsch!" << endl; /* Ausgabe der Werte */ for (j = N; j <= 6*N; j++) cout << j << " " << wverteilung[N][j] << endl; return 0; } 3. Laufzeitanalyse: Alle Zugriffe auf das Array laufen in konstanter Zeit O(1). (a) Initialisierung des Feldes: O(n2 ) (b) Werte für einen Würfel: O(1) (c) Berechnung der W-Verteilung: O(n2 ) (d) Prüfen der Summe: O(n) (e) Ausgabe: O(n) Damit ergibt sich eine Gesamtlaufzeit von O(n2 + 1 + n2 + n + n) = O(n2 ) Aufgabe 4 Sei N = c + d die Anzahl aller Bälle. Nehmen wir an, wir würden alle Bälle ziehen. Dadurch erhielten wir eine bestimmte Reihenfolge. Die Wahrscheinlichkeit, daß sich ein bestimmter Ball an einer bestimmten Position befindet ist für alle Positionen gleich, nämlich N1 . Somit ist die Wahrscheinlichkeit, daß sich ein bestimmter Ball auf den ersten k Positionen befindet gleich k . Der Erwartungswert, daß ein bestimmter Ball auf den ersten k Positionen ist, ist damit Nk . N Sei {g1 ...gc } die Menge der gelben Bälle. Dann ist c P 1 wenn Position von gi ≤ k X= Yi mit Yi = 0 sonst i=1 die Zufallsvariable für die Anzahl der gezogenen gelben Bälle. Also ist E(X) = E( c X Yi ) i=1 = c X E(Yi ) i=1 k N c∗k = c+d = c∗ der gesuchte Wert. Aufgabe 5 Das Spiel ist unfair. Für jede Wahl von Spieler A kann Spieler B eine Ereignis wählen, welches mit höherer Wahrscheinlichkeit auftritt! Das momentane Ereignis kann man als Zustand eines Automaten auffassen, wobei es immer zwei Endzustände gibt (Wahl von A, Wahl von B). Von jedem nicht Endzustand aus kann man mit zwei Kanten (K oder Z ist gefallen, je Wahrscheinlichkeit 21 ) in einen anderen Zustand übergehen (außer KKK, ZZZ). Der Startzustand ist nach 3 Würfen erreicht. Dabei gilt, daß jeder der Startzustände mit gleicher Wahrscheinlichkeit eintritt ( 18 ) und alle Kanten Wahrscheinlichkeit 12 haben. Sehen wir uns den Graphen für das Beispiel A : KKZ, B : ZKK an: K wird geworfen Z wird geworfen KKK ZZZ KKZ ZZK KZK ZKZ ZKK KZZ Es ergibt sich folgendes Gleichungssystem: PKKK = 18 + 12 ∗ PKKK PKKZ = 18 + 12 ∗ PKKK PKZK = 18 + 12 ∗ PZKZ PZKK = 81 + 12 ∗ PKZK + 12 ∗ PZZK PZZZ = 18 + 12 ∗ PKZZ + 18 ∗ PZZZ PZZK = 18 + 21 ∗ PZZZ + 12 ∗ PKZZ PZKZ = 81 + 21 ∗ PZZK + 12 ∗ PKZK PKZZ = 81 + 21 ∗ PZKZ In diesem Beispiel ist es leicht einzusehen das die Wahl ZKK besser ist als die Wahl KKZ. Denn durch die Wahl dieser Endzustände teilt sich der Graph in zwei Subgraphen und man hat keine Möglichkeit von einem in den anderen zu wechseln! Damit entscheidet sich der Gewinner schon beim Startzustand ( 41 für A) und es ist nur eine Frage der Zeit (könnte zwar ewig dauern), bis einer der Spieler gewonnen hat. Dadurch, daß es für jede Kombination von A und B einen anderen Graphen gibt und andere Kanten wegfallen ist es auch möglich, daß es immer eine bessere Wahl gibt! Man kann dem Gegenspieler taktisch Kanten entfernen, indem man die eigene Wahl günstig trifft.