B
Brombeere
Gast
Hallo,
ich habe gleich noch eine Frage:
und zwar ist folgender Programmabschnitt gegeben:
In der Schleife wird a immer verdoppelt, b um 1 erhöht. Beweisen soll man nun die Terminierung von Schleifen, streng nach einer Vorgabe der Vorlesung:
Man soll zu den "Iterationen 0,1,... eine Folge von Werten u 0, u1, u2 ..., die sich jeweils nach einer
festen Formel aus den Werten von Programmvariablen ergeben, konstruieren, und zwar für u0 bei Eintritt in die Schleife und für ui am Ende der i-ten Iteration (for: nach Inkrement)
Zum Beweis der Terminierung genügt dann nachzuweisen, dass:
1. u0 > 0
2. u < u - d für alle i und einen festen Wert d > 0
3. Für ui ≤ 0 wird die Schleife nach der i-ten Iteration verlassen".
Um mal direkt die Vorlesung zu zitieren.
Ich hab mir nun folgendes überlegt:
u=b-a+2
1. Für u_0 gilt dann: u=n-2+2=n. Da n>0 ist, u_0 echt größer 0.
2. u_i=b-a+2=n-a+2
u_i+1=b+1-2a+2=n-2a+3
Wenn man das vergleicht und beachtet, dass a>=2 sieht man doch: Für den kleinsten Fall a=2 gilt:
u_i=n-2+2=n; u_i+1=n-4+2=n-2. Für die restlichen Fälle gilt dies ja erst recht: u_i<u_i+1.
3. Damit hab ich Probleme, das z beweisen.
ich habe gleich noch eine Frage:
und zwar ist folgender Programmabschnitt gegeben:
Java:
// Es gilt n > 0.
int a = 2;
int b = n;
while (a < b + 10) {
a = a * 2;
b = b + 1;
}
In der Schleife wird a immer verdoppelt, b um 1 erhöht. Beweisen soll man nun die Terminierung von Schleifen, streng nach einer Vorgabe der Vorlesung:
Man soll zu den "Iterationen 0,1,... eine Folge von Werten u 0, u1, u2 ..., die sich jeweils nach einer
festen Formel aus den Werten von Programmvariablen ergeben, konstruieren, und zwar für u0 bei Eintritt in die Schleife und für ui am Ende der i-ten Iteration (for: nach Inkrement)
Zum Beweis der Terminierung genügt dann nachzuweisen, dass:
1. u0 > 0
2. u < u - d für alle i und einen festen Wert d > 0
3. Für ui ≤ 0 wird die Schleife nach der i-ten Iteration verlassen".
Um mal direkt die Vorlesung zu zitieren.
Ich hab mir nun folgendes überlegt:
u=b-a+2
1. Für u_0 gilt dann: u=n-2+2=n. Da n>0 ist, u_0 echt größer 0.
2. u_i=b-a+2=n-a+2
u_i+1=b+1-2a+2=n-2a+3
Wenn man das vergleicht und beachtet, dass a>=2 sieht man doch: Für den kleinsten Fall a=2 gilt:
u_i=n-2+2=n; u_i+1=n-4+2=n-2. Für die restlichen Fälle gilt dies ja erst recht: u_i<u_i+1.
3. Damit hab ich Probleme, das z beweisen.