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.