Obliczenia KK 1. MASZYNY TURINGA I FUNKCJE

advertisement
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
Download