11.10.2013 Aufrufe

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

4.1. Formale <strong>Algorithmen</strong>modelle<br />

Ist Ý , so wird Ý ÜÝ Ü Ü Ü erreicht <strong>und</strong><br />

das Ergebnis ist Ü ; bei Ý werden erneut die Befehle 5–11abgearbeitet.<br />

Folglich bricht der Prozeß mit Ý Ü Ý Ü Ü Ü Ý <br />

(wegen Ý ) ab.<br />

Somit ist die berechnete Funktion<br />

Ü Ý Ü Ý <br />

Dies Beispiel zeigt daher, daß neben den arithmetischen Gr<strong>und</strong>operationen auch<br />

das Potenzieren eine durch Registermaschinen berechenbare Funktion ist.<br />

Beispiel 4.3 Offensichtlich berechnet die Registermaschine Å mit dem Programm<br />

1 LOAD 1<br />

2 IF Ç GOTO 4<br />

3 GOTO 3<br />

4 END<br />

die Funktion<br />

Ü <br />

<br />

falls Ü <br />

<strong>und</strong>efiniert sonst<br />

denn nur in dem Fall, daß die Eingabe 0 ist, wird zur END-Anweisung gesprungen,<br />

ansonsten werden die Befehle 2 <strong>und</strong> 3 abwechselnd unendlich lange hintereinander<br />

ausgeführt <strong>und</strong> damit kein Ergebnis produziert.<br />

Dieses Beispiel zeigt, daß die von Registermaschinen berechneten Funktionen<br />

partiell sein können, d.h. ihr Definitionsbereich ist eine echte Teilmenge von Æ Ò .<br />

Beispiel 4.4 Wir wollen nun eine Registermaschine Å konstruieren, die die Funktion<br />

<br />

Ü <br />

falls Ü keine Primzahl ist<br />

falls Ü eine Primzahl ist<br />

berechnet.<br />

Eine natürliche Zahl Ü ist bekanntlich genau dann eine Primzahl, wenn Ü <br />

ist <strong>und</strong> nur die Teiler <strong>und</strong> Ü besitzt.<br />

Hieraus resultiert folgendes Vorgehen: Wir überprüfen zuerst, ob die Eingabe<br />

Ü ist. Sollte dies der Fall sein, so ist Ü keine Primzahl <strong>und</strong> wir schreiben in das<br />

zweite Speicherregister eine 0 <strong>und</strong> beenden die Arbeit. Ist dagegen Ü , so testen<br />

wir der Reihe nach, ob Ü durch Ü teilbar ist. Gibt einer dieser Tests ein<br />

positives Resultat, so ist Ü keine Primzahl; fallen dagegen alle diese Tests negativ<br />

aus, so ist Ü prim.<br />

Nachfolgendes Programm realisiert diese Idee (zur Illustration geben wir in der<br />

rechten Spalte kurze Erläuterungen zu den Befehlen):<br />

<br />

73

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!