24
Nachklausurtutorium Theoretische Informatik Karl Jochen Micheel & Christopher Happe Sommersemester 2019

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

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

24 / 24

Fragen?