1 Grundlagen der Theoretischen Informatik II Till Mossakowski Fakultät für Informatik Otto-von-Guericke-Universität Magdeburg Sommersemester 2015
2 Prädikate Eine Funktion, die nur die Werte 0 und 1 annimmt, nennen wir Prädikat. 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ädikaten Negation ( ): minus(1, p(n 1,...,n k )) Disjunktion ( ): positive(p(n 1,...,n k ) + q(n 1,...,n k )) Konjunktion ( ): p(n 1,...,n k ) q(n 1,...,n k ) Beispiel: equal(m, n) = greater than or equal(n, m) greater than or equal(m, n)
4 Funktionsdefinition durch endliche Fallunterscheidung { g(n1,...,n f (n 1,...,n k ) = k ) falls p(n 1,...,n k ) h(n 1,...,n k ) sonst f (n 1,...,n k ) = p(n 1,...,n k ) g(n 1,...,n k ) + ( p(n 1,...,n k )) h(n 1,...,n k )
5 Beispiel: Division (div) mit Rest (rem) rem(0, n) = 0 rem(m + 1,n) = { 0 f. equal(rem(m,n),pred(n)) rem(m,n) + 1 sonst div(0, n) = 0 div(m + 1,n) = { div(m,n) + 1 f. equal(rem(m,n),pred(n)) div(m, n) sonst
6 Weitere Beispiele für primitiv rekursive Funktionen: (m + 1)-niedrigstwertige Ziffer der Darstellung von n zur Basis p: digit(m,n, p) = div(rem(n, p m+1 ), p m ) Prädikat für Ungeradheit: odd(n) = digit(0,n,2)
7 Endliche Konjunktion und Disjunktion von Prädikaten q(n 1,..,n l,m) = p(n 1,..,n l,0) p(n 1,..,n l,1) p(n 1,..,n l,m) q(n 1,...,n l,0) = p(n 1,...,n l ), wobei p(n 1,...,n l ) = p(n 1,...,n l,0) q(n 1,...,n l,m + 1) = h(n 1,...,n l,m,q(n 1,...,n l,m)), wobei h(x 1,...,x l,y,z) = p(x 1,...,x l,succ(y)) z Analog: p(n 1,...,n l,0) p(n 1,...,n l,1) p(n 1,...,n l,m).
8 Beschränkte Existenzquantifizierung { 1 0 k n : p(n1,...,n q(n 1,...,n l,n) = l,k) = 1 0 sonst Beschränkte Allquantifizierung { 1 0 j n : p(n1,...,n q(n 1,...,n l,n) = l, j) = 1 0 sonst
9 Beschränkte Minimalisierung f (n 1,...,n l,b) = µ (m b)[g(n 1,...,n l,m) = 1] das kleinste m b, so dass g(n 1,...,n l,m) = 1 = falls ein solches m b existiert 0 sonst f (n 1,...,n l,0) = 0 f (n 1,...,n l,b + 1) b + 1 falls g(n 1,...,n l,0) 1 f (n 1,...,n l,b) = 0 = g(n 1,...,n l,b + 1) = 1 f (n 1,...,n l,b) sonst
10 Beispiel: Fibonacci-Zahlen 0 1 1 2 3 5 8 13 21 34 55 89... F(0) = 0 F(1) = 1 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) + l(z)) wobei l(c(n 1,n 2 )) = n 1 und r(c(n 1,n 2 )) = n 2. F(n) = l( G(n) )
11 c, l und r: Jede natürliche Zahl n besitzt eine eindeutige Primfaktorzerlegung p e 1 1 pe 2 2 pe k k Die Zahl e i heißt der Exponent von p i in der Primfaktorzerlegung von n. Sei der Exponent von p in der Primfaktorzerlegung primexp(n, p) = von n, falls p eine Primzahl ist 0 sonst c(n 1,n 2 ) = 2 n1 3 n 2 l(n) = primexp(n,2) r(n) = primexp(n,3)
12 µ-rekursive Funktionen Unbeschränkte Minimalisierung Seien k 0 und g eine (k + 1)-stellige Funktion. Wir definieren eine k-stellige partielle Funktion f (n 1,...,n k ) durch µ m[g(n 1,...,n k,m) = 0] das kleinste m, so dass g(n 1,...,n k,m) = 0 = falls ein solches m existiert undefiniert sonst f = µ(g)
13 Definition: Eine Funktion g : N k+1 0 N 0 heißt regulär, falls das folgende Verfahren für alle n 1,...,n k N 0 terminiert: 1 m 0 2 while (g(n 1,...,n k,m) 0) 3 do m m + 1 4 return m
Definition: Eine Funktion heißt µ-rekursiv, falls sie zu den Basisfunktionen gehört oder aus diesen durch endlich viele Anwendungen von Substitution und primitiver Rekursion und endlich viele Anwendungen der unbeschränkten Minimalisierung auf reguläre Funktionen erzeugt werden kann. 14
15 Partielle µ-rekursive Funktionen Unbeschränkte Minimalisierung Sei g eine (k + 1)-stellige partielle Funktion. Wir definieren eine k-stellige partielle Funktion f (n 1,...,n k ) = µ m[g(n 1,...,n k,m) = 0] wie folgt: f (n 1,...,n k ) = n falls (1) g(n 1,...,n k,i) ist für alle 0 i n definiert und (2) g(n 1,...,n k,n) = 0 und (3) g(n 1,...,n k,i) 0 für alle 0 i < n Falls kein solches n existiert, so ist f (n 1,...,n k ) undefiniert. f = µ(g)
Definition: Eine partielle Funktion heißt µ-rekursiv, falls sie zu den Basisfunktionen gehört oder aus diesen durch endlich viele Anwendungen von Substitution, primitiver Rekursion und unbeschränkter Minimalisierung erzeugt werden kann. 16
Grammatikberechenbarkeit 17 Definition: Sei G = (V,Σ,R,S) eine Grammatik und sei f : Σ Σ eine Funktion. G berechnet f, falls für 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 : N k 0 N 0 heißt durch eine Grammatik berechenbar, falls es eine Grammatik G = (V,{0,1,#,...},R,S) gibt, so dass für alle n 1,n 2,...,n k,m N 0 gilt f (n 1,n 2,...,n k ) = m g.d.w. S bin(n 1 )#bin(n 2 )#...#bin(n k ) S G bin(m)
19 Beispiel: succ : N 0 N 0 G = ({S,C,F},{0,1,#},R,S) R: 0S 0C 1S 1C 0C F1 1C C0 1F F1 0F F0 SC 1 SF ε S101S G S101C G S10C0 G S1F10 G SF110 G 110
Äquivalenz der Berechenbarkeitsbegriffe 20 Satz: Eine partielle Funktion f : N k 0 N 0 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.