50 likes | 211 Views
Übung 6.2 Einfache Verifikation. Gegeben ist folgender Algorithmus {a<0, b>0, c>0} // Vorbedingung P(a,b,c) a=b; d=b-a; if (c == 0) then d=5; else d=d+1; Geben Sie eine Nachbedingung Q(d) für die Variable d an
E N D
Übung 6.2 Einfache Verifikation • Gegeben ist folgender Algorithmus {a<0, b>0, c>0} // Vorbedingung P(a,b,c) a=b; d=b-a; if (c == 0) thend=5; else d=d+1; • Geben Sie eine Nachbedingung Q(d) für die Variable d an • Beweisen Sie dass sich durch den Algorithmus aus P(a,b,c) diese Nachbedingung Q(d) ableiten lässt • Schreiben Sie einen zweiten Algorithmus, der ebenfalls die Nachbedingung Q(d) aus P(a,b,c) ableiten kann • Verifizieren Sie Ihren Algorithmus
Übung 6.3 Denksportaufgabe • Gegeben sei folgendes Verfahren In einem Topf seien s schwarze und w weiße Kugeln - insgesamt mindestens eine. Solange mindestens zwei Kugeln im Topf sind, nimm zwei beliebige Kugeln heraus. Falls Sie gleiche Farbe haben, wirf beide weg und lege eine neue schwarze Kugel in den Topf. Falls sie verschiedene Farben haben, wirf die schwarze weg und lege die weiße zurück in den Topf. • Welche Farbe hat die letzte Kugel • Welche Aussage - die einen Hinweis auf die Antwort gibt - gilt vor, in und nach der Schleife (Invariante) • Terminiert die Schleife ? Begründen Sie ihre Antwort.
Übung 6.4 Invariante • Betrachten Sie nochmals das Verfahren aus der vorgegangenen Übung: In einem Topf seien s schwarze und w weiße Kugeln - insgesamt mindestens eine. Solange mindestens zwei Kugeln im Topf sind, nimm zwei beliebige Kugeln heraus. Falls Sie gleiche Farbe haben, wirf beide weg und lege eine neue schwarze Kugel in den Topf. Falls sie verschiedene Farben haben, wirf die schwarze weg und lege die weiße zurück in den Topf. • Beschreiben Sie das Verfahren als Algorithmus • Das „Nehmen“ dürfen Sie als Block voraussetzen. • Entwerfen Sie den Kopf dieses Blocks, • Beschreiben Sie seine Parameter • beschreiben Sie sein Verhalten in Form einer Vor- und Nachbedingung • Bestimmen Sie die Invariante • Beweisen Sie die Korrektheit Ihrer Nachbedingung
Übung 6.6 Schranken • Angenommen, Ihr Algorithmus habe einen Aufwand vong(n) = 5n3 + n + 1000 für alle n • Geben sie eine obere Schranke O(g(n)) an. • Beweisen Sie, dass ihre Schranke tatsächlich eine obere Schranke ist. • Konstruieren Sie einen Graphen fü die beiden Funktionen g(n) O(g(n) so, dass der Schnittpunkt deutlich wird. • Geben Sie eine untere Schranke an • Sie haben zusätzlich einen Algorithmus mit O(2n) Aufwand. Vergleichen Sie diesen Algorithmus mit dem Algorithmus aus 1. • Welches ist der „schnellere“ Algorithmus ? • Begründen Sie Ihre Antwort quantitativ
Übung 6.8 Aufwand • Gegeben ist folgender Algorithmus: do (list:*liste) {i:integer;for i=1 to no_of_elements(list) { remove_last_element(list); do (list) // call list with one element less} • Geben Sie den Aufwand an. • Belegen Sie Ihre Antwort rechnerisch • Gegeben ist folgender Algorithmus for i=1 to n { j=1; while (j<i) { j = j+2; }} • Geben Sie den Aufwand an. • Belegen Sie Ihre Antwort rechnerisch