• Keine Ergebnisse gefunden

Schl¨ usselw¨ orter: WHILE DO END

N/A
N/A
Protected

Academic year: 2021

Aktie "Schl¨ usselw¨ orter: WHILE DO END"

Copied!
19
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

1.2 WHILE-Berechenbarkeit

WHILE-Programme sind wie folgt definiert:

Variablen: x 1 , x 2 , x 3 , . . . Konstanten: 0, 1, 2, . . . Trennsymbole: ; :=

Operatoren: + - 6=

Schl¨ usselw¨ orter: WHILE DO END

Info IV 1.2 WHILE-Berechenbarkeit 190/206

c

Ernst W. Mayr

(2)

Der Aufbau von WHILE-Programmen:

x i := c, x i := x j + c, x i := x j − c sind WHILE-Programme Die Interpretation dieser Ausdr¨ ucke erfolgt, wie ¨ ublich, mit der Einschr¨ ankung, dass x j − c als 0 gewertet wird, falls c > x j . Sind P 1 und P 2 WHILE-Programme, so ist auch

P 1 ; P 2 ein WHILE-Programm.

Interpretation: F¨ uhre zuerst P 1 und dann P 2 aus.

Ist P ein WHILE-Programm, so ist auch WHILE x i 6= 0 DO P END ein WHILE-Programm.

Interpretation: F¨ uhre P solange aus, bis x i den Wert 0 hat.

Achtung: Zuweisungen an x i im Innern von P beeinflussen dabei den Wert von x i !

Info IV 1.2 WHILE-Berechenbarkeit 191/206

c

Ernst W. Mayr

(3)

Satz 117

Ist eine Funktion WHILE-berechenbar, so ist sie auch Turing-berechenbar.

Beweis:

Die Turingmaschine merkt sich den Programmz¨ ahler des

WHILE-Programms sowie die aktuellen Werte aller Variablen. Der Platz daf¨ ur muss notfalls immer wieder angepasst werden.

Wir werden sp¨ ater auch die umgekehrte Aussage des obigen Satzes zeigen.

Info IV 1.2 WHILE-Berechenbarkeit 192/206

c

Ernst W. Mayr

(4)

1.3 GOTO-Berechenbarkeit

GOTO-Programme sind wie folgt definiert:

Variablen: x 1 , x 2 , x 3 , . . . Konstanten: 0, 1, 2, . . . Trennsymbole: ; :=

Operatoren: + - =

Schl¨ usselw¨ orter: IF THEN GOTO HALT

Info IV 1.3 GOTO-Berechenbarkeit 193/206

c

Ernst W. Mayr

(5)

Ein GOTO-Programm ist eine Folge von markierten Anweisungen M 1 : A 1 ; M 2 : A 2 ; . . . ; M k : A k

wobei die A i Anweisungen und die M i Zielmarken f¨ ur Spr¨ unge sind.

Als Anweisungen k¨ onnen auftreten:

Wertzuweisung: x i := x j ± c unbedingter Sprung: GOTO M i

bedingter Sprung: IF x j = c THEN GOTO M i

Stopanweisung: HALT

Dabei ist c jeweils eine (beliebige) Konstante.

Info IV 1.3 GOTO-Berechenbarkeit 194/206

c

Ernst W. Mayr

(6)

Satz 118

Jedes WHILE-Programm kann durch ein GOTO-Programm simuliert werden.

Beweis:

Ersetze jede WHILE-Schleife WHILE x i 6= 0 DO P END durch folgendes Konstrukt:

M 1 : IF x i = 0 THEN GOTO M 2 P ;

GOTO M 1

M 2 : . . .

Info IV 1.3 GOTO-Berechenbarkeit 195/206

c

Ernst W. Mayr

(7)

Satz 119

Jedes GOTO-Programm kann durch ein WHILE-Programm simuliert werden.

Info IV 1.3 GOTO-Berechenbarkeit 196/206

c

Ernst W. Mayr

(8)

Beweis:

Gegeben sei das GOTO-Programm

M 1 : A 1 ; M 2 : A 2 ; . . . ; M k : A k

Wir simulieren dies durch ein WHILE-Programm mit genau einer WHILE-Schleife:

c := 1;

WHILE c 6= 0 DO

IF c = 1 THEN A 0 1 END;

IF c = 2 THEN A 0 2 END;

.. .

IF c = k THEN A 0 k END;

END

Info IV 197/206

c

Ernst W. Mayr

(9)

Beweis:

wobei

A 0 i :=

 

 

 

 

 

 

x j := x l ± b; c := c + 1 falls A i = x j := x l ± b

c := ` falls A i = GOTO M `

IF x j = b THEN c := ` falls A i = IF x j = b THEN

ELSE c := c + 1 END GOTO M `

c := 0 falls A i = HALT

Es bleibt als ¨ Ubungsaufgabe ¨ uberlassen, die IF-Anweisungen ebenfalls durch WHILE-Schleifen zu ersetzen.

Info IV 1.3 GOTO-Berechenbarkeit 197/206

c

Ernst W. Mayr

(10)

Satz 120

Aus Turing-Berechenbarkeit folgt GOTO-Berechenbarkeit.

Beweis:

Die Konfiguration (α, q, β) einer (det.) 1-Band-TM wird in den Variablen x l , x Q , x r codiert. Die Zeichenreihen α und β werden als Zahlen (zu einer geeigneten Basis) aufgefasst, mit der

niedrigstwertigen Ziffer bei der Position des Lese-/Schreibkopfes.

Jedes Tupel der ¨ Ubergangsfunktion der TM wird durch ein geeignetes kleines Programmst¨ uck simuliert. Dabei werden Operationen wie Multiplikation mit, Division durch und Modulorechnung zur Basis ben¨ otigt.

Info IV 1.3 GOTO-Berechenbarkeit 198/206

c

Ernst W. Mayr

(11)

1.4 Primitiv-rekursive Funktionen

Betrachte die kleinste Klasse der Funktion N k 0 → N 0 , f¨ ur die gilt:

1

Sie enth¨ alt die konstanten Funktionen.

2

Sie enth¨ alt die Nachfolgerfunktionen: n 7→ n + 1.

3

Sie enth¨ alt die Projektionsfunktionen:

proj k,i : N k 0 3 (x 1 , . . . , x k ) 7→ x i ∈ N 0

4

Sie ist abgeschlossen unter Komposition.

5

Sie ist abgeschlossen unter primitiver Rekursion, d.h. mit g : N n 0 → N 0

h : N n+2 0 → N 0

ist auch

f (0, y 1 , . . . , y n ) := g(y 1 , . . . , y n )

f(m + 1, y 1 , . . . , y n ) := h(f (m, y 1 , . . . , y n ), m, y 1 , . . . , y n ) (primitive Rekursion) in der Klasse (und sonst nichts).

Info IV 1.4 Primitiv-rekursive Funktionen 199/206

c

Ernst W. Mayr

(12)

Die soeben definierte Funktionenklasse sind die primitiv-rekursiven Funktionen.

Beispiel 121

Die folgenden Funktionen sind primitiv-rekursiv:

1

(x, y) 7→ x + y;

2

(x, y) 7→ x ∗ y;

3

(x, y) 7→ max{x − y, 0};

4

x 7→ 2 x ;

5

x 7→ 2 2

2

...2

(Turm der H¨ ohe x).

Info IV 1.4 Primitiv-rekursive Funktionen 200/206

c

Ernst W. Mayr

(13)

Satz 122

Jede primitiv-rekursive Funktion ist total.

Beweis:

Induktion ¨ uber den Aufbau einer primitiv-rekursiven Funktion.

Satz 123

Jede primitiv-rekursive Funktion ist berechenbar.

Beweis:

Induktion ¨ uber den Aufbau einer primitiv-rekursiven Funktion.

Korollar 124

Die primitiv-rekursiven Funktionen sind eine echte Teilklasse der berechenbaren totalen Funktionen.

Es gibt nicht-totale berechenbare Funktionen.

Info IV 1.4 Primitiv-rekursive Funktionen 201/206

c

Ernst W. Mayr

(14)

Definition 125

Sei P (x) ein Pr¨ adikat, d.h. ein logischer Ausdruck, der in Abh¨ angigkeit von x ∈ N 0 den Wert true oder false liefert. Dann k¨ onnen wir diesem Pr¨ adikat in nat¨ urlicher Weise eine 0-1 Funktion

P ˆ : N 0 → {0, 1}

zuordnen, indem wir definieren, dass P ˆ (x) = 1 genau dann, wenn P(x) = true ist.

Wir nennen P (x) primitiv-rekursiv genau dann, wenn P(x) ˆ primitiv-rekursiv ist.

Info IV 1.4 Primitiv-rekursive Funktionen 202/206

c

Ernst W. Mayr

(15)

Definition 126

Beschr¨ ankter max-Operator: Zu einem Pr¨ adikat P (x) definieren wir q : N 0 → N 0

n 7→

( 0 falls ¬P (x) f¨ ur alle x < n max{x < n; P (x)} sonst

Dann gilt: Ist P primitiv-rekursiv, so auch q, denn:

q(0) = 0

q(n + 1) =

( n falls P(n) q(n) sonst

= q(n) + ˆ P(n) ∗ (n − q(n))

Info IV 1.4 Primitiv-rekursive Funktionen 203/206

c

Ernst W. Mayr

(16)

Definition 127

Beschr¨ ankter Existenzquantor: Zu einem Pr¨ adikat P (x) definieren wir ein neues Pr¨ adikat Q(x) mittels:

Q(n) ist genau dann true, wenn ein x < n existiert, so dass P(x) = true.

Dann gilt: Ist P primitiv-rekursiv, so auch Q, denn:

Q(0) = 0 ˆ

Q(n ˆ + 1) = ˆ P (n) + ˆ Q(n) − P ˆ (n) ∗ Q(n) ˆ

Info IV 1.4 Primitiv-rekursive Funktionen 204/206

c

Ernst W. Mayr

(17)

Beispiel 128

Zur bijektiven Abbildung von 2-Tupeln (bzw. n-Tupeln bei iterierter Anwendung der Paarbildung) nat¨ urlicher Zahlen in die Menge der nat¨ urlichen Zahlen verwendet man eine Paarfunktion, z.B.:

0 1 2 3 4 · · · n 2

0 0 2 5 9 14

1 1 4 8 13

2 3 7 12

3 6 11

.. . n 1

Info IV 205/206

c

Ernst W. Mayr

(18)

Beispiel 128

Zur bijektiven Abbildung von 2-Tupeln (bzw. n-Tupeln bei iterierter Anwendung der Paarbildung) nat¨ urlicher Zahlen in die Menge der nat¨ urlichen Zahlen verwendet man eine Paarfunktion, z.B.:

Betrachte: p : N 2 0 → N 0 mit

p(n 1 , n 2 ) := (n

1

+n

2

)(n 2

1

+n

2

+1) + n 2

c 1 : N 0 → N 0

c 1 (n) := s − (n − s(s+1) 2 ); wobei s := max{i; i(i+1) 2 ≤ n}

c 2 : N 0 → N 0

c 2 (n) := n − s(s+1) 2 , s wie oben

Info IV 1.4 Primitiv-rekursive Funktionen 205/206

c

Ernst W. Mayr

(19)

Satz 129

1

p stellt eine primitiv-rekursive, bijektive Paarfunktion von N 2 0 nach N 0 mit den Umkehrfunktionen c 1 und c 2 dar.

2

Die Umkehrfunktionen c 1 , c 2 sind ebenfalls primitiv-rekursiv.

Beweis:

Ubungsaufgabe. ¨

Info IV 1.4 Primitiv-rekursive Funktionen 206/206

c

Ernst W. Mayr

Referenzen

ÄHNLICHE DOKUMENTE

Die Klassen nahmen jeweils mit einem Team daran teil, manchmal gehörten nur drei oder vier Schüler, manchmal aber auch sechs oder sieben Schüler zum Team. Das beste Team gewann

Wenn man eine Zahl a mit einem Bruche % zu multipliziren hat, so ist eine Multiplikation‘ von a mit b und. eine Division von a.]; durch 0 vorzunehmen, um das Resultat 93 zu finden.

Wenn man eine Zahl a mit einem Bruche % zu multipliziren hat, so ist eine Multiplikation‘ von a mit b und. eine Division von a.]; durch 0 vorzunehmen, um das Resultat 93 zu finden.

www.informatikzentrale.de.. Syntax von

Der Zähler verrät dir die Spalte (nach rechts) und der Nenner die Zeile (nach oben), in der der passende Lösungsbuchstabe steht..

Nimm zuerst den Zehner mal.. Multipliziere dann

Die Nutzung ist nur für den genannten Zweck gestattet, nicht jedoch für einen weiteren kommerziellen Gebrauch, für die Weiterleitung an Dritte oder für die Veröffentlichung im

Neben den genannten Kompetenzen des Bereiches „Rechenoperationen verstehen und beherrschen“ wird auch ein Aspekt des Bereiches „In Kontexten rechnen“ der inhaltsbe-