Grundlagen der Theoretischen Informatik II

1 Grundlagen der Theoretischen Informatik II Till Mossakowski Fakult¨ at f¨ ur Informatik Otto-von-Guericke-Universit¨ at Magdeburg Sommersemester 2...
Author: Hannah Krämer
8 downloads 2 Views 155KB Size
1

Grundlagen der Theoretischen Informatik II Till Mossakowski Fakult¨ at f¨ ur Informatik Otto-von-Guericke-Universit¨ at Magdeburg

Sommersemester 2015

2

Pr¨adikate Eine Funktion, die nur die Werte 0 und 1 annimmt, nennen wir Pr¨adikat. Beispiele: iszero(0) = 1 iszero(m + 1) = 0 positive(0) = 0 positive(m + 1) = 1 greater–than–or–equal(n, m) = iszero(minus(m, n))

3

Operationen auf Pr¨adikaten Negation ( ¬ ): Disjunktion ( ∨ ): Konjunktion ( ∧ ):

minus(1, p(n1 , . . . , nk )) positive(p(n1 , . . . , nk ) + q(n1 , . . . , nk )) p(n1 , . . . , nk ) · q(n1 , . . . , nk )

Beispiel: equal(m, n) = greater–than–or–equal(n, m) ∧ greater–than–or–equal(m, n)

4

Funktionsdefinition durch endliche Fallunterscheidung  g(n1 , . . . , nk ) falls p(n1 , . . . , nk ) f (n1 , . . . , nk ) = h(n1 , . . . , nk ) sonst f (n1 , . . . , nk ) = p(n1 , . . . , nk ) · g(n1 , . . . , nk ) + (¬p(n1 , . . . , nk )) · h(n1 , . . . , nk )

5

Beispiel:

Division (div) mit Rest (rem)

rem(0, n) = 0  0 f. equal(rem(m, n), pred(n)) rem(m + 1, n) = rem(m, n) + 1 sonst div(0, n) = 0  div(m, n) + 1 f. equal(rem(m, n), pred(n)) div(m + 1, n) = div(m, n) sonst

6

Weitere Beispiele f¨ ur primitiv rekursive Funktionen: (m + 1)-niedrigstwertige Ziffer der Darstellung von n zur Basis p: digit(m, n, p) = div(rem(n, pm+1 ), pm )

Pr¨adikat f¨ ur Ungeradheit: odd(n) = digit(0, n, 2)

7

Endliche Konjunktion und Disjunktion von Pr¨adikaten q(n1 , . . , nl , m) = p(n1 , . . , nl , 0) ∧ p(n1 , . . , nl , 1) ∧ · · · ∧ p(n1 , . . , nl , m) q(n1 , . . . , nl , 0) = p(n ¯ 1 , . . . , nl ), wobei p(n ¯ 1 , . . . , nl ) = p(n1 , . . . , nl , 0) q(n1 , . . . , nl , m + 1) = h(n1 , . . . , nl , m, q(n1 , . . . , nl , m)), wobei h(x1 , . . . , xl , y, z) = p(x1 , . . . , xl , succ(y)) ∧ z Analog: p(n1 , . . . , nl , 0) ∨ p(n1 , . . . , nl , 1) ∨ · · · ∨ p(n1 , . . . , nl , m).

8

Beschr¨ankte Existenzquantifizierung  1 ∃ 0 ≤ k ≤ n : p(n1 , . . . , nl , k) = 1 q(n1 , . . . , nl , n) = 0 sonst Beschr¨ankte Allquantifizierung  1 ∀ 0 ≤ j ≤ n : p(n1 , . . . , nl , j) = 1 q(n1 , . . . , nl , n) = 0 sonst

9

Beschr¨ankte Minimalisierung f (n1 , . . . , nl , b) = µ (m ≤ b)[g(n1 , . . . , nl , m) = 1]    das kleinste m ≤ b, so dass g(n1 , . . . , nl , m) = 1 falls ein solches m ≤ b existiert =   0 sonst f (n1 , . . . , nl , 0) = 0 f (n1 , . . . , nl , b + 1)  b+1 falls g(n1 , . . . , nl , 0) 6= 1     ∧ f (n1 , . . . , nl , b) = 0 = ∧ g(n1 , . . . , nl , b + 1) = 1     f (n1 , . . . , nl , b) sonst

10

Beispiel: Fibonacci-Zahlen 0

1

1

F(0) = 0

2

3

5

F(1) = 1

8

13

21

34

55

89

F(n) = F(n − 1) + F(n − 2)

G(0) = c(0, 1) G(n + 1) = h(n, G(n)), wobei h(x, z) = c(r(z), r(z) + `(z)) wobei `(c(n1 , n2 )) = n1 und r(c(n1 , n2 )) = n2 . F(n) = `( G(n) )

...

11

c, ` und r: Jede nat¨ urliche Zahl n besitzt eine eindeutige Primfaktorzerlegung pe11 · pe22 · · · · · pekk Die Zahl ei heißt der Exponent von pi in der Primfaktorzerlegung von n. Sei    der Exponent von p in der Primfaktorzerlegung von n, falls p eine Primzahl ist primexp(n, p) =   0 sonst

c(n1 , n2 ) = 2n1 ·3n2

`(n) = primexp(n, 2)

r(n) = primexp(n, 3)

12

µ -rekursive Funktionen

Unbeschr¨ankte Minimalisierung Seien k ≥ 0 und g eine (k + 1)-stellige Funktion. Wir definieren eine k-stellige partielle Funktion f (n1 , . . . , nk ) durch

µ m[g(n1 , . . . , nk , m) = 0]    das kleinste m, so dass g(n1 , . . . , nk , m) = 0 falls ein solches m existiert =   undefiniert sonst f = µ(g)

13

Definition: Eine Funktion g : Nk+1 → N0 heißt regul¨ar, falls das folgende 0 Verfahren f¨ ur alle n1 , . . . , nk ∈ N0 terminiert: 1 m←0 2 while (g(n1 , . . . , nk , m) 6= 0) 3 do m ← m + 1 4 return m

14

Definition: Eine Funktion heißt µ-rekursiv, falls sie zu den Basisfunktionen geh¨ort oder aus diesen durch endlich viele Anwendungen von Substitution und primitiver Rekursion und endlich viele Anwendungen der unbeschr¨ankten Minimalisierung auf regul¨are Funktionen erzeugt werden kann.

15

Partielle µ-rekursive Funktionen Unbeschr¨ankte Minimalisierung Sei g eine (k + 1)-stellige partielle Funktion. Wir definieren eine k-stellige partielle Funktion f (n1 , . . . , nk ) = µ m[g(n1 , . . . , nk , m) = 0] wie folgt: f (n1 , . . . , nk ) = n falls (1) g(n1 , . . . , nk , i) ist f¨ ur alle 0 ≤ i ≤ n definiert und (2) g(n1 , . . . , nk , n) = 0 und (3) g(n1 , . . . , nk , i) 6= 0 f¨ ur alle 0 ≤ i < n Falls kein solches n existiert, so ist f (n1 , . . . , nk ) undefiniert. f = µ(g)

16

Definition: Eine partielle Funktion heißt µ-rekursiv, falls sie zu den Basisfunktionen geh¨ort oder aus diesen durch endlich viele Anwendungen von Substitution, primitiver Rekursion und unbeschr¨ankter Minimalisierung erzeugt werden kann.

17

Grammatikberechenbarkeit

Definition: Sei G = (V, Σ, R, S) eine Grammatik und sei f : Σ∗ → Σ∗ eine Funktion. G berechnet f , falls f¨ ur alle v, w ∈ Σ∗ gilt: SwS ⇒∗G v

genau dann wenn

v = f (w)

Die Funktion f heißt dann durch eine Grammatik berechenbar.

18

Definition: Eine partielle Funktion f : Nk0 → N0 heißt durch eine Grammatik berechenbar, falls es eine Grammatik G = (V, {0, 1, #, . . .}, R, S) gibt, so dass f¨ ur alle n1 , n2 , . . . , nk , m ∈ N0 gilt f (n1 , n2 , . . . , nk ) = m g.d.w. S bin(n1 )#bin(n2 )# . . . #bin(nk ) S ⇒∗G bin(m)

19

Beispiel:

succ : N0 → N0

G = ({S,C, F}, {0, 1, #}, R, S) R: 0S → 0C

1F → F1

1S → 1C

0F → F0

0C → F1

SC → 1

1C → C0

SF → ε

S101S ⇒G S101C ⇒G S10C0 ⇒G S1F10 ⇒G SF110 ⇒G 110

20

¨ Aquivalenz der Berechenbarkeitsbegriffe

Satz: Eine partielle Funktion f : Nk0 → N0 ist Turing- berechenbar genau dann wenn sie eine partielle µ-rekursive Funktion ist genau dann wenn sie eine while-berechenbare partielle Funktion ist genau dann wenn sie eine durch eine Grammatik berechenbare partielle Funktion ist.