nachklausurtutorium theoretische informatik - fscs.hhu.de file11 / 24 loop-berechenbarkeit...
TRANSCRIPT
![Page 1: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/1.jpg)
NachklausurtutoriumTheoretische Informatik
Karl Jochen Micheel & Christopher Happe
Sommersemester 2019
![Page 2: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/2.jpg)
2 / 24
Überblick
1. Grundlagen
2. Reguläre Sprachen
3. Kontextfreie Sprachen
4. Kontextsensitive und L0 Sprachen
5. Berechenbarkeit
6. Primitive und Partielle Rekursion
![Page 3: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/3.jpg)
3 / 24
Inhaltsverzeichnis
• Was ist Berechenbarkeit?
• Turing Berechenbarkeit
• LOOP-Berechenbarkeit
• WHILE-Berechenbarkeit
• GOTO-Berechenbarkeit
![Page 4: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/4.jpg)
4 / 24
Was ist Berechenbarkeit?
• Etwas, dass sich algorithmisch lösen lässt
• Formalisierung über• Turing-, WHILE-, GOTO-Berechenbarkeit
• μ-Rekursivität
• Weitere Formalisimen
• Alle diese Klassen sind äquivalent
![Page 5: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/5.jpg)
5 / 24
Turing-Berechenbarkeit
• Idee: Nutze eine Turing-Maschine um eine Funktion zu berechnen
• Unterschiede zu entscheidenden Turing-Maschinen:• Eingaben als Binärzahlen mit # getrennt (wenn f: ℕk→ℕ)
• Position des Kopfes am Ende bestimmt die Ausgabe
• Alles rechts des Kopfes bis ⬜ wird ausgegeben
• Nicht Halten → Undefinierte Ausgabe
![Page 6: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/6.jpg)
6 / 24
Beispiel
• f: ℕ → ℕ mit f: n → n + 1
• Die TM M = ({0, 1}, {0, 1, ⬜}, {z0, z1, z2, ze}, δ, z0, ⬜, {ze}) mit δwie in der Tabelle berechnet f
δ 0 1 ⬜
z0 (z0, 0, R) (z0, 1, R) (z1, ⬜, L)
z1 (z2, 1, L) (z1, 1, L) (z1, ⬜, N)
z2 (z2, 0, L) (z2, 1, L) (ze, ⬜, R)
![Page 7: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/7.jpg)
7 / 24
Übung
• Erstelle ein TM die f: ℕ → ℕ mit f: n → n – 1 berechnet
![Page 8: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/8.jpg)
8 / 24
Übung
• Erstelle ein TM die f: ℕ → ℕ mit f: n → n – 1 berechnet
• Die TM M = ({0, 1}, {0, 1, ⬜}, {z0, z1, z2, z3, ze}, δ, z0, ⬜, {ze}) mit δ wie in der Tabelle berechnet f
δ 0 1 ⬜
z0 (z0, 0, N) (z1, 1, R) (z0, ⬜, N)
z1 (z1, 0, R) (z1, 1, R) (z2, ⬜, L)
z2 (z2, 1, L) (z3, 0, L) (ze, ⬜, R)
z3 (z3, 0, L) (z3, 1, L) (ze, ⬜, R)
![Page 9: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/9.jpg)
9 / 24
LOOP-Berechenbarkeit
• Variablen: x0, x1, …
• Konstanten: 0, 1, 2, …
• Trennsymbole: ; und :=
• Operationen: + und –
• Befehle: LOOP, DO, END
![Page 10: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/10.jpg)
10 / 24
LOOP-Berechenbarkeit
1. xi := xj + c, xi := xj - c, xi := c für c ∈ ℕ sind LOOP-Programme.
2. Falls P1 und P2 LOOP-Programme sind, ist auch P1; P2
ein LOOP-Programm.
3. Falls P ein Loop-Programm ist, ist auchLOOP xi DO P ENDein LOOP-Programm. Dabei darf xi nicht im Schleifenkörper, also in P vorkommen.
![Page 11: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/11.jpg)
11 / 24
LOOP-Berechenbarkeit
• Variablen x1 bis xk werden mit den Eingabewerten initialisiert, die restlichen mit 0.
• xi := xj + c, xi := c werden wie üblich interpretiert.Bei xi := xj - c, werden negative Werte durch 0 ersetzt.
• Bei P1; P2 wird erst P1 und dann P2 ausgeführt.
• Bei LOOP xi DO P END wird P xi oft ausgeführt. xi wird dabei nicht verändert.
• Die Ausgabe des Programms steht am Ende in x0.
![Page 12: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/12.jpg)
12 / 24
LOOP-Berechenbarkeit
• Die Anweisung IF x1 = 0 THEN P ELSE P‘ ENDlässt sich leicht mit den LOOP Befehlen ausdrücken
• LOOP-Programme können keine Endlosschleifen enthalten, sind also immer total
![Page 13: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/13.jpg)
13 / 24
Beispiel
• Addition f: ℕ2 → ℕ mit f(n1, n2) = n1 + n2
x0 := x1 + 0LOOP x2 DOx0 := x0 + 1END
![Page 14: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/14.jpg)
14 / 24
Übung
• Multiplikation: f: ℕ2 → ℕ mit f(n1, n2) = n1 * n2 ist LOOP-berechenbar• Hinweis: Die Addition darf hierbei als LOOP-Programm
verwendet werden.
![Page 15: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/15.jpg)
15 / 24
Übung
• Multiplikation: f: ℕ2 → ℕ mit f(n1, n2) = n1 * n2 ist LOOP-berechenbar
x0 := 0LOOP x2 DOx0 := x0 + x1END
• Die Addition wird hier als LOOP-Programm verwendet.
![Page 16: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/16.jpg)
16 / 24
WHILE-Berechenbarkeit
1. Jedes LOOP-Programm ist ein WHILE-Programm
2. Falls P ein WHILE-Programm ist, dann ist auchWHILE xi ≠ 0 DO P END ein WHILE-Programm
3. Falls P1 und P2 WHILE-Programme sind, ist auchP1 ; P2 ein WHILE-Programm
![Page 17: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/17.jpg)
17 / 24
Beispiel
• Was berechnet folgendes WHILE-Programm?x0 := 1
WHILE x1 ≠ 0 DOx0 := x0 + x0
x1 := x1 - 1
END
![Page 18: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/18.jpg)
18 / 24
GOTO-Berechenbarkeit
• Folgen von markierten Anweisungen M1 : A1 ; M2 : A2 …
• Erlaubte Anweisungen sind• Zuweisung xi := xj + c, xi := xj - c, xi := c für c ∈ ℕ
• unbedingter Sprung GOTO Mi
• bedingter Sprung IF xi = c THEN GOTO Mi
• Abbruchanweisung HALT
![Page 19: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/19.jpg)
19 / 24
Beispiel
• Addition: f: ℕ2 → ℕ mit f(n1, n2) = n1 + n2
M1 : x0 := x1 + 0;
M2 : IF x2 = 0 THEN GOTO M6;
M3 : x0 := x0 + 1;
M4 : x2 := x2 – 1;
M5 : GOTO M2;
M6 : HALT;
![Page 20: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/20.jpg)
20 / 24
Beispiel
• Multiplikation: f: ℕ2 → ℕ mit f(n1, n2) = n1 * n2
M1 : x0 := 0;
M2 : IF x1 = 0 THEN GOTO M6;
M3 : x0 := x0 + x2;
M4 : x1 := x1 – 1;
M5 : GOTO M2;
M6 : HALT;
• Die Addition wird hier als GOTO-Programm verwendet.
![Page 21: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/21.jpg)
21 / 24
Übung
• Exponentialfunktion: exp: ℕ2 → ℕ mit exp(n1, n2) = 𝑛1𝑛2
ist GOTO-berechenbar
![Page 22: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/22.jpg)
22 / 24
Übung
• Exponentialfunktion: exp: ℕ2 → ℕ mit exp(n1, n2) = 𝑛1𝑛2
ist GOTO-berechenbarM1 : x0 := 1;
M2 : IF x2 = 0 THEN GOTO M6;
M3 : x0 := x0 * x1;
M4 : x2 := x2 – 1;
M5 : GOTO M2;
M6 : HALT;
![Page 23: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/23.jpg)
23 / 24
Äquivalenzen
![Page 24: Nachklausurtutorium Theoretische Informatik - fscs.hhu.de file11 / 24 LOOP-Berechenbarkeit •Variablen x 1 bis x k werden mit den Eingabewerten initialisiert, die restlichen mit 0](https://reader030.vdocuments.pub/reader030/viewer/2022041302/5e136e99ffb95218de1bddf2/html5/thumbnails/24.jpg)
24 / 24
Fragen?