next up previous contents
Next: Gesamtalgorithmus Up: Partielle Korrektheit Previous: Partielle Korrektheit

Euklidischer Algorithmus

  Um zu zeigen, daß der euklidische Algorithmus korrekt in ein Programm umgesetzt worden ist, reicht es zu zeigen, daß die Invariante
align120
vor Beginn der Schleife, zu jedem Zeitpunkt in der Schleife und nach Beendigung der Schleife gilt.

Vor Beginn der Schleife gilt sie, sofern der Nutzer der Methode sich an die Vorbedingung
align124
gehalten hat und der Funktion ein Wertepaar größer Null übergeben hat. Die vorher abgearbeitete Initialisierung der lokalen Variablen führt zu einem Zustand, in dem gilt:
align127
Verknüpft man diese beiden Bedingungen, die zu diesem Zeitpunkt selbstverständlich gelten müssen, erhält man die Invariante
align120
und hat somit gezeigt, daß sie bei korrekter Nutzung der Methode, sprich Einhaltung der Vorbedingung durch den Nutzer, vor Beginn der Schleife gilt.

In der Schleife gilt sie offensichtlich zu jedem Zeitpunkt, da der euklidische Algorithmus korrekt umgesetzt wurde. Es wird, wie in der Beschreibung des Algorithmus unter gif verlangt, vor Beginn der Schleife der Variablen tex2html_wrap278 der Rest der Division von tex2html_wrap272 durch tex2html_wrap273 zugewiesen. Im weiteren wird, solange tex2html_wrap278 ungleich Null ist, der Variablen tex2html_wrap272 der Wert von tex2html_wrap273 zugewiesen, der bisherige Divisor also zum Dividenden gemacht, und tex2html_wrap273 der Wert von tex2html_wrap278, der bisherige Rest also zum Divisor. Der neue Rest tex2html_wrap278 wird nun wiederum der Rest der Division von tex2html_wrap272 durch tex2html_wrap273. Der euklidische Algorithmus wird also in allen Punkten umgesetzt und daher gilt auch hier die Invariante
align120

Auch nach der Beendigung der Schleife gilt die Invariante, da die Schleife bei Nullwerden des Restes tex2html_wrap278 abbricht, damit
align141
gilt, die Variablen tex2html_wrap272 und tex2html_wrap273 dabei jedoch immernoch größer als Null sein müssen, womit
align124
gilt und aufgrund der Eigenschaft des euklidischen Algorithmus
align146
gelten muß. Die Verknüpfung aller drei zwangsläufig zutreffenden Bedingungen ergibt wieder die Invariante
align120

Durch Verknüpfung dieser mit der Negation der Schleifenbedingung ergibt sich
align155
was die Nachbedingung darstellt. Da, wie oben gezeigt, der euklidische Algorithmus korrekt umgesetzt wurde, muß hieraus nun folgen
align162


next up previous contents
Next: Gesamtalgorithmus Up: Partielle Korrektheit Previous: Partielle Korrektheit

Michael Weiser
Fre Jan 7 00:42:53 CET 2000