Institut fur Informatik der Universitat Munchen Dr. Jan Johannsen Jan Homann WS 2007/08 30. Oktober 2007 Ubungen zum Repetitorium Informatik 1 Blatt 2 Aufgabe H-1 (5 Punkte): In den Gefangnissen von San Diego County wird bei guter Fuhrung des Straftaters ein Teil der Haftstrafe zur Bewahrung ausgesetzt. Das Strafma veringert sich dabei um 2 Tage, fur je 4 Tage die der Gefangene im Gefangnis gewesen ist. Zum Beispiel musste ein Gefangener der zu 12 Tagen verurteilt wurde, bei guter Fuhrung lediglich 8 Tag im Gefangnis verbringen. Bei einer Strafe von 9 Tagen kame er nach 7 Tagen frei. (Man kann also nicht einfach 23 der ursprunglichen Strafe berechnen.) Der Sheri von San Diego muss naturlich ermitteln konnen wann er einen Gefangenen, der zu n Tagen Haft verurteilt wurde, entlassen kann. Er versteht aber lediglich die Funktionen <, =, +, −, ∗ sowie Rekursion. Verwenden Sie Pseudocode um einen rekursiven Algorithmus zu entwerfen mit dem der Sheri die Haftstrafe bei guter Fuhrung berechnen kann. Geben Sie Ihre Losung als pdfoder Textdatei mit dem Namen h-1.txt bzw. h-1.pdf ab. Aufgabe H-2 (6 Punkte): Betrachten Sie die folgenden rekursiven Funktionen f1 , f2 und f3 . Dabei bezeichnet fur n, k ∈ N, n mod k den Rest und n div k den Quotient der Division n ÷ k. f1(x) = if x = 1 then 0 else 1 + f1(x div 2) f2(n) = if n if n if n else = 0 = 1 mod not then true then false 2 = 0 then f2(n div 2) f2(n div 2) f3(b,x,t) = if x = 0 then t if t = 1 then f3(b,x-1,b) else f3(b,x,t-1)+f3(b,x-1,b) Auf welchen Eingaben n ∈ N terminieren diese Funktionen? Was ist ihr Wertebereich? (D.h. welche moglichen Werte konnen sie annehmen?) Welche Funktionen werden von f1 , f2 und f3 berechnet? Geben Sie Ihre Losung als pdf- oder Textdatei mit dem Namen h-2.txt bzw. h-2.pdf ab. Hinweis: f1 und f3 sind bekannte mathematische Funktionen. Bei f2 geht es um die Binardarstellung der Zahl n. Vielleicht hilft es Ihnen wenn sie die Werte der Funktionen fur Beispieleingaben betrachten. Sie konnen dafur die Datei 2-1.sml auf der Homepage benutzen und sie mit sml 2-1.sml in den SML-Interpreter laden. Der Aufruf f1(4); liefert dann zum Beispiel den Wert von f1 (4). Aufgabe H-3 (5 Punkte): In der Vorlesung wurde der Datentyp Liste zusammen mit den Funktionen erstes : Liste(M) → M, rest : Liste(M) → Liste(M) und laenge : Liste(M) → N vorgestellt. Die rekursive Funktion diff : Liste(N) × Liste(N) → N ist wie folgt deniert. diff(l1,l2) = if laenge(l1) > 0 then diff(rest(l1),l2) + erstes(l1) if laenge(l2) > 0 then diff(l1,rest(l2)) - erstes(l2) else 0 Beweisen Sie, dass diff(l1 , l2 ) fur alle Listen l1 und l2 terminiert und dass folgende Gleichung gilt diff([a1 , . . . , an ], [b1 , . . . , bm ]) = n X ai − i=1 m X bi j=1 Geben Sie Ihre Losung als pdf- oder Textdatei mit dem Namen h-3.txt bzw. h-3.pdf ab. Aufgabe P-6: Sei log der Logarithmus zur Basis 2 und sei p2(n) eine Boolsche Funktion die genau dann true liefert wenn n ∈ N eine Zweierpotenz ist. Deniere log(0) (n) = n und log(k) (n) = log(k−1) (dlog(n)e) fur k > 0. Der iterierte Logarithmus log∗ ist deniert durch log∗ (n) := min{ i | log(i) (n) = 1 }. log∗ kann durch die rekursive Funktion iterlog wie folgt berechnet werden. iterlog(n) = if n=1 then 0 if p2(n) then iterlog(log(n))+1 else iterlog(n+1) Beweisen Sie, dass iterlog(n) fur alle n ≥ 1 terminiert und korrekt ist, also iterlog(n) = log∗ fur alle n ≥ 1 gilt. Aufgabe P-7: Eine nat urliche Zahl n P heit vollkommen falls sie identisch mit der Summe ihrer echten Teiler ist, also wenn j<n,j|n j = n. 6 ist die kleinste vollkommenen Zahl, denn es gilt 1+2+3 = 6. Es ist unklar ob es unendlich viele vollkommene Zahlen gibt und ob ungerade vollkommene Zahlen existieren. Helfen Sie bei der Klarung dieser oenen Fragen indem Sie einen Algorithmus in Pseudocode entwerfen, der f ur eine gegebenen naturliche Zahl entscheidet ob sie vollkommen ist. Verwenden Sie lediglich die Grundfunktionen <, =, +, −, ∗ sowie einen Test auf Teilbarkeit (j|n oder n mod j = 0). Hinweis: Sie konnen auch Hilfsfunktionen denieren. Abgabe der Hausaufgaben u ber UniWorx bis spatestens Dienstag, 06.11.2007, 14 Uhr. Besprechung am Dienstag, 06.11.2007.