Blatt 4 - Friedrich-Schiller

Sommersemester 2016
Übungsaufgaben zur Vorlesung
Algorithmische Grundlagen
http://tinyurl.com/AlgorithmischeGrundlagen
Friedrich-Schiller-Universität Jena
Institut für Informatik
Stephan Fischer
Martin Mundhenk
Aufgaben zum 02.05.2016
Aufgabe 12:
Populationswachstum - Fortsetzung
5 Punkte
Verbessern Sie Ihr Programm aus Aufgabe 5, sodass es als Eingabe nun eine Anzahl
s von Punkten verlangt und dann das Populationswachstum im Intervall [1, 4] grafisch
3
,1 +
ausgibt. Lassen Sie dafür Simulationen laufen mit den Fertilitätsfaktoren 1, 1 + s−1
3
3
2 · s−1 , . . . , 1 + (s − 1) · s−1 = 4. Zeichnen Sie auch ein Koordinatensystem ein.
Bonus:
3 Punkte
1
Zeichnen Sie ebenso die Funktion f (x) = 1 − x in die Grafik ein.
Aufgabe 13:
Terrainanalyse
5 Punkte
Schreiben Sie ein Programm, das von der Standardeingabe zuerst eine ganze Zahl n einliest
und dann jeweils zeilenweise zwei ganze Zahlen und eine reelle Zahl. Die ganzen Zahlen
entsprechen Koordinaten in einem zweidimensionalen Punktegitter der Größe n mal n.
Die reelle Zahl entspricht der Höhe des Gitterpunktes. Ihr Programm soll dann die Anzahl
der Gipfel in dem Gitter zählen und ausgeben. Ein Gipfel dabei ist ein Gitterpunkt, dessen
Höhe echt größer als die Höhe seiner vier (oder weniger) Nachbarpunkte ist.
Sie können davon ausgehen, dass n > 0 ist und alle Punkte des Gitters eingegeben werden.
Testen Sie Ihr Programm, indem Sie die folgenden Dateien als Eingabe verwenden:
1. terrain1.txt
Lösung: 1 Gipfel
2. terrain2.txt
Lösung: 2 Gipfel
3. terrain3.txt
Lösung: 1997 Gipfel
Aufgabe 14:
Gleichverteilung auf dem Einheitskreis
5 Punkte
Schreiben Sie ein Programm, das als Eingabe eine positive ganze Zahl n erwartet und
n auf dem Einheitskreis gleichverteilte zufällige Punkte generiert. Schließlich soll es die
Punkte grafisch ausgeben. Wenn die Punkte wirklich gleichverteilt sind, sollten bei großen
n keine Häufungen zu sehen sein.
Aufgabe 15:
Spielstrategien im Kasino
5 Punkte
Um verschiedene Spielstrategien in einem Kasino zu analysieren, betrachten wir das folgende Modell eines Kasinospiels. Der Spieler startet mit einem Kapital von s = 100 ¿
und strebt ein Zielkapital von z = 150 ¿ an. Er spielt solange, bis er entweder kein Geld
mehr hat oder mehr als z hat. In jeder Runde des Spiels kann er einen beliebigen Betrag
setzen, darf sich aber nicht verschulden. Gewinnt er eine Runde, erhält er das Doppelte
seines Einsatzes. Anderenfalls erhält er nichts. Die Wahrscheinlichkeit, dass er gewinnt,
sei p.
Schreiben Sie ein Programm, das als Eingabe eine reelle Zahl p ∈ (0, 0.5) erwartet. Ihr
Programm soll dann 1000 Spiele für die folgenden Strategien simulieren und die absoluten
Häufigkeiten der Gewinne in einem Histogramm darstellen:
1. Der Spieler setzt einen konstanten Einsatz von 10
sein gesamtes Kapital.
2. Der Spieler setzt einen konstanten Einsatz von 30
sein gesamtes Kapital.
¿, falls möglich. Sonst setzt er
¿, falls möglich. Sonst setzt er
3. Der Spieler setzt die Hälfte seines aktuellen Kapitals.
4. Der Spieler setzt sein gesamtes aktuelles Kapital.
5. Der Spieler setzt z minus sein aktuelles Kapital (also so viel wie er zum Erreichen
seines Ziels braucht), falls möglich. Sonst setzt er sein gesamtes Kapital.
aus Sedgewick, Wayne, Dondero: Introduction to Programming in Python (Addison-Wesley 2015)