Obliczenia KK
1. MASZYNY TURINGA I FUNKCJE REKURENCYJNE
1.1. Maszyna Turinga składa si¸e z taśmy (bez końców) i głowicy czytaj¸acej. Symbole, wpisywane w polach taśmy, tworz¸a alfabet zewn¸etrzny S maszyny Turinga. B¸edziemy zakładać, że S = {0, 1}, gdzie 0 odpowiada polu pustemu. Alfabet wewn¸etrzny maszyny Q = {q1, ..., qn, q0} jest zbiorem stanów (oznaczanych literami qi) głowicy czytaj¸acej. Zawsze zakładamy że q1 jest stanem pocz¸atkowym, a q0 jest stanem końcowym (STOP).
Każdy krok głowicy składa si¸e z nast¸epuj¸acych 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¸e znajduje; (2) przesuni¸ecie (lub nieprzesuni¸ecie) o jedno pole w prawo lub w lewo; (3) zmiana stanu.
Schematycznie opis kroku oznaczamy przez:
sq → s0Rq0, gdzie R ∈ {N, P, L},
i nazywamy poleceniem maszyny Turinga. Niepusty zbiór poleceń nazywamy programem maszyny Turinga.
1.2. Zadanie. Znaleźć programy realizuj¸ace nast¸epuj¸ace przekształcenia taśmy.
A : 00
q1
x
z}|{1...100 → 00
x+1
z }| { 1...11
q0
0,
B : 000000000
q1
x
z}|{1...10...0
y
z}|{1...10 → 00
q0
x
z}|{1...10
y
z}|{1...100, C : 00
q1
100 → 00101
q0
00, D : 00000010...0
q1
0000 → 01
q0
0...0, D0 : 010...01...1
q1
00 → 01
q0
0...01...100,
x
F : 0 ∗
q1
1 → 0 ∗
q0
0, J : 00000000
q1
10...01...10 → 010...01...1
q0
0, H : 00
q1
10...01 → 011...1
q0
01,
I : 000000
q1
y1
z}|{1...10
y2
z}|{1...10...0
ym
z}|{1...10 → 00...0
ym
z }| { 1...1
q0
0,
K : 00
q1
x
z}|{1...10 → 00
q0
x
z}|{1...10
x
z}|{1...10.
Funkcja f (x1, ..., xn) ze zbioru n-elementowych ci¸agów liczb naturalnych ωn (przez ω lub N oznaczamy zbiór liczb naturalnych) w zbiór ω nazywa si¸e funkcj¸a obliczaln¸a, jesli istnieje program maszyny Turinga taki, że głowica zaczynaj¸ac wykonanie programu w sytuacji
0000000
q1
l1
z}|{1...10
l2
z}|{1...10...0
ln
z}|{1...1000000000000000000000 kończy wykonanie w sytuacji
000000000000000
qo
f (l1,...,ln)
z}|{1...1 000000000000000000000000000000000000000
1.3. Zadanie. Znaleźć programy obliczaj¸ace nast¸epuj¸ace funkcje:
s(x): y = x + 1, O(x): y = 0;
I23(x1, x2, x3): y = x2;
y = 1 : x ∈ {0, 2, ...}
0 : x ∈ {1, 3, ...} .
1.4. Funkcje rekurencyjne. Na zbiorze wszystkich funkcji cz¸eściowych określonych na ω wprowadzamy nast¸epuj¸ace operatory.
Operator złożenia g = S(fm, f1n, ..., fmn) jest określony przez równość g(x1, ..., xn) = f (f1(x1, ..., xn), ..., fm(x1, ..., xn)),
gdzie Dom(g) składa si¸e z takich ci¸agów l1, ..., ln, że wartości kj = fj(l1, ..., ln) s¸a określone i f jest określona na k1, ..., km.
Operator rekursji pierwotnej gn+1 = P R(fn+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¸e z takich ci¸agów l1, ..., ln, l, że wartości k0 = h(l1, ..., ln) i kj = f (l1, ..., ln, j − 1, kj−1), 1 ≤ j ≤ l, s¸a określone.
µ-Operator gn = µ(fn+1) jest określony przez:
g(x1, ..., xn) = min{y : f (x1, ..., xn, y) = 0},
gdzie Dom(g) składa si¸e z takich ci¸agów l1, ..., ln, że wartości kj = f (l1, ..., ln, j), 0 ≤ j, s¸a określone do pewnego j spełniaj¸acego kj = 0.
Funkcja f jest rekurencyjna jeśli jest zbudowana z funkcji O(x), s(x), Imn(x1, ..., xn) = xm, 1 ≤ m ≤ n ∈ ω, przez skończon¸a ilość stosowań opera- torów S, P R i µ.
1.5. Zadanie. Pokazać, że nast¸epuj¸ace funkcje s¸a rekurencyjne:
x1+ x2, x1· x2, 2x, [x/2];
sg(x) = 0 : x = 0 1 : x 6= 0 ; sg(x) = 1 : x = 0
0 : x 6= 0 ; x ˙−y =
0 : x < y .
1.7. Teza Churcha. Każda funkcja obliczalna intuicyjnie jest funkcj¸a rekurencyjn¸a.
Obliczenia KK Lista dodatkowa:
FUNKCJE REKURENCYJNE I NIEROZSTRZYGALNOŚĆ 1.8. Operatory Σ i Π.
Lemat. Niech f (x1, ..., xn+1) b¸edzie funkcj¸a rekurencyjn¸a.
Wtedy funkcje
g1(x1, ..., xn+1) = Σxi=0n+1f (x1, ..., xn, i) i
g2(x1, ..., xn+1) = Πxi=0n+1f (x1, ..., xn, i) s¸a rekurencyjne.
Wniosek. Nast¸epuj¸ace funkcje s¸a rekurencyjne1 : [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.9. Zadanie. Pokazać, że nast¸epuj¸ace funkcje s¸a rekurencyjne:
τ (x) = ilość dzielników liczby x;
P r(x) = 1 : x jest liczb¸a pierwsz¸a 0 : x nie jest liczb¸a pierwsz¸a ; π(x) = ilość liczb pierwszych ≤ x;
p(x) = liczba pierwsza z numerem x;
1.10. Zadanie. Funkcja
g(x1, ..., xn) =
h0(x1, ..., xn), jeśli f0(x1, ..., xn) = 0 h1(x1, ..., xn), jeśli f1(x1, ..., xn) = 0 ..., jeśli ...
hs(x1, ..., xn), jeśli fs(x1, ..., xn) = 0
jest rekurencyjna, gdzie h1, ..., hs, f1, ..., fs s¸a rekurencyjne i żadne fi i fj nie
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-1- numeracj¸e ci¸agów skończonych liczb naturalnych,
przy tym funkcja znalezienia i-go elementu ci¸agu o numerze x też jest rekuren- cyjna (oznaczamy przez τi(x)).
1.12. Funkcja uniwersalna. Niech φ(x, y) b¸edzie cz¸eściow¸a funkcj¸a rekurencyjn¸a tak¸a, że dla każdej cz¸eś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¸edzie określona) gH taka, że H = Rng(gH) (= gH(ω)).
Dowód. Niech k0 ∈ H. Dla liczby t sprawdzamy, czy program maszyny Turinga odpowiadaj¸acy funkcji φ(l(t), y) przyjmie stan q0 w ci¸agu 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¸edzie określonych (lub zbiór pusty) nazy- wamy zbiorami rekurencyjnie przeliczalnymi.
Przykład: Zbiór H.
Zbiór A ⊆ ω nazywa si¸e zbiorem rekurencyjnym jeśli funkcja δA(x) = {1,x∈A0,x6∈A jest rekurencyjna i wsz¸edzie określona.
Twierdzenie (Post) Zbiór A jest rekurencyjny wtedy i tylko wtedy gdy A i ω \ A s¸a rekurencyjnie przeliczalne.
1.14. Twierdzenie. Zbiór H nie jest rekurencyjny.
Dowód. Niech h(x) = µy((y · δH(x)) + (1 − sg(y)) = 0). Wtedy h(x) = {1,δ?,δH(x)=0
H(x)=1. 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.15. Zadania.
(1) Pokazać, że istnieje cz¸eściowa funkcja rekurencyjna, która nie może być rozszerzona do funkcji rekurencyjnej wsz¸edzie określonej.
(2) Pokazać, że jeśli dziedzina Dom(f ) cz¸eściowej funkcji rekurencyjnej f (x) jest zbiorem rekurencyjnym, to f (x) może być rozszerzona do rekurencyjnej funkcji wsz¸edzie określonej.
(3) Pokazać, że zbiór {x : φ(x, x) = 0} jest rekurencyjnie przeliczalny, ale nie rekurencyjny (φ jest zdefiniowana w p.7.6).