Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
ich stecke bei der Aufgabe leider etwas fest. Ich habe mich bei der a) für die Invariante
df * x!! = n!! AND x >= 0
entschieden, da für n gerade x am Ende des Schleifendurchlaufs 0 sein wird, also die erste Zeile der möglichen Invarianten ausscheiden. Zusätzlich ist die Möglichkeit
(df+x)!! = n!! AND x >= 0
auch nicht valide, da sie nicht vor Beginn des Schleifendurchlaufs gilt (wenn man die for-Schleife in eine while-Schleife umschreibt wird das ja schnell ersichtlich).
Allerdings bekomme ich mit meiner gewählten Invariante bei der b) Probleme:
Mal angenommen ich will 3!! ausrechnen, also n = 3, dann gilt vor dem ersten Schleifendurchlauf: 1) df = 1
darf/muss man bei der Teilaufgabe d) eine Fallunterscheidung für gerade/ungerade n machen ? weil mir fällt keine terminierungsfunktion ein die für beide fälle eine ganzzahl liefert (vielleicht stell ich mich aber auch nur blöd an :D).
Fallunterscheidung
Ich bräuchte kurz etwas hilfe, was die Fallunterscheidung bei der 9.4 angeht.
Also, so weit ich weiß muss ich bei der 9.4b sowie bei der 9.4 c eine Fallunterscheidung machen.
Soll das heißen , dass ich die b und c einfach zwei mal mache (also für gerade und ungerade) und dies dann am ende wieder zurückwandle von z.B. 2^n/2 * n/2! in n!! und dann wieder meine Invariante rauskommen soll? (Ich habe die Aufgabe so schon gemacht, aber ich habe keine Fallunterscheidung gemach, da dies nicht nötig schien bis zu dem Zeitpunkt an dem mir ein Kollege gesagt hat, das man das so machen soll (laut Tutor)).
Update : Okay hat sich erledigt. Ich habe nochmal mit meinem Kollegen gesprochen und der meinete Fallunterscheidung muss vorkommen (so wie ich es nun doch habe), aber man muss nicht die ganze Aufgabe zwei mal lösen.
Das kommt darauf an, wie man es hinschreibt. Dennoch entstehen aus (I und -b) zunächst „zwei verschiedene Basisfälle“… bitte genau und formal vollständig bleiben!
I schränkt ja x schon ein und -b schränkt x noch weiter ein. Beide Einschränkungen zusammen genommen kürzen x!! einfach aus der Gleichung raus und der Rest ist df = n!! also Q. Somit habe ich überhaupt keine Basisfälle betrachtet. Im Übrigen, wenn man beide Fälle unterscheidet, also gerade und ungerade, rechnet man ein oder zwei Umformungen mehr, aber man erreicht auch df = n!!.
I schränkt nach unten ein, -b nach oben - „dazwischen“ bleibt ein „kleines Intervall“…
Definiere „kürzen x!! einfach […] raus“! Hast du die falsche Invariante erwischt (oder nur zu schnell gefolgert)?
Natürlich: Es sollte bei den AuD-Aufgaben immer so sein, dass Q am Ende folgt, sonst würde die Aufgabe ja den Beweis des Unbeweisbaren fordern.
Die Lösung der Aufgabe beteht aber darin, diesen Beweisweg möglichst ausführlich/nachvollziehbar dazulegen.
Genau und dieses Intervall sagt aus, dass x = 0 ist.
Es kann natürlich sein, dass ich die falsche Invariante gewählt habe. Mit dem oben Gesagten habe ich (I und -b) zu df*x!! = n!! und x = 0 umgeformt. Da x = 0 ist und 0!! = 1 ist, lässt sich das x!! rauskürzen bzw. mit dem df verrechnen und man erhält df = n!!. Damit habe ich (I und -b) => Q gezeigt. Darin besteht doch auch die Aufgabe in c) oder etwa nicht?