Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Lösung 6.3 Denksportaufgabe

Ähnliche Präsentationen


Präsentation zum Thema: "Lösung 6.3 Denksportaufgabe"—  Präsentation transkript:

1 Lösung 6.3 Denksportaufgabe
Denksportaufgabe Welche Farbe hat die letzte Kugel ? Die Farbe der letzten Kugel ist abhängig von der Anzahl der weißen Kugeln: Ist die Anzahl gerade, so ist die letzte Kugel schwarz Ist die Anzahl ungerade, so ist die letzte Kugel weiß Welche Aussage gilt vor, in und nach der Schleife (Invariante) Ist die Anzahl der weißen Kugeln gerade, so bleibt sie gerade Ist die Anzahl der weißen Kugel ungerade, so bleibt sie ungerade Es werden entweder 2 weiße Kugeln entfernt oder keine. Terminiert die Schleife ? Begründen Sie ihre Antwort. JA. Die Anzahl der Kugeln vermindert sich bei jedem Zug um genau eine (nach Algorithmus: 2 nehmen, eine geben). Beim Erreichen von 2 Kugeln wird die Schleife noch einmal durchlaufen und terminiert mit einer Kugel.

2 Lösung 6.4 Invariante {s+w >= 1}  x=s; y=w; {x=s, y=w, x+y  1}
{INV: ( (odd(w)odd(y))  (even(w)even(y)) )  x+y1 } while (x+y>1) { {INV  x+y>1} // Vorbedingung für „take“: x+y>1 take(a,b) // OUT: a no. black, b no white (drawn) {a+b=2, a,b0} // = Nachbedingung für „take“ switch a: { // a = no of black bullets drawn case 0: {x=x+1; y=y-2}; {INV} // add black, remove two w. case 1; (x=x-1); {INV} // remove black case 2; (x=x-1); {INV} // remove black } {INV} {INV   x+y>1  ( ((odd(w)odd(y))  (even(w)even(y)) )  x+y1  x+y1  ( ((odd(w)odd(y))  (even(w)even(y)) )  x+y=1) }

3 Lösung 6.5 Vollständige Verifikation
// Vorbedingung P(V): a>0  b0 x = a; y = b; z = 1; // x=a  y=b  z=1  x>0  b0 { INV: zxy=ab  y0 } while y > 0 { {INV  y>0  (z*x/x)*xy=ab  y>0 } if odd(y) then z = z*x; { odd(y)  z/x*xy=ab  y>0  z*xy-1=ab  y>0 } // else { even(y)  z*xy =ab  y>0 }  { ( odd(y)  z*x(2(y div 2)+1)-1=ab  2(y div 2)+1>0 )  ( even(y)  z*x2(y div 2) =ab  2(y div 2) >0 ) } y = y div 2; // Ganzzahldivision { ( odd(y)  z*x(2y+1)-1=ab  2y+1>0  z*x2y=ab  2y0 )  ( even(y)  z*x2y =ab  2y >0  z*x2y=ab  2y>0 ) } x = x*x; { (odd(y)  z*xy=ab  2y0)  (even(y)  z*xy=ab  2y>0)  z*xy=ab  ((odd(y)2y0)  (even(y)2y0))  z*xy=ab  y0 } } { INV  (y0)  (z*xy=a*b)  (y=0)  z*x0=ab = Q(V) }


Herunterladen ppt "Lösung 6.3 Denksportaufgabe"

Ähnliche Präsentationen


Google-Anzeigen