Obliczenia KK 1. MASZYNY TURINGA I FUNKCJE REKURENCYJNE 1.1. Maszyna Turinga składa siȩ z taśmy (bez końców) i głowicy czytaja̧cej. Symbole, wpisywane w polach taśmy, tworza̧ alfabet zewnȩtrzny S maszyny Turinga. Bȩdziemy zakładać, że S = {0, 1}, gdzie 0 odpowiada polu pustemu. Alfabet wewnȩtrzny maszyny Q = {q1 , ..., qn , q0 } jest zbiorem stanów (oznaczanych literami qi ) głowicy czytaja̧cej. Zawsze zakładamy że q1 jest stanem pocza̧tkowym, a q0 jest stanem końcowym (STOP). Każdy krok głowicy składa siȩ z nastȩpuja̧cych działań (w zależności od symbolu s w polu i od stanu q głowicy): (1) wpisywanie (lub niewpisywanie) symbolu ze zbioru S w polu, na którym głowica siȩ znajduje; (2) przesuniȩcie (lub nieprzesuniȩcie) o jedno pole w prawo lub w lewo; (3) zmiana stanu. Schematycznie opis kroku oznaczamy przez: sq → s0 Rq 0 , gdzie R ∈ {N, P, L}, i nazywamy poleceniem maszyny Turinga. Niepusty zbiór poleceń nazywamy programem maszyny Turinga. 1.2. Zadanie. Znaleźć programy realizuja̧ce nastȩpuja̧ce przekształcenia taśmy. x x+1 z}|{ z }| { A : 00 1...100 → 001...11 0, q0 q1 y x y x z}|{ z}|{ z}|{ z}|{ B : 000000000 1...10...01...10 → 00 1...101...100, q1 q0 C : 00 100 → 00101 00, q1 q0 D : 00000010...0 0000 → 01 0...0, q1 q0 D0 : 010...01...1 00 → 01 0...01...100, q1 q0 x z}|{ E : 00 1...10 → q1 x z}|{ 00 1...10 : x 6= 0 q2 x z}|{ 00 1...10 : x = 0 q3 1 , F : 0 ∗ 1 → 0 ∗ 0, q1 q0 J : 00000000 10...01...10 → 010...01...1 0, q1 q0 H : 00 10...01 → 011...1 01, q1 q0 ym ym y2 y1 z}|{ z}|{ z}|{ z}|{ I : 000000 1...101...10...01...10 → 00...01...1 0, q1 q0 x x x z}|{ z}|{ z}|{ K : 00 1...10 → 00 1...101...10. q1 q0 Funkcja f (x1 , ..., xn ) ze zbioru n-elementowych cia̧gów liczb naturalnych ω (przez ω lub N oznaczamy zbiór liczb naturalnych) w zbiór ω nazywa siȩ funkcja̧ obliczalna̧, jesli istnieje program maszyny Turinga taki, że głowica zaczynaja̧c wykonanie programu w sytuacji n l l l n 1 2 z}|{ z}|{ z}|{ 0000000 1...101...10.........01...1000000000000000000000 q1 kończy wykonanie w sytuacji f (l1 ,...,ln ) z}|{ 000000000000000 1...1 000000000000000000000000000000000000000 qo 1.3. Zadanie. Znaleźć programy obliczaja̧ce nastȩpuja̧ce funkcje: s(x): y = x + 1, O(x): y = 0; I23 (x1 , x2 , x3 ): y = x2 ; 1 : x ∈ {0, 2, ...} y= . 0 : x ∈ {1, 3, ...} 2 1.4. Funkcje rekurencyjne. Na zbiorze wszystkich funkcji czȩściowych określonych na ω wprowadzamy nastȩpuja̧ce operatory. n Operator złożenia g = S(f m , f1n , ..., fm ) jest określony przez równość g(x1 , ..., xn ) = f (f1 (x1 , ..., xn ), ..., fm (x1 , ..., xn )), gdzie Dom(g) składa siȩ z takich cia̧gów l1 , ..., ln , że wartości kj = fj (l1 , ..., ln ) sa̧ określone i f jest określona na k1 , ..., km . Operator rekursji pierwotnej g n+1 = P R(f n+2 , hn ) jest określony przez: g(x1 , ..., xn , 0) = h(x1 , ..., xn ), .......................................... g(x1 , ..., xn , i + 1) = f (x1 , ..., xn , i, g(x1 , ..., xn , i)), ........................................., gdzie Dom(g) składa siȩ z takich cia̧gów l1 , ..., ln , l, że wartości k0 = h(l1 , ..., ln ) i kj = f (l1 , ..., ln , j − 1, kj−1 ), 1 ≤ j ≤ l, sa̧ określone. µ-Operator g n = µ(f n+1 ) jest określony przez: g(x1 , ..., xn ) = min{y : f (x1 , ..., xn , y) = 0}, gdzie Dom(g) składa siȩ z takich cia̧gów l1 , ..., ln , że wartości kj = f (l1 , ..., ln , j), 0 ≤ j, sa̧ określone do pewnego j spełniaja̧cego kj = 0. Funkcja f jest rekurencyjna jeśli jest zbudowana z funkcji O(x), s(x), n (x1 , ..., xn ) = xm , 1 ≤ m ≤ n ∈ ω, przez skończona̧ ilość stosowań operaIm torów S, P R i µ. 1.5. Zadanie. Pokazać, że nastȩpuja̧ce funkcje sa̧ rekurencyjne: x1 + x2 , x1 · x2 , 2x , [x/2]; 0 : x=0 sg(x) = ; 1 : x 6= 0 1 : x=0 sg(x) = ; 0 : x 6= 0 0 : x<y x−̇y = . x−y : y ≤x 1.6. Twierdzenie. Funkcja jest obliczalna wtedy i tylko wtedy gdy jest funkcja̧ rekurencyjna̧. 3 1.7. Teza Churcha. Każda funkcja obliczalna intuicyjnie jest funkcja̧ rekurencyjna̧. 4 Obliczenia KK Lista dodatkowa: FUNKCJE REKURENCYJNE I NIEROZSTRZYGALNOŚĆ 1.8. Operatory Σ i Π. Lemat. Niech f (x1 , ..., xn+1 ) bȩdzie funkcja̧ rekurencyjna̧. Wtedy funkcje x n+1 g1 (x1 , ..., xn+1 ) = Σi=0 f (x1 , ..., xn , i) i x n+1 g2 (x1 , ..., xn+1 ) = Πi=0 f (x1 , ..., xn , i) sa̧ rekurencyjne. Wniosek. Nastȩpuja̧ce funkcje sa̧ rekurencyjne [x/y] (zakładamy, że [x/0] = x), [x1/n ], rest(x, y) = x − [x/y] · y, q(x) = x − [x1/2 ]2 , div(x, y) = sg(rest(x, ¯ y)) . 1 : 1.9. Zadanie. Pokazać, że nastȩpuja̧ce funkcje sa̧ rekurencyjne: τ (x) = ilość dzielników liczby x; 1 : x jest liczba̧ pierwsza̧ P r(x) = ; 0 : x nie jest liczba̧ pierwsza̧ π(x) = ilość liczb pierwszych ≤ x; p(x) = liczba pierwsza z numerem x; 1.10. Zadanie. Funkcja h0 (x1 , ..., xn ), h1 (x1 , ..., xn ), g(x1 , ..., xn ) = ......................., hs (x1 , ..., xn ), jeśli jeśli jeśli jeśli f0 (x1 , ..., xn ) = 0 f1 (x1 , ..., xn ) = 0 .......................... fs (x1 , ..., xn ) = 0 jest rekurencyjna, gdzie h1 , ..., hs , f1 , ..., fs sa̧ rekurencyjne i żadne fi i fj nie przyjmuja̧ jednocześnie wartości 0. 1.11. Numeracja. Niech 1 [z] oznacza czȩść całkowita̧ liczby z 5 c(x, y) = (x + y)(x + y + 1)/2 + x; n(z) = µm[z < (m + 1)(m + 2)/2]; l(z) = z − n(z)(n(z) + 1)/2; r(z) = n(z) − l(z). Fakt. l(c(x, y)) = x, r(c(x, y)) = y i c(l(z), r(z)) = z. Niech c2 (x, y) = c(x, y); c3 (x, y, z) = c2 (c(x, y), z);... cn (x1 , x2 , ..., xn ) = cn−1 (c(x1 , x2 ), x3 , ..., xn );... Lemat. Wzór A(x1 , ..., xn+1 ) = c(cn+1 (x1 , ..., xn+1 ), n) definiuje 1-1numeracjȩ cia̧gów skończonych liczb naturalnych, przy tym funkcja znalezienia i-go elementu cia̧gu o numerze x też jest rekurencyjna (oznaczamy przez τi (x)). 1.12. Funkcja uniwersalna. Niech φ(x, y) bȩdzie czȩściowa̧ funkcja̧ rekurencyjna̧ taka̧, że dla każdej czȩściowej rekurencyjnej funkcji ψ(y) istnieje liczba k (nazywana numerem funkcji ψ) taka że φ(k, y) ≡ ψ(y). Niech H = {x : φ(x, x) jest określona }. Fakt. Istnieje funkcja rekurencyjna (wszȩdzie określona) gH taka, że H = Rng(gH ) (= gH (ω)). Dowód. Niech k0 ∈ H. Dla liczby t sprawdzamy, czy program maszyny Turinga odpowiadaja̧cy funkcji φ(l(t), y) przyjmie stan q0 w cia̧gu t kroków dla y = l(t). Jeśli TAK, to niech g(t) = l(t); jeśli NIE, to niech g(t) = k0 . 1.13. Zbiory rekurencyjnie przeliczalne. Przeciwdziedziny (obrazy, Rng) funkcji rekurencyjnych wszȩdzie określonych (lub zbiór pusty) nazywamy zbiorami rekurencyjnie przeliczalnymi. Przykład: Zbiór H. Zbiór A ⊆ ω nazywa siȩ zbiorem rekurencyjnym jeśli funkcja δA (x) = 1,x∈A {0,x6 ∈A jest rekurencyjna i wszȩdzie określona. Twierdzenie (Post) Zbiór A jest rekurencyjny wtedy i tylko wtedy gdy A i ω \ A sa̧ rekurencyjnie przeliczalne. 1.14. Twierdzenie. Zbiór H nie jest rekurencyjny. 6 Dowód. Niech h(x) = µy((y · δH (x)) + (1 − sg(y)) = 0). Wtedy h(x) = Jesli h jest rekurencyjna, to istnieje k : φ(k, y) ≡ h(y). Jeśli k ∈ H, to δH (k) = 1 i h(k) nie jest określona, tzn. k 6∈ H. Jeśli k 6∈ H, to δH (k) = 0 i h(k) = 1. Tzn. k ∈ H. Sprzeczność. 1,δ (x)=0 {?,δHH (x)=1 . 1.15. Zadania. (1) Pokazać, że istnieje czȩściowa funkcja rekurencyjna, która nie może być rozszerzona do funkcji rekurencyjnej wszȩdzie określonej. (2) Pokazać, że jeśli dziedzina Dom(f ) czȩściowej funkcji rekurencyjnej f (x) jest zbiorem rekurencyjnym, to f (x) może być rozszerzona do rekurencyjnej funkcji wszȩdzie określonej. (3) Pokazać, że zbiór {x : φ(x, x) = 0} jest rekurencyjnie przeliczalny, ale nie rekurencyjny (φ jest zdefiniowana w p.7.6). 7