loop-programme: syntaktische komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf ·...
TRANSCRIPT
![Page 1: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/1.jpg)
LOOP-Programme: Syntaktische Komponenten
LOOP-Programme bestehen aus folgenden Zeichen (syntaktischen Kompo-nenten):
• Variablen: x0 x1 x2 . . .
• Konstanten: 0 1 2 . . .
• Operationssymbole: + −
• Trennsymbole: ; :=
• Schlusselworter: LOOP DO END
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 41
![Page 2: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/2.jpg)
LOOP-Programme: Syntax
Die Syntax von LOOP-Programmen wird wie folgt induktiv definiert.
(i) Jede Wertzuweisung der Form
xi := xj + c bzw. xi := xj − c
ist ein LOOP-Programm, wobei c eine Konstante ist.
(ii) Sind P1, P2 LOOP-Programme, dann sind auch
P1;P2 sowie LOOP xi DO P1 END
LOOP-Programme.
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 42
![Page 3: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/3.jpg)
LOOP-Programme: Semantik, Teil i)
(i) Jede Wertzuweisung der Form xi := xj+c wird wie “ublich” interpretiert:der neue Wert der Variablen xi berechnet sich als Summe des Wertesder Variablen xj und der Konstanten c, wobei der Wert in der Variablenxj erhalten bleibt.
Die Wertzuweisung xi := xj − c wird analog interpretiert, wobei sichaber die Werte nach der sogenannten modifizierten Differenz “
q− ”, diewie folgt definiert ist
n1q− n2 =
{n1 − n2 falls n1 ≥ n2,
0 sonst,
berechnen.
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 43
![Page 4: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/4.jpg)
LOOP-Programme: Semantik, Teil ii)
ii) Ein LOOP-Programm der Form P1;P2 soll die Hintereinanderausfuhrungder Programme P1 und P2 bedeuten, also zuerst wird das Programm P1,dann das Programm P2 ausgefuhrt.
Ein LOOP-Programm der Form LOOP xi DO P1 END bedeutet, dassdas Programm P1 sooft ausgefuhrt wird, wie der Wert der Variablen xi
zu Beginn angibt. Anderungen des Wertes der Variablen xi haben alsokeinen Einfluss auf die Anzahl der Wiederholungen.
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 44
![Page 5: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/5.jpg)
LOOP-berechenbare Funktionen
Eine Funktion f : Nk → N, k ∈ N, heißt LOOP-berechenbar, falls es einLOOP-Programm P gibt, das f in dem Sinne berechnet, dass P ,
gestartet mit n1, n2, . . . , nk in den Variablen x1, x2, . . . , xk und 0 in denrestlichen Variablen,
mit dem Wert f(n1, n2, . . . , nk) in der Variablen x0 stoppt.
Schreibweise: f = fkP
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 45
![Page 6: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/6.jpg)
Erstes Beispiel einer LOOP-berechenbaren Funktion
Gegeben sei das LOOP-Programm
x0 := x1 + 0;LOOP x2 DO x0 := x0 + 1 END
Man erkennt leicht, dass das Programm mit dem Wert der Summe derAnfangsbelegungen der Variablen x1 und x2 in der Variablen x0 stoppt. Esberechnet also die Addition
+: N2 → N vermoge (x1, x2) 7→ +(x1, x2) = x1 + x2.
Also ist die Addition LOOP-berechenbar.
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 46
![Page 7: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/7.jpg)
Zweites Beispiel einer LOOP-berechenbaren Funktion
Gegeben sei das LOOP-Programm
LOOP x2 DOLOOP x1 DO x0 := x0 + 1 ENDEND
Eine genaue Betrachtung des Programms zeigt, dass damit die Funktion
· : N2 → N vermoge (x1, x2) 7→ ·(x1, x2) = x1 · x2,
berechnet wird. Die Multiplikation ist damit also LOOP-berechenbar.
Man beachte, dass die Anfangsbelegung der Variablen x0 naturlich lautDefinition 0 ist. Das wird hier gebraucht und verwendet.
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 47
![Page 8: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/8.jpg)
Drittes Beispiel einer LOOP-berechenbaren Funktion
Das Konstrukt
IF x1 = 0 THEN A ELSE B END
wird durch das LOOP-Programm
x2 := 1; x3 := 0;LOOP x1 DO x2 := 0; x3 := 1 END;LOOP x2 DO A END;LOOP x3 DO B END
simuliert. Dabei sind die Variablen x2 und x3 naturlich nicht in den Pro-grammen A und B enthalten.
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 48
![Page 9: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/9.jpg)
Aussagen uber LOOP-berechenbarer Funktionen
• Jede von einem LOOP-Programm berechnete Funktion ist total.(Da die Anzahl der Ablaufe einer LOOP-Schleife endlich ist, stoppt dasProgramm bei jeder Eingabe.)
• Es gibt (intuitiv) berechenbare Funktionen, die nicht LOOP-berechenbarsind.(z.B. jede berechenbare Funktion, die nicht total ist)
• Es gibt totale und (intuitiv) berechenbare Funktionen, die nicht LOOP-berechenbar sind.
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 49
![Page 10: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/10.jpg)
WHILE-Programme: Syntaktische Komponenten
WHILE-Programme bestehen aus folgenden Zeichen (syntaktischen Kom-ponenten):
• Variablen: x0 x1 x2 . . .
• Konstanten: 0 1 2 . . .
• Trennsymbole: ; := 6=
• Operationssymbole: + −
• Schlusselworter: LOOP WHILE DO END
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 50
![Page 11: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/11.jpg)
WHILE-Programme: Syntax
Die Syntax von WHILE-Programmen wird wie folgt induktiv definiert.
(i) Jede Wertzuweisung der Form
xi := xj + c bzw. xi := xj − c
ist ein WHILE-Programm, wobei c eine Konstante ist.
(ii) Sind P1, P2 WHILE-Programme, dann sind auch
P1;P2 und LOOP xi DO P1 END und WHILE xi 6= 0 DO P1 END
WHILE-Programme.
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 51
![Page 12: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/12.jpg)
WHILE-Programme: Semantik, Teil i)
Jede Wertzuweisung der Form xi := xj + c wird wie “ublich” interpretiert:der neue Wert der Variablen xi berechnet sich als Summe des Wertes derVariablen xj und der Konstanten c, wobei der Wert in der Variablen xj
erhalten bleibt.
Die Wertzuweisung xi := xj − c wird analog interpretiert, wobei sich aberdie Werte nach der sogenannten modifizierten Differenz “
q− ”, die wie folgtdefiniert ist
n1q− n2 =
{n1 − n2 falls n1 ≥ n2,
0 sonst,
berechnen.
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 52
![Page 13: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/13.jpg)
WHILE-Programme: Semantik, Teil ii)
Ein WHILE-Programm der Form P1;P2 soll die Hintereinanderausfuhrungder Programme P1 und P2 bedeuten, also zuerst wird das Programm P1,dann das Programm P2 ausgefuhrt.
Ein WHILE-Programm der Form LOOP xi DO P1 END bedeutet, dassdas Programm P1 sooft ausgefuhrt wird, wie der Wert der Variablen xi zuBeginn angibt. Anderungen des Wertes der Variablen xi haben also keinenEinfluss auf die Anzahl der Wiederholungen.
Ein WHILE-Programm der Form WHILE xi 6= 0 DO P1 END bedeutet,dass das Programm P1 solange ausgefuhrt wird, wie der Wert der Variablenxi ungleich Null ist. Es findet also vor jedem erneuten Durchlauf desProgramms P1 eine Abfrage der Variablen xi statt.
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 53
![Page 14: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/14.jpg)
WHILE-berechenbare Funktionen
Eine Funktion f : Nk → N, k ∈ N, heißt WHILE-berechenbar, falls es einWHILE-Programm P gibt, das f in dem Sinne berechnet, dass P ,
gestartet mit n1, n2, . . . , nk in den Variablen x1, x2, . . . , xk und 0 in denrestlichen Variablen,
mit dem Wert f(n1, n2, . . . , nk) in der Variablen x0 stoppt.
Ist f(n1, n2, . . . , nk) dagegen nicht definiert, so stoppt P nicht.
Schreibweise: f = fkP
Folgerung: Jede LOOP-berechenbare Funktion ist WHILE-berechenbar.
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 54
![Page 15: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/15.jpg)
1. Beispiel einer WHILE-berechenbaren Funktion
Das WHILE-Programm
x3 := x1 − 5;WHILE x3 6= 0 DO x1 := x1 + 1 END;LOOP x1 DO x0 := x0 + 1 END;LOOP x2 DO x0 := x0 + 1 END
berechnet die Funktion f : N2 → N vermoge
f(x1, x2) =
{x1 + x2 falls x1 ≤ 5,
nicht definiert sonst.
Folgerung: Es gibt WHILE-berechenbare Funktionen, die nicht LOOP-berechenbar sind.
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 55
![Page 16: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/16.jpg)
2. Beispiel einer WHILE-berechenbaren Funktion
Das WHILE-Programm
x1 := x1 + 1;WHILE x1 6= 0 DO
x0 := x0 + 1;LOOP x2 DO x1 := x1 − 1 END
END;x0 := x0 − 1
berechnet die ganzzahlige Division div : N2 → N vermoge
x1div x2 =
{bx1
x2c falls x2 > 0,
nicht definiert sonst.
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 56
![Page 17: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/17.jpg)
Aquivalenz vonWHILE-Programmen und Turingmaschinen
Satz:
1. Jede WHILE-berechenbare Funktion ist Turing-berechenbar.
2. Jede Turing-berechenbare Funktion ist WHILE-berechenbar.
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 57
![Page 18: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/18.jpg)
Simulation: WHILE-Programm durch Turingmaschine
Mehrband-Turingmaschinen konnen
• Wertzuweisungen ausfuhren (wobei ein Band einer Variablen entspricht),
• Konstanten addieren und subtrahieren,
• hintereinander ausgefuhrt werden,
• WHILE-Schleifen ausfuhren.
Damit kann man ein WHILE-Programm (mit k Variablen) durch eine(k-Band-)Turingmaschine simulieren.
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 58
![Page 19: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/19.jpg)
Simulation: Turingmaschine durch WHILE-Programm – 1
Gegeben sei TM M = (Z,Σ,Γ, δ, z1,�, {zk}), wobei Z = {z1, z2, . . . , zk},Γ = {a1, a2, . . . , am}. Sei außerdem b eine Zahl mit b > m.
Eine Turingmaschinen-Konfiguration
ai1ai2 . . . aipz`aj1aj2 . . . ajq
wird durch drei Programmvariablen x, y, z mit den Werten
x = (i1i2 . . . ip)b, y = (jqjq−1 . . . j1)b, z = `
reprasentiert; dabei bedeutet (i1i2 . . . ip)b die Zahl i1i2 . . . ip in b-narerDarstellung, also
x =p∑
µ=1
iµ · bp−µ, y =q∑
µ=1
jµ · bµ−1
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 59
![Page 20: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/20.jpg)
Simulation: Turingmaschine durch WHILE-Programm – 2
Stuktur des WHILE-Programmes mit Eingabe und Ausgabe auf y
z := 1;WHILE z < k DO
a := y mod b; z′ := z;IF(z′ = 1 AND a = 1) THEN P1,1 END;IF(z′ = 1 AND a = 2) THEN P1,2 END;...
IF(z′ = k − 1 AND a = m) THEN Pk−1,m END;END
Das Teilprogramm Pi,j simuliert die Konfigurationsanderung fur Zustand zi
und Bandsymbol aj.
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 60
![Page 21: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/21.jpg)
Simulation: Turingmaschine durch WHILE-Programm – 3
Stuktur des Teilprogrammes Pi,j fur δ(zi, aj) = (zi′, aj′, L)
z := i′;y := y div b;y := b ∗ y + j′;y := b ∗ y + (x mod b);x := x div b
Entsprechend kann man sich die anderen Falle vorstellen.
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 61
![Page 22: LOOP-Programme: Syntaktische Komponententheo.cs.ovgu.de/lehre06s/ti_iif/folien/folien02.pdf · LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i:= x j+c wird wie](https://reader033.vdocuments.net/reader033/viewer/2022042318/5f06f2a57e708231d41a8875/html5/thumbnails/22.jpg)
Die Churchsche These
Jede intuitiv berechenbare Funktion ist Turing-berechenbar.
• Die Churchsche These kann naturgemaß nicht bewiesen werden.
• Sie wird aber durch die Tatsache gestutzt, dass zahlreiche weitere Modelleder Berechenbarkeit aquivalent zur Turing-Berechenbarkeit sind, z.B.
– Post- und Markov-Algorithmen,– Registermaschinen,– partiell-rekursive Funktionen.
R. Stiebe: Theoretische Informatik fur ING-IF und Lehrer, 2006 62