• Nie Znaleziono Wyników

Materiaªydowykªadu TeoriaObliczalno±ci BarbaraKlunder Toru«2010

N/A
N/A
Protected

Academic year: 2021

Share "Materiaªydowykªadu TeoriaObliczalno±ci BarbaraKlunder Toru«2010"

Copied!
61
0
0

Pełen tekst

(1)

Toru« 2010

Barbara Klunder

Teoria Obliczalno±ci

Materiaªy do wykªadu

(2)

W wykªadze zastanawia¢ b¦dziemy si¦ nad dwoma kluczowymi pytani- ami:Czym jest efektywna procedura? Hardwarem czy softwarem? Urz¡dze- niem, które realizuje okre±lone obliczenia (pierwsze komputery), czy ci¡giem instrukcji (programem) w naszym ulubionym j¦zyku programowania?

Czym jest problem rozwi¡zywalny przez efektywn¡ procedur¦? Czy istniej¡ problemy nierozwi¡zywalne?

Intuicyjnie czujemy, »e b¦dziemy wykonywa¢ obliczenia.

Zasdaniczo prowadzi¢ b¦dziemy obliczenia na (sko«czonych ci¡gach liczb) liczbach naturalnych.

Przypu±¢my, »e chcemy prowadzi¢ obliczenia na zbiorze wej±¢ i wyj±¢ X ró»nym od N. Mo»emy to zrobi¢ przyporz¡dkowuj¡c ka»demu elementowi z X liczb¦ naturaln¡ zwan¡ jej kodem tak, aby ró»ne elementy X miaªy ró»ne kody.

Maj¡c wej±cia z X nale»y zast¡pi¢ je ich kodami i wykona¢ obliczenia, które zwracaj¡ numeryczne wyj±cie. Je±li to wyj±cie jest kodem elementu z X, to ten element traktujemy jako ko«cowy wynik oblicze«.

Chcemy, by pierwszy i ostatni krok tej procedury byª realizowany w sposób algorytmiczny. Wtedy mówimy, »e kodowanie jest efektywne.

U nas X b¦dzie: zbiorem wszystkich sko«czonych ci¡gów liczb naturalnych lub sªów nad ustalonym (sko«czonym) alfabetem, zbiorem instrukcji lub pro- gramów pewnego j¦zyka itp.

1 Kodowania i numeracje

Przypomnijmy dwie denicje zbioru przeliczalnego.

Denicja 1.1 Kodowaniem zbioru X nazywamy dowoln¡ funkcj¦ ró»nowarto±- ciow¡ f : X −→ N.

Zbiór jest przeliczalny, je±li jest równoliczny z pewnym podzbiorem N.

Denicja 1.2 Numeracj¡ (lub wyliczeniem) zbioru X nazywamy dowoln¡

funkcj¦ g : N −→ X, która jest «a".

Zbiór jest przeliczalny, je±li jego elementy mo»na ustawi¢ w ci¡g.

Przykªady

(3)

1. Funkcja π : N × N −→ N okre±lona wzorem π(n.m) = 2n(2m + 1) − 1 jest bijektywnym kodowaniem par liczb naturalnych.

Funkcja odwrotna zadana jest przez funkcje π1, π2 : N −→ N zden- iowane nast¦puj¡co:

π1(x) = n wtw, gdy 2 pojawia si¦ w rozkªadzie x+1 na czynniki pier- wsze z wykªadnikiem n;

π2(x) = 12( x+1

2π1(x) − 1)

2. Wtedy funkcja β : N × N × N −→ N, β(n, m, p) = π(π(n, m), p) jest bijektywnym kodowaniem trójek liczb naturalnych. Jak wygl¡da funkcja odwrotna?

3. Rozwa»my funkcj¦ τ : Sk>0Nk −→ N tak¡, »e

τ (a0, a1, . . . , ak−1) = 2a0 + 2a0+a1+1+ . . . + 2a0+a1+...ak−1+k−1− 1.

Jest to bijektywne kodowanie wszystkich sko«czonych ci¡gów liczb nat- uralnych.

Poka»emy pó»niej, »e funkcje π i β s¡ (RAM-)obliczalne, a numeracja τ−1 jest efektywna. B¦d¡ to kluczowe rezultaty techniczne.

2 Maszyny RAM

2.1 Maszyny z nieograniczon¡ pami¦ci¡ RAM (Shep- erdson & Sturgis)

Budowa maszyny realizuj¡cej programy w j¦zyku zbli»onym do popularnych imperatywnych j¦zyków programowania, który b¦dziemy rozwa»a¢, przy- pomina budow¦ rzeczywistych komputerów: maszyna skªada si¦ z licznika rozkazów oraz pami¦ci, która jest tablic¡ rozmiaru ℵ0. Komórki pami¦ci s¡ numerowane kolejnymi liczbami naturalnymi i mog¡ zawiera¢, tak jak licznik rozkazów, dowoln¡ liczb¦ naturaln¡. W czasie oblicze« prawie wszys- tkie komórki pami¦ci zawieraj¡ liczb¦ 0.

Oznaczenie z[x] oznacza zawarto±¢ komórki o numerze x.

Lista instrukcji RAM

(4)

instrukcjiKod Kod

adresów Oznaczenie Semantyka Uwagi

0 n Z(n) z[n]:=0 Licznik rozkazów

zwi¦ksz o 1

1 n S(n) z[n]:=z[n]+1 Licznik rozkazów

zwi¦ksz o 1

2 π(m, n) T(m,n) z[n]:=z[m] Licznik rozkazów

zwi¦ksz o 1

3 β(m, n, q) I(m,n,q) if z[m]=z[n]

then goto q

Licznik rozkazów zwi¦ksz o 1, gdy z[m] 6= z[n],

w przeciwnym przypadku umie±¢ w nim q

Instrukcje typu 0, 1, 2 nazywamy arytmetycznymi , a typu 3 warunk- owymi.

Denicja 2.1 Programem (na RAM) nazywamy dowolny niepusty ci¡g RAM-instrukcji.

Semantyka instrukcji typu 3 wymusza numerowanie instrukcji w programie.

Kultura matematyczna wymaga od nas sformalizowania poj¦¢

stanu, instrukcji, semantyki programu itp. Wrócimy do tego w rozdziale 4. Na razie wykorzystamy nasz¡ intuicj¦.

Przykªadowy program 0 I(1,2,5)

1 S(2) 2 S(3) 3 I(1,2,5) 4 I(1,1,1) 5 T(3,0)

Co liczy ten program?

Oczywi±cie interesuj¡ nas komórki pami¦ci, które s¡ aktywne w czasie oblicze«.

Program zatrzymuje si¦, gdy z[1]=z[2]. Je±li wi¦c na pocz¡tku z[2]6z[1], to wykonuje si¦ zwi¦kszanie z[2], a» równo±¢ stanie si¦ prawdziwa. Zwi¦ksza si¦ z[3] o ilo±¢ dodawa«, czyli z[1]-z[2]. Je±li wi¦c z[i] oznacza pocz¡tkow¡

zawarto±¢ komórki, to po zako«czeniu oblicze« w komórce o numerze 0 zna- jduje si¦ liczba z[3]+z[1]-z[2]. Zauwa»my, »e program nie zatrzyma si¦, gdy na pocz¡tku z[2]>z[1]!

Z charakteru RAM wynika, »e b¦dziemy zajmowa¢ si¦ programami, które na wej±ciu bior¡ ci¡gi (ustalonej dªugo±ci) liczb naturalnych i zwracaj¡ jedn¡

liczb¦ naturaln¡.

(5)

Umowa : Program zwraca zawarto±¢ komórki o numerze 0.

Oczywi±cie nie zawsze program musi si¦ zatrzyma¢ na ka»dych danych.

Naturalne jest wi¦c pytanie jakie funkcje s¡ obliczane przez RAM-programy.

B¦dzie to pierwszy problem, którym si¦ zajmiemy. Oka»e si¦, »e funkcje aryt- metyczne s¡ RAM-obliczalne.

Denicja 2.2 Niech k > 0. Program P oblicza funkcj¦ cz¦±ciow¡ f : Nk−→

N, je±li po umieszczeniu ci¡gu danych x w komórkach z[1], ... , z[k], wyze- rowaniu pozostaªych i uruchomieniu P, P zatrzyma si¦ zwracaj¡c warto±¢ f na danych x, dokªadnie gdy x ∈ Dom f.

Ka»dy program P oblicza pewn¡ funkcj¦ k-argumentow¡, dla k > 0, któr¡

oznaczymy symbolem φ(k)P .

Symbolem Ck oznaczymy zbiór wszystkich funkcji RAM-obliczalnych i k- argumentowych.

Przyklad 1 Na gruncie aksjomatyki Peano liczb naturalnych dodawanie deniuje si¦ rekurencyjnie:

x+0=x x+(y+1)=(x+y)+1

Nieformalnie: nale»y do x doda¢ 1 y-razy. Oto program RAM obliczaj¡cy z[1]+z[2], przy zaªo»eniu, »e z[3]=0.

0 I(2,3,5) 1 S(1) 2 S(3) 4 I(1,1,0) 5 T(1,0)

Przykªad 2 Niech x÷1 = x − 1 gdy x > 1

0 gdy x = 0 . Funkcja ta jest obliczana przez nast¦puj¡cy program.

0 I(1,4,9) 1 S(3) 2 I(1,3,6) 3 S(2) 4 S(3) 5 I(1,1,2) 6 T(2,0)

Uzasadnienie: W czasie oblicze« (od instrukcji 2) ró»nica z[3]-z[2] stale równa

(6)

jest 1, a obliczenia zatrzymuj¡ si¦, gdy z[3] osi¡gnie pocz¡tkow¡ warto±¢ z[1].

Pytanie: Zgodnie z denicj¡, mo»emy zastanawia¢ si¦, jak¡ dwuargumentow¡

funkcj¦ liczy ten program?

Odpowied»: f(x, y) = y + (x ÷ 1).

Zadanie 0 Jak¡ funkcj¦ trójargumentow¡ oblicza powy»szy program?

Zadanie 1 Pokaza¢, »e nast¦puj¡ce funkcje s¡ RAM-obliczalne. Symbol ∞ oznacza¢ b¦dzie, »e warto±¢ funkcji pozostaje nieokre±lona.

1. f(x) =

 x

2 gdy x jest parzysta

∞ gdy x jest nieparzysta 2. f(x) = 1 gdy x > 0

0 gdy x = 0 3. f(x) = 5

4. f(x, y) = 1 gdy x 6= y 0 gdy x = y 5. f(x, y) = 1 gdy x > y 0 gdy x 6 y 6. f(x) =

 x

3 gdy x dzieli si¦ przez 3

∞ w przeciwnym przypadku Umowa: GOTO(n)=I(x,x,n)

2.2 Inne maszyny typu RAM tej samej mocy obliczeniowej

1. Bazowa Shoenelda wykonuje instrukcje Increase r[i] czyli S(i)

GOTO n

Decrease r[i] , n której wykonanie oznacza zmniejszenie r[i] o 1 i przej±cie do instrukcji o numerze n, gdy r[i]>0

2. Uogólniona RAM wykonuje instrukcje z[c]:=z[a]+z[b]

z[c]:=z[a]+b z[c]:=z[a]*z[b]

z[c]:=z[a]*b

if z[a]=z[b] then goto c if z[a]<z[b] then goto c

(7)

Zadanie 2 Pokaza¢, »e ka»dy program w jednym z j¦zyków mo»na przetªu- maczy¢ na pozostaªe j¦zyki z zachowaniem semantyki.

3 Struktura zbioru funkcji RAM-obliczalnych

W DALSZYCH ROZWA›ANIACH PROGRAMY S W POSTACI

STANDARDOWEJ, CO OZNACZA, ›E W INSTRUKCJACH WARUNK- OWYCH I(n,m,q) DANEGO PROGRAMU P, q 6 k+1, GDZIE k

JEST NUMEREM OSTATNIEJ INSTRUKCJI P.

Zadanie Wyka», »e dla dowolnego RAM-programu P istnieje RAM-program P' w postaci standardowej, który oblicza te same funkcje co P.

Idea rozwi¡zania Ka»d¡ instrukcj¦ warunkow¡ I(n,m,q) programu P tak¡, »e q>k+1, zast¡p instrukcj¡ I(n,m,k+1).

Niech P i S b¦d¡ programami w postaci standardowej. Šatwo jest poprawnie wprowadzi¢ skªadanie programów PS, które ma odpowiada¢ przej±ciu od os- tatniej instrukcji P do pierwszej instrukcji S. Nale»y ka»d¡ instrukcj¦ I(n,m,q) programu S zast¡pi¢ instrukcj¡ I(n,m,q+k+1), gdzie k dalej jest numerem ostatniej instrukcji P.

OZNACZENIE Dla programu P symbolem ρ(P) oznaczamy najmniejsz¡

liczb¦ naturaln¡ m tak¡, »e P nie u»ywa w czasie oblicze« komórki o numerze m, ani o numerach wi¦kszych od m.

Aby upro±ci¢ pisanie RAM-programów wprowadzimy procedury. Niech P = i0, . . . , ip b¦dzie programem w postaci standardowej, a l1, . . . , ln 6∈

{1, . . . , n}. Wtedy P[l1, . . . , ln→ l] oznacza program

T(l1, 1) . . .T(ln, n)Z(0)Z(n + 1) . . . Z(ρ(P))PT(0, l).

Zauwa»my, »e procedura zaczyna si¦ od przygotowania pola dziaªania dla programu P, czyli rejestrów 0,1, ... , ρ(P). Procedura jest wi¦c wykonywana

"w miejscu", a nie «a boku", co uªatwi nam analizowanie programów proce- duralnych, ale jest sprzeczne z ogólnie przyj¦ta praktyk¡ programistyczn¡.

Obecnie zajmiemy si¦ wªasno±ciami zbioru C wszyskich funkcji RAM- obliczalnych. Omówimy ró»ne konstruktory funkcji obliczalnych takie, jak rekursja czy minimalizacja.

(8)

3.1 Podstawianie

Twierdzenie 3.1 (O podstawianiu) Niech f ∈ Ck a g1, . . . , gk ∈ Cn. Wt- edy funkcja h(x) ' f(g1(x), ..., gk(x)) ∈ Cn.

Dowód Niech f ∈ Ckb¦dzie obliczana przez program F, a g1, . . . , gk∈ Cn b¦d¡ obliczane przez programy G1, . . . ,Gk odpowiednio. Wtedy funkcja h(x) jest obliczana przez podany program H.

Niech m = max{n, k, ρ(F ), ρ(G1), . . . , ρ(Gk)}. T(1, m + 1)

. . . . . . . . .

T(n, m + n)

G1[m + 1, . . . , m + n → m + n + 1]

. . . . . . . . .

Gk[m + 1, . . . , m + n → m + n + k]

F [m + n + 1, ...., m + n + k → 0]

Podstawianie pozwala uto»samia¢ i wprowadza¢ nieistotne argumenty.

Niech f(x, y) b¦dzie RAM obliczalna. Wtedy f=cje f(x, x), f(y, x), g(x, y, z) ' f (x, z) s¡ obliczalne.

3.2 Rekursja

Rekursja to sposób zadania kolejnej warto±ci funkcji poprzez warto±ci wcze±niej obliczone.

Twierdzenie 3.2 (O operatorze rekursji) Niech f(x) ∈ Cn i g(x, y, z) ∈ Cn+2. Wtedy funkcja h(x, y) : Nn+1 −→ N okre±lona ukªadem

(Rek) h(x, 0) ' f (x)

h(x, y + 1) ' g(x, y, h(x, y)) jest obliczalna (h ∈ Cn+1).

(9)

Dowód Niech f(x) ∈ Cni g(x, y, z) ∈ Cn+2b¦d¡ obliczane przez programy F i G odpowiednio. Wtedy funkcja h(x, y) : Nn+1 −→ N jest obliczana przez podany program H.

Niech m = max(n + 2, ρ(F ), ρ(G)).

U»ywa¢ b¦dziemy rejestrów 1, 2, ..., m+n+1, m+n+2, m+n+3 i oznaczenia t = m + n.

T(1, m + 1) T(2, m + 2) . . .

. . . . . .

T(n + 1, m + n + 1)

F[m + 1, m + 2, . . . , m + n → t + 3] oblicz f(x) i zapisz w rejestrze t+3 qI(t + 2, t + 1, p) je±li z[t+2] równe jest y, to zako«cz G(m + 1, . . . , m + n, t + 2, t + 3 → t + 3] je±li nie posªu» si¦ G

S(t + 2) zwi¦kszz[t + 2]

GOTO q pT(t + 3, 0)

Zadania

1. Przypomnijmy denicj¦ ci¡gu Fibonacciego: f(0) = f(1) = 1 f (n + 2) = f (n) + f (n + 1).

Udowodnij, »e funkcja f jest RAM-obliczalna.

WSKAZÓWKA: Rozwa» funkcj¦ g(n) = 2f (n)3f (n+1).

2. Uogólnij poprzednie zadanie. Niech k > 0. Niech fi(x) ∈ Cn, gdzie i ∈ {0, 1, . . . , k − 1} i g(x, y, z) ∈ Cn+1+k b¦d¡ obliczlane. Wtedy funkcja h(x, y) : Nn+1 −→ N okre±lona ukªadem

(Rek)

h(x, 0) ' f0(x) h(x, 1) ' f1(x) h(x, k − 1) ' fk−1(x)

h(x, y + k) ' g(x, y, h(x, y), . . . , h(x, y + k − 1)) jest RAM-obliczalna.

(10)

3.3 Wa»ne przykªady funkcji RAM-obliczalnych

1. Dodawanie x + y;

2. Mno»enie x · y mo»na zdeniowa¢ przez rekursj¦ wykorzystuj¡c do- dawanie: x · 0 = 0; x · (y + 1) = x · y + x. Uwaga: do schematu rekursji dobieramy za f funkcj¦ staª¡ zero, za g(x, y, z) = z + x.

3. Pot¦gowanie podobnie deniuje si¦ przez rekursj¦ wykorzystujac mno»e- nie: x0 = 1; xy+1 = xy· x.

4. Odejmowanie x ÷ 1 = x − 1 gdy x > 1

0 gdy x = 0 i ogólnie x ÷ y = x − y gdy x > y

0 gdy x < y równie» ªatwo zdeniowa¢ przez rekursj¦:

(a) 0 ÷ 1 = 0 (x + 1) ÷ 1 = x;

(b) x ÷ 0 = x x ÷ (y + 1) = (x ÷ y) ÷ 1.

Pozostaªe przykªady s¡ zebrane w poni»szej tabeli.

Funkcja Schemat

sg(x) =

 0 gdy x = 0

1 gdy x > 0 sg(0) = 0

sg(x + 1) = 1 sg(x) =

 1 gdy x = 0

0 gdy x > 0 sg(x) = 1 ÷ sg(x)

|x − y| |x − y| = (x ÷ y) + (y ÷ x)

x! ¢wiczenie

min(x, y) min(x, y) = x ÷ (x ÷ y)

max(x, y) max(x, y) = x + (y ÷ x)

rm(x, 0) = 0 rm(x, y + 1) =

 0 rm(x, y) + 1 = x rm(x, y) + 1 rm(x, y) + 1 6= x

rm(x, 0) = 0 rm(x, y + 1) =

(rm(x, y) + 1)sg(|x − (rm(x, y) + 1)|) g(x, y, z) = (z + 1)sg(|x − z + 1)|) qt(x, 0) = 0

qt(x, y + 1) =

 qt(x, y) + 1 rm(x, y) + 1 = x qt(x, y) rm(x, y) + 1 6= x

g(x, y, z) = z + sg(|x − rm(x, y) + 1)|)

div(x, y) =

 1 x|y

0 x 6 |y div(x, y) = sg(rm(x, y))

3.4 Inne konstrukcje

Niech f(x, y) b¦dzie dowoln¡ funkcj¡ (dwuargumentow¡, RAM-obliczaln¡).

(11)

• Suma uogólniona Schemat rekursji h(x, 0) = 0

h(x, y + 1) ' f (x, y) + h(x, y) g(x, y, z) ' f (x, y) + z deniuje funkcj¦ h(x, y) ' Pz<yf (x, y).

• Iloczyn uogólniony Schemat rekursji t(x, 0) = 1

t(x, y + 1) ' f (x, y) · t(x, y) g(x, y, z) ' f (x, y) · z deniuje funkcj¦ h(x, y) ' Qz<yf (x, y).

• Ograniczona minimalizacja

Zaªó»my, »e f(x, y) jest totalna. Wzór µ z < y (f (x, z) = 0) =X

v<y

Y

u6v

sg(f (x, u))

deniuje operator minimalizacji ograniczonej, zwany te» operatorem wyszukiwania dla y najmniejszej liczby z < y, dla której f(x, z) = 0, gdy taka liczba nie istnieje zwracana jest liczba y.

Z twierdzenia o podstawianiu i rekursji wynika, »e je±li f jest RAM-obliczalna zdeniowane funkcje równie» s¡ RAM-obliczalne. Oczywi±cie zaªo»enie, »e f jest 2-argumentowa jest nieistotne.

3.5 Minimalizacja

Dla f(x, y) : Nn+1 −→ N poªó»my: g(x) ' µ y (f(x, y) = 0) ' najmniejsze y takie, »e f(x, z) jest okre±lona dla wszystkich z 6 y i f(x, y) = 0; gdy talie y nie istnieje warto±¢ funkcji pozostaje nieokre±lona.

Twierdzenie 3.3 (O operatorze minimalizacji) Je±li f ∈ Cn+1, to g ∈ Cn.

(12)

Dowód Zaªó»my, »e f jest obliczana przez program F. Wtedy podany program G oblicza funkcj¦ g. Niech m = max(n + 1, ρ(F )).

T(1, m + 1) . . .

. . . . . .

T(n, m + n)

pF[m + 1, ..., m + n, m + n + 1 → 1]

I(1, m + n + 2, q) S(m + n + 1) I(1, 1, p)

q T(m + n + 1, 0)

Uwaga Niech k > 0, predykat M(x) ⊆ Nk jest rozstrzygalny, je±li jego funkcja charakterystyczna cM jest obliczalna.

Zadanie Wykorzystuj¡c, je±li to konieczne, operator minimalizacji wyka»,

»e:

1. zbiór liczb pierwszych jest rekurencyjny;

2. funkcja p : N 7→ N opisuj¡ca rosn¡cy ci¡g wszystkich liczb pierwszych jest RAM-obliczalna (cz¦sto b¦dziemy pisa¢ px zamiast p(x));

3. funkcja (x)y zwracaj¡ca dla x 6= 0 wykªadnik z jakim py pojawia si¦ w rozkªadzie na czynniki pierwsze x i 0 dla x = 0 jest RAM-obliczalna;

4. je±li predykat M(x) ⊆ Nk jest rozstrzygalny i f, g ∈ Ck, to funkcja h(x) ' f (x) M (x)

g(x) ¬M (x) jest RAM-obliczalna.

4 Funkcje cz¦±ciowo rekurencyjne

W rozdziale tym zajmiemy si¦ zbiorem funkcji cz¦±ciowo rekurencyjnych zdeniowanych przez Kleene w 1952. roku. Jest to czysto matematyczna formalizacja poj¦cia funkcji obliczalnej.

Lemat 4.1 Funkcje zerowa i nast¦pnika: 0, s : N −→ N, 0(x) = 0, s(x) = x + 1 oraz funkcje rzutowania pni : Nn −→ N, pni(x0, . . . , xn−1) = xi, dla dowolnych n > 0, i < n, s¡ RAM-obliczalne.

(13)

Denicja 4.2 Zbiór R funkcji cz¦±ciowo rekurencyjnych deniujemy jako najmniejszy zbiór funkcji, który zawiera funkcje bazowe: zerow¡, nast¦pnika i rzuty oraz jest domkni¦ty na operatory podstawiania, rekursji i minimalizacji.

Denicja 4.3 Podobnie P R oznacza zbiór funkcji prymitywnie rekurencyjnych, które powstaj¡ z funkcji bazowych przy u»yciu operatorów podstawiania i rekursji.

Odnotujmy, »e z lematu 4.1 i twierdze« poprzedniego rozdziaªu wynika bezpo±redni wniosek.

Wniosek 4.4 Ka»da funkcja cz¦±ciowo rekurencyjna jest RAM-obliczalna.

Nasuwa si¦ pytanie, czy jest te» odwrotnie.

Twierdzenie 4.5 Ka»da funkcja RAM-obliczalna jest cz¦±ciowo rekurencyjna.

Zanim zajmiemy si¦ dowodem powy»szego twierdzenia musimy wprowadzi¢

matematyczne denicje zbioru S stanów maszyny RAM i zbioru I jej in- strukcji:

S = {f : N ∪ {L} −→ N : ∃mn>mf (n) = 0}

I = {0, 1, 2, 3} × N

Wtedy mo»emy formalnie okre±li¢ semantyk¦ ka»dej instrukcji. Funkcj¦ δ : I × S −→ S zmiany stanu deniujemy nast¦puj¡co: dla stanu f ∈ S oraz instrukcji i =< k, a >∈ I kªadziemy (g = δ(i, f) )

g(L) =

q gdy k = 3 ∧ f(m) = f(n) gdzie a = β(m, n, q)

f (L) + 1 w pozostaªych przypadkach

k=0 g(c) = 0 c = a

f (c) c 6= a k=1 g(c) = f (c) + 1 c = a

f (c) c 6= a k=2 ∧a = π(m, n) g(c) = f (m) c = n

f (c) c 6= n

k=3 ∀c∈N g(c) = f (c)

Teraz mo»emy poda¢ formaln¡ denicj¦ funkcji φ(m)P m-argumentowej obliczanej przez program P = i0, i1. . . is. Ci¡g x ∈ Nm nale»y do dziedziny deniowanej funkcji wtw, gdy istnieje ci¡g stanów f0, f1, . . . , ft taki, »e

(14)

1. f0 jest konguracj¡ pocz¡tkow¡ P z x na wej±ciu;

2. ∀k=0...t−1fk(L) 6 s;

3. ∀k=0...t−1fk+1 = δ(ifk(L), fk); 4. ft(L) > s + 1

Wtedy φ(m)P (x) = ft(0).

Rozwa»my funkcj¦ cd : S −→ N koduj¡c¡ wszystkie konguracje RAM:

cd(f ) = 2f (L) Y

n∈N

pf (n)n+1. Przypomnijmy, »e pn oznacza n-t¡ liczb¦ pierwsz¡.

Poszukujemy funkcji (prymitywnie) rekurencyjnej δ : I × N+ −→ N (δ : N ×N ×N+ −→ N) takiej, »e cd◦δ = δ◦(idI×cd), co matematycznie oznacza,

»e funkcja δ opisuj¡ca semantyk¦ instrukcji jest (prymitywnie) rekurencyjna.

Podsumujmy wcze±niejsze rezultaty.

1. Funkcje koduj¡ce pary liczb naturalnych π(n.m) = 2n(2m + 1) − 1 i trójki β(n, m, p) = π(π(n, m), p) s¡ prymitywnie rekurencyjne oraz bijektywne.

2. Istniej¡ prymitywnie rekurencyjne funkcje π1, π2, β1, β2, β3 : N −→ N takie, »e < π1, π2 > i < β1, β2, β3 > s¡ odwrotnymi do π i β: π1(x) = (x + 1)0, π2(x) = qt(2, qt(2π1(x), x + 1)), β1(x) = π11(x)), β2(x) = π21(x)), β3(x) = π2(x).

Teraz

δ(< k, a >, s) =













2 · qt(p(s)a+1a+1, s) k = 0

2 · pa+1· s k = 1

2 · qt((pπ2(a)+1)(s)π2(a)+1, s) · (pπ2(a)+1)(s)π1(a)+1 k = 2

2 · s k = 3 ∧ (s)β1(a) 6= (s)β2(a)

2β3(a)· qt(2(s)0, s) k = 3 ∧ (s)β1(a) = (s)β2(a)

0 k > 4

Funkcja ta jest prymitywnie rekurencyjna z okre±lenia.

Dowód twierdzenia Niech P =< k0, i0 >< k1, i1 > . . . < ks, is>b¦dzie programem w postaci standardowej obliczaj¡cym funkcj¦ h(x) arno±ci n > 0.

(15)

Niech σ(x, k) b¦dzie kodem konguracji uzyskanej po k krokach oblicze« P na x. Przyjmowa¢ b¦dziemy, »e konguracj¡ nast¦pn¡ po ko«cowej jest ona sama oraz codn(x) jest konguracj¡ pocz¡tkow¡ (czyli ci¡g x umieszczony jest w rejestrach o numerach 1, . . . , n). Wtedy

σ(x, 0) = cd(codn(x))

σ(x, k + 1) = δ(< kl, al >, σ(x, k)) l = (σ(x, k))0 < s + 1 σ(x, k) l = (σ(x, k))0 > s + 1 Inaczej funkcja σ deniowana jest przez rekursj¦:

f (x) = cd(codn(x))

g(x, y, z) = c(z)0<s+1· δ(i(z)0, z) + c(z)0>s+1· z

Wtedy funkcje c(x, k) = (σ(x, k))1 j(x, k) = (σ(x, k))0 s¡ prymitywnie rekurencyjne i opisuj¡ zawarto±¢ rejestru 0 (c!) i licznik rozkazów (j) po k krokach oblicze« P. Wtedy

h(x) ' c(x, µ k (j(x, k) > s + 1)).

co oznacza, »e h jest cz¦±ciowo rekurencyjna.

4.1 Funkcja Ackermanna

Zauwa»my, »e u»ycie podstawiania i rekursji do funkcji totalnych daje funkcj¦

totaln¡, co nie jest prawd¡ dla minimalizacji (rozwa» funkcj¦ g(x) = µy((x + y+1) = 0)). Ta prosta obserwacja spowodowaªa pojawienie si¦ wielu wa»nych pyta«. Podstawowe to: Czy ka»da funkcja totalna i cz¦±ciowo rekurencyjna jest prymitywnie rekurencyjna?. Zauwa»my, »e jest to pytanie, czy ma sens u»ywanie operatora minimalizacji do funkcji totalnych, gdy wynikiem jest funkcja totalna.

Okazuje si¦, »e istniej¡ funkcje totalne, które s¡ cz¦±ciowo rekurencyjne, ale nie prymitywnie rekurencyjne. Rezultat ten zawdzi¦czamy Ackerman- nowi, który skonstruowaª tak¡ funkcj¦, zreszt¡ bardzo skomplikowan¡. W lit- eraturze pod hasªem funkcja Ackermanna wyst¦puje prostsza funkcja wprowad- zona przez Hermesa:

A(0, y) = y + 1 A(x + 1, 0) = A(x, 1)

A(x + 1, y + 1) = A(x, A(x + 1, y))

(16)

Warto zapami¦ta¢ ten przykªad i przetestowa¢ na nim, czym ró»ni si¦ denicja funkcji przez rekursj¦ od denicji rekurencyjnej. Jest to kolejna ilustracja ob- serwacji, »e pewne denicje rekurencyjne w j¦zykach programowania wysok- iego poziomu mo»na zas¡pi¢ iteracj¡, a funkcja Ackermanna nie poddaje si¦

temu procesowi.

4.2 Teza Churcha

Teza Churcha mówi, »e nieformalnie i intuicyjnie okre±lona klasa funkcji obliczalnych pokrywa si¦ z klas¡ funkcji RAM-obliczalnych. Teza ta nie jest matematycznym twierdzeniem, ale istniej¡ wa»kie argumenty na jej rzecz.

Jednym z istotniejszych jest powy»sze twierdzenie, które razem z wnioskiem 4.4 stwierdza, »e klasa gunkcji RAM-obliczalnych pokrywa si¦ z klas¡

funkcji cz¦±ciowo rekurencyjnych.

W wykªadzie rozwa»a¢ b¦dziemy jeszcze formalizacj¦ Turinga, dla której mo»na udowodni¢ podobne twierdzenie.

5 Maszyny Turinga

Maj¡c pewn¡ wiedze techniczn¡ na temat budowy komputera trudno przyj¡¢

model rozwa»any wcze±niej. Nale»y te» u±wiadomo¢ sobie, »e prosty pomysª ªatwiej zrealizowa¢ technicznie. T¦ zalet¦ ma denicja Turinga zaproponowana w 1936 roku. Po pierwsze, w tamtych czasach znane byªy urz¡dzenia me- chanicznie realizuj¡ce »mudne algorytmy takie jak maszyny szyfruj¡ce czy ró»nicowe. Po drugie, byªy one (w najlepszym wypadku) urz¡dzeniami elek- trycznymi a nie elektronicznymi. Model Turinga (jedna maszyna) rozwi¡zuje jeden problem wykonuj¡c bardzo proste operacje. Maszyna ta ma niesko«c- zon¡ ta±m¦ (pami¦ci) podzielon¡ na komórki, w których mo»e znajdowa¢

si¦ co najwy»ej jeden symbol ze sko«czonego zbioru. Ma te» gªowic¦, która obserwuje dokªadnie jedn¡ komórk¦ i sko«czony zbiór stanów. Na postawie tych dwóch informacji (stan, litera) podejmuje decyzj¦ jak¡ liter¦ umie±ci¢ w komórce, jaki ruch wykona¢ i w jaki stan wej±¢.

Denicja 5.1 Jednota±mow¡ maszyn¡ Turinga nazywamy trójk¦ < S, Q, P >, gdzie Q jest sko«czonym alfabetem symboli ta±mowych, S sko«czonym zbiorem stanów rozª¡cznym z Q, a P sko«czonym zbiorem instrukcji postaci:

stan1 litera 1 → litera2 ruch stan2.

(17)

Matematycznie

P ⊆ S × (Q ∪ {B}) × (Q ∪ {B}) × {L, R,_} × S

gdzie B jest nowym symbolem zwanym blank oznaczaj¡cym, »e komórka jest pusta, a litery L, R, _ odpowiadaj¡ ruchom w lewo, w prawo i w miejscu.

Wej±ciem dla maszyny b¦dzie dowolne sªowo nad alfabetem Q, analizowane od pierwszej litery i pocz¡tkowego stanu q0. Kolejny etap tej analizy nazywa¢

b¦dziemy konguracj¡.

Denicja 5.2 Niech M =< S, Q, P > b¦dzie ustalon¡ maszyn¡ Turinga.

1. Konguracj¡ M nazywamy ka»de sªowo postaci uqw, gdzie u, w s¡

sªowami nad alfabetem Q∪{B}, a q jest stanem: u, w ∈ (Q∪{B})?, q ∈ S.

Uwaga B¦dziemy ignorowa¢ symbole puste na pocz¡tku u i ko«cu w.

2. Dla instrukcji qa → bRq0 i konguracji vqaw wykonanie jej zapisujemy vqaw `M vbq0w.

Uwaga Doko«cz denicj¦: dla instrukcji qa → bLq0 i konguracji vqaw...

3. Powy»sze wzory deniuj¡ relacj¦ jednokrokowej zmiany konguracji.

Matematycznie zbiór K konguracji M równy jest (Q ∪ {B})? × S × (Q ∪ {B})? i `M⊆ K × K. Wtedy relacj¦ `?M⊆ K × K b¦d¡c¡ zwrotnio- przechodnim domkni¦ciem `M nazywamy relacj¡ zmiany konguracji maszyny M.

4. Niech KF b¦dzie zbiorem konguracji ko«cowych t.j. takich w których M nie mo»e wykona¢ »adnej instrukcji:

KF = {z ∈ K ; ¬∃w∈Kz `M w}

a q0 ∈ S wyró»nionym stanem. J¦zyk LqM0 sªów akceptowanych przez M przy stanie pocz¡tkowym q0 deniujemy jako zbiór tych sªów s nad alfabetem Q, które po umieszczeniu na ta±mie sªowa, ustawieniu gªow- icy przy przy jego pierwszej literze w stanie q0, powoduj¡ zatrzymanie maszyny:

LqM0 = {s ∈ Q? ; ∃w∈KF q0s `?M w}

(18)

5. Do zdeniowania zbioru konguracji ko«cowych mo»na wykorzysta¢ zbiór F ⊆ S zwany zbiorem stanów ko«cowych. Wtedy

KFF = {z ∈ K ; ∃w,v∈(Q∪{B})?q∈Fz = vqw}

J¦zyk LqM0,F sªów akceptowanych przez M przy stanie pocz¡tkowym q0 i zbiorze stanów ko«cowych F deniujemy jako zbiór tych sªów s nad al- fabetem Q, które po umieszczeniu na ta±mie sªowa, ustawieniu gªowicy przy jego pierwszej literze w stanie q0, powoduj¡ przej±cie maszyny w stan ze zbioru KFF:

LqM0,F = {s ∈ Q? ; ∃w∈KFF q0s `?M w}

5.1 Jednota±mowa maszyna Turinga dla palindromów

Niech X = {a1, . . . , an}b¦dzie dowolnym sko«czonym i niepustym alfabetem.

Rozwa»my MT o instrukcjach

q0ai −→ aiRq0 szukaj prawego ko«ca sªowa q0B −→ BLq1 znalazªe±, to czego szukaªe±

q1ai −→ BLsi zapami¦taj, co byªo na ko«cu (ai) sia −→ aLsi a ∈ X wró¢ na pocz¡tek (lewy koniec sªowa) siB −→ BRti znalazªe±, to czego szukaªe±

tiai −→ BRq0 usu« pierwsz¡ liter¦, je±li równa jest ai

Maszyna ta zawsze si¦ zatrzyma! W stanie q1 lub ti, gdy sªowo na wej±ciu jest palindromem; W stanie ti, gdy tak nie jest. W pierwszym przypadku na ta±mie pozostan¡ same symbole puste B.

Zale»nie od wariantu denicji j¦zyka akceptowanego przez MT dobieramy instrukcje:

1. q1B −→ BLf, tiB −→ BLf

2. tiaj −→ ajRzi zia −→ aLti a ∈ X gdy i 6= j

W pierwszym przypadku analizowanie palindromu zako«czy si¦ w stanie ko«cowym f, w drugim wej±cie, które nie jest palindromem spowoduje za- p¦tlenie maszyny.

Poniewa» do zdeniowania j¦zyka akceptowanego przez maszyn¦ Turinga potrzebny jest stan pocz¡tkowy q0 i zbiór konguracji ko«cowych zwykle do jej denicji dodaje si¦ ten stan i zbiór stanów ko«cowych zale»nie od wariantu denicji. Powy»szy przykªad ilustruje dowód nast¦puj¡cego twierdzenia.

(19)

Twierdzenie 5.3

1. Dla dowolnej maszyny Turinga M =< S, Q, P, q0 > istnieje maszyna Turinga M0 =< S0, Q, P0, q00, F > taka, »e LqM0 = Lq

0 0,F M0 ;

2. Dla dowolnej maszyny Turinga M0 =< S0, Q, P0, q00, F >istnieje maszyna Turinga M =< S, Q, P, q0 > taka, »e LqM00,F0 = LqM0;

5.2 Maszyna Turinga obliczaj¡ca nast¦pnik sªowa w porz¡dku leksykogracznym

Zaªó»my, »e alfabet X = {a1, . . . , an}jest zbiorem uporz¡dkowanym liniowo:

ai < ai+1.

Sªowo s poprzedza t w porz¡dku leksykogracznym, je±li jest krótsze albo s i t s¡ tej samej dªugo±ci i s poprzedza t w porz¡dku alfabetycznym.

Porz¡dek leksykograczny jest liniowy i poprawnie okre±lone jest poj¦cie nast¦pnika sªowa:nast(saiakn) = sai+1ak1 nast(akn) = ak+11 .

Rozwa»my MT o instrukcjach

q0ai −→ aiRq0 szukaj prawego ko«ca sªowa q0B −→ BLq1 znalazªe±, to czego szukaªe±

q1an−→ a1Lq1 zast¡p ostatni¡ na ko«cu pierwsz¡

q1ai −→ ai+1Lq2 i < n,teraz wystarczy wróci¢ na pocz¡tek (lewy) q2ai −→ aiLq2

q2B −→ BRq to koniec

q1B −→ a1Lq2 wszystkie litery byªy równe an

Maszyna zawsze zatrzymuje si¦ w stanie q, a na ta±mie na prawo od gªowicy znajduje si¦ sªowo b¦d¡ce nast¦pnikiem wej±cia.

Przykªad ten sugeruje, »e maszyny Turinga mog¡ posªu»y¢ jako urz¡dzenia obliczaj¡ce funkcje, tak jak programy na maszyn¦ RAM. Zauwa»my, »e rozwa»ane maszyny s¡ deterministyczne.

Denicja 5.4 1. Maszyna Turinga M =< S, Q, P, q0, F >jest determin- istyczna, je±li dla ka»dej pary (stan, litera) (konguracji zawieraj¡cej takie podsªowo) istnieje co najwy»ej jedna instrukcja, któr¡ mo»na do niej zastosowa¢.

2. Dla liczby naturalnej n symbolem b(n) oznacza¢ b¦dziemy zapis binarny tej liczby bez zb¦dnych zer.

(20)

3. Detrministyczna maszyna Turinga M =< S, {0, 1}, P, q0, F > oblicza funkcj¦ cz¦±ciow¡ f : Nn 7→ N, je±li dla dowolnych x1, . . . , xn, y ∈ N zachodzi równowa»no±¢:

f (x1, . . . , xn) = y ⇐⇒ ∃q∈Fq0b(x1)B . . . Bb(xn) `?M qb(y)

5.3 Maszyna Turinga obliczaj¡ca reszt¦ z dzielenia przez 3 liczby naturalnej n, operuj¡c zapisami liczb w sys- temie dwójkowym bez zb¦dnych zer

q00 −→ BRq0 wczytana liczba daje reszt¦ 0 q01 −→ BRq1 wczytana liczba daje reszt¦ 1 q10 −→ BRq2 mnó» przez 2 liczb¦ daj¡c¡ reszt¦ 1

q11 −→ BRq0 mnó» przez 2 i dodaj 1 do liczby daj¡cej reszt¦ 1 q20 −→ BRq1 mnó» przez 2 liczb¦ daj¡c¡ reszt¦ 2

q21 −→ BRq2 mnó» przez 2 i dodaj 1 do liczby daj¡cej reszt¦ 2 Zadanie Zdeniuj pozostaªe instrukcje MT tak, aby w konguracji qiB wypisywaªa kod liczby i.

Uwaga W denicji funkcji obliczanej przez maszyn¦ Turinga nie musimy zakªada¢, »e na lewo od gªowicy czytaj¡cej ta±ma jest pusta.

W ostatnim rozdziale zajmiemy si¦ elementami teorii zªo»ono±ci obliczeniowej.

Istniej¡ ró»ne miary zªo»ono±ci algorytmu. Najwa»niejsze to czas i pami¦¢.

Zªo»ono±¢ czasow¡ mierzy si¦ ilo±ci¡ kroków oblicze«. W przypadku mod- eli maszynowych (RAM czy Turinga) jest to zwi¡zane z wywoªywaniem in- strukcji. Zªo»ono±¢ pami¦ciow¡ mierzy si¦ ilo±ci¡ komórek pami¦ci wyko- rzystywanych w czasie obliczenia. Wtedy mo»emy przyj¡¢, »e interesuj¡ nas tylko dodatkowe koszty nie zwi¡zane z umieszczeniem danych i wyników w pami¦ci. Gªówne rozwa»nia dotyczy¢ b¦d¡ czasu. W rozdziale tym rozwa»a¢

b¦dziemy tylko maszyny Turinga. Wybór modelu jest uzasadniony:

1. tradycj¡;

2. konstrukcj¡ rzeczywistych komputerów: s¡ one raczej maszynami Turinga a nie RAM;

3. istot¡ problemu: mo»na wykaza¢, »e model RAM z ustalonym sko«c- zonym rozmiarem pami¦ci jest wystarczaj¡cy w teoretycznych rozwa»a- niach;

(21)

Zacznijmy od przykªadu. Rozwa»my j¦zyk A = {0k1k; k > 0}. Jak du»o potrzebuje czasu MT, aby rozstrzygn¡¢, czy w ∈ A? Trzeba rozwa»y¢

konkretn¡ maszyn¦ M1;

M1 na ªa«cuchu wej±ciowym w:

1. sprawdza, czy w sªowie w pojawia si¦ 0 na prawo od 1; je±li tak jest odrzuca to sªowo;

2. W przeciwnym przypadku powtarza nast¦puj¡ce czynno±ci;

3. poszukuje od lewej do prawej pary 0 i 1 usuwaj¡c je;

4. je±li zostaªy 0 po usuni¦ciu wszystkich 1 lub 1 po usuni¦ciu wszystkich 0, to odrzuca sªowo, w przeciwnym przypadku je akceptuje.

B¦dziemy wyznacza¢ czas dziaªania algorytmu jako funkcj¦ rozmiaru wej±cia.

W przypadku MT jest to dªugo±¢ sªowa. Wtedy b¦dziemy liczy¢ przypadek najgorszy, czyli wymagaj¡cy najwi¦cej oblicze«.

Denicja 5.5 Niech M b¦dzie deterministyczn¡ MT zatrzymuj¡c¡ si¦ na wszystkich wej±ciach. Czasem dziaªania lub zªo»ono±ci¡ czasow¡ M jest funkcja f : N 7→ N, gdzie f(n) jest maksymaln¡ ilo±ci¡ kroków oblicze« M wykonywanych przez ni¡ na ka»dym wej±ciu dªugo±ci n. Mówimy te», »e M dziaªa w czasie f(n).

Wida¢, »e raczej b¦dziemu bada¢ asymptotyczne zachowanie maszyn Turinga.

5.4 Notacja O

Denicja 5.6 Niech f, g : N 7→ R+ Mówimy, »e f jest rz¦d O(g(n)) (zapis f (n) = O(g(n)) je±li istniej¡ liczby c ∈ R+, n0 ∈ N takie, »e dla ka»dego n > n0 mamy: f(n) 6 cg(n). Mówi si¦ te», »e g(n) jest asymptotycznym ograniczeniem górnym f(n).

Jasne jest, »e f(n) = O(5f(n)) wi¦c w notacji tej pomija si¦ wspóªczynniki.

Zadanie Niech f(n) = 5n3+ 2n2+ 22n + 4. Wyka», »e f(n) = O(n3). Wiemy z analizy, »e

limn2n2+ 22n + 4

n3 = 0

(22)

co poci¡ga, »e n3 > 2n2 + 22n + 4 dla n > n0 (wyznacz takie n0). Wtedy 5n3+ 2n2+ 22n + 4 6 6n3 dla n > n0.

Uwaga W tej notacji rozwa»aj¡c logarytmy o podstawie wiekszej od jeden podstawa jest niewa»na, gdy» logan = loglogbn

ba.

Teraz oszacujmy czsow¡ zªo»ono±¢ obliczeniow¡ podanej na wst¦pie maszyny M1: dla danego na wej±ciu sªowa dªugo±ci n realizacja 1-go etapu wymaga 2n instrukcji (czytanie od lewej do prawej i powrót na pocz¡tek sªowa); 2-go i 3-go polega na dwukrotnym czytaniu (2n) powtarzanym n2 razy co daje O(n2) kroków; na koniec 4-ty zrealizuje si¦ w O(n) krokach: w sumie O(n2).

Rozwa»a¢ te» b¦dziemy niedeterministyczne MT.

Denicja 5.7 Niech M b¦dzie MT zatrzymuj¡c¡ si¦ na wszystkich we- j±ciach. Czasem dziaªania lub zªo»ono±ci¡ czasow¡ M jest funkcja f : N 7→

N, gdzie f(n) jest maksymaln¡ ilo±ci¡ kroków oblicze« M wykonywanych przez ni¡ na ka»dym wej±ciu dªugo±ci n w czasie ka»dego przebiegu oblicze«.

Mówimy te», »e M dziaªa w czasie f(n).

Funkcja f(n) zapewnia, »e ka»de obliczenia M na dowolnym wej±ciu dªugo±ci n zako«cz¡ si¦ w tym czasie.

Denicja 5.8 Niech t : N 7→ N b¦dzie totalna. Funkcja ta deniuje dwie klasy czasowej zªo»ono±ci obliczeniowej:

T IM E(t(n))tych j¦zyków L, które s¡ rozstrzygane prez determistyczn¡ maszyn¦

Turinga o czasowej zªo»ono±ci O(t(n))

N T IM E(t(n)) tych j¦zyków L, które s¡ rozstrzygane prez maszyn¦ Turinga o czasowej zªo»ono±ci O(t(n))

Skupimy si¦ na wyja±nieniu u»ytych wy»ej poj¦¢ i omówieniu wagi tego problemu. Najpierw wa»ne twierdzenie.

Twierdzenie 5.9 Dla niedeterministycznej maszyny Turinga M o czasowej zªo»ono±ci obliczeniowej f(n) takiej, »e n 6 f(n) dla wszystkich n ∈ N, istnieje deterministyczna trójta±mowa maszyna Turinga M1 rozpoznaj¡ca ten sam j¦zyk, której czasowa zªo»ono±¢ obliczeniowa jest rz¦du O(cf (n)), dla pewnej liczby c > 1.

Idea konstrukcji maszyny M1. Dla ustalenia uwagi zaªó»my, »e M w ka»dej konguracji mo»e wykona¢ co najwy»ej dwie instrukcje. Poniewa» jest

(23)

niedeterministyczna w pewnej konguracji ma faktycznie wybór pomi¦dzy dwiema instrukcjami. Dokonajmy ponumerowania liczbami 0 lub 1 tych instrukcji dla takich konguracji. Ka»dy ci¡g oblicze« M na wej±ciu dªu- go±ci n mo»na wtedy opisa¢ ci¡giem zer i jedynek dªugo±ci co najwy»ej f(n), odpowiadaj¡cym wyborowi kolejnej instrukcji. Ci¡gów takich jest 2f (n)+1−1. Maszyn¦ deterministyczn¡ M1 konstruuje si¦ tak, aby dla wej±cia dªugo±ci n umieszczanego na pierwszej ta±mie wyznaczaªa na drugiej ta±mie kole- jny ci¡g w porz¡dku leksykogracznym, a nast¦pnie realizowaªa obliczenia M opisane przez wygenerowany ci¡g na ta±mie trzeciej. Ka»de z O(2f (n)) oblicze« wymaga

1. kopiowania wej±cia z ta±my 1. na 3. (poniewa» n 6 f(n) wymaga to O(f (n)) kroków;

2. generowania nast¦pnego ci¡gu w O(f(n)) krokach;

3. wykonania oblicze« na ta±mie trzeciej w O(f(n)) krokach.

co razem daje O(f(n)) ∗ O(2f (n)) = O(4f (n))kroków.

Mo»na wykaza¢, »e konstruowana w dowodzie deterministyczna MT ma dodatkow¡ wªasno±¢: jest lewostronnie ograniczona, co oznacza, »e mo»na u»y¢ dodatkowego znaku B pocz¡tku sªowa b¦d¡cego na ta±mie; w sytuacji, gdy gªowica obserwuje ten znak niemo»liwy jest ruch w lewo i maszyna nie mo»e zmaza¢ znaku B. Wtedy konguracja pocz¡tkowa jest postaci B qow. Twierdzenie 5.10 1. Dla maszyny Turinga M istnieje lewostronnie ogranic-

zona (dwuta±mowa) maszyna Turinga M0, która rozpoznaje ten sam j¦zyk (i ma t¦ sam¡ zªo»ono±¢ czasow¡ w sensie notacji O).

2. Dla k-ta±mowej maszyny Turinga M (k > 2) istnieje jednota±mowa maszyna Turinga M0, która rozpoznaje ten sam j¦zyk. Je±li M ma zªo»ono±¢ czasow¡ O(f(n)), to M0 ma zªo»ono±¢ czasow¡ O(f(n) ∗ f (n)).

Szkic dowodu(1) Dla M i ka»dej zabronionej instrukcji np. q B→ aLq0 nale»y zdeniowa¢ procedur¦ (zestaw instrukcji M0), która caªe sªowo za B przesuwa o jedn¡ komórk¦ w prawo i wtedy w komórce za B mo»na umie±ci¢

a. Zauwa»my, »e do zrealizowania procedury przyda si¦ znacznik C ko«ca sªowa. Taka maszyna b¦dzie miaªa zªo»ono±¢ obliczeniow¡ O(f(n) ∗ f(n)),

(24)

gdy» symulacja ka»dej zabronionej instrukcji wymaga czasu proporcjonal- nego do dªugo±ci sªowa na ta±mie, a ta jest rz¦du O(f(n))! Uzasadnienie jest bardzo proste: w czasie f(n) maszyna Turinga odczytuje co najwy»ej f (n) komórek na ta±mie. Aby skonstruowa¢ maszyn¦ o podobnej czasowej zªo»ono±ci obliczeniowej wystarczy u»y¢ drugiej ta±my do przechowania w odwróconej kolejno±ci liter sªów powstaj¡cych na lewo od znaku B.

(2) Dla k-ta±mowej maszyny M jej konguracja opisana jest przez zawarto±¢

ka»dej z ta±m; czyli ci¡g sªów viqwi, i = 1 . . . kzamieniamy na sªowo #v1qw1#v2qw2# . . . vkqwk#. Konstrukcja M0 polega na zamianie ka»dej instrukcji M na ci¡g instrukcji,

które symuluj¡ jej realizacj¦ na opisanym sªowie. Ka»de sªowo powstaj¡ce w czasie symulacji oblicze« M na sªowie dªugo±ci n jest dªugo±ci O(f(n)), a zmiana wymaga po prostu jego przeczytania.

Zadanie Skonstruuj dwuta±mow¡ maszyn¦ Turinga dla j¦zyka palin- dromów o liniowej czasowej zªo»ono±ci obliczeniowej.

Teraz mo»emy porówna¢ moc obliczeniow¡ maszyny RAM i maszyn Turinga.

Chyba nikogo nie zdziwi, »e s¡ one (moce) identyczne. Postaramy si¦ raczej porówna¢ zªo»ono±¢ obliczeniow¡ programów na RAM i symuluj¡cych je maszyn Turinga.

Denicja 5.11 Niech P b¦dzie RAM programem.

1. Krokiem oblicze« P nazywamy wykonanie jednej instrukcji P ; dla x ∈ Nn wprowad»my oznaczenia:

P (x) ↓ oznacza, »e obliczenia P na danej x zatrzymuj¡ si¦;

P (x) ↓ k oznacza, »e obliczenia P na danej x zatrzymuj¡ si¦

zwracaj¡c k;

P (x) ↑ oznacza, »e obliczenia P na danej x nie zatrzymuj¡ si¦;

2. Zdeniujmy funkcj¦

t(n)P (x) =

 liczba kroków oblicze« P (x) P (x) ↓

∞ P (x) ↑

3. Niech P b¦dzie takim programem, który zatrzymuje si¦ na wszystkich danych n ∈ N. Mówimy, »e P ma zªo»ono±¢ f(n) przy jednorodnym kryterium kosztów je±li t(1)P ∈ O(f (n)).

(25)

Z praktycznego punktu widzenia jest to nie najlepsza denicja. Rozwa»a si¦

wi¦c tzw. logarytmiczne kryterium kosztów.

Niech l(n) b¦dzie dªugo±ci¡ sªowa b(n) dla n ∈ N, czyli zapisu binarnego n bez zb¦dnych zer. Aby reprezentowa¢ konguracj¦ z maszyny RAM w czasie oblicze« RAM programu P na jednota±mowej maszynie Turinga b¦dziemy u»ywa¢ ci¡gu

b(z(L))##b(0)#b(z(0))##b(1)#b(z(1)) . . . ##b(ρ(P ) − 1)#b(z(ρ(P ) − 1)) (1) zakªadaj¡c, »e P u»ywa wszystkich komórek o numerach 0, . . . , ρ(P ) − 1 Wtedy logarytmiczny koszt realizacji ka»dej instrukcji RAM liczymy wedªug wzorów:

lz(Z(n)) = l(n) + l(z(n)) lz(S(n)) = l(n) + l(z(n))

lz(T (n, m)) = l(n) + l(m) + l(z(n)) + l(z(m))

lz(I(n, m, q)) = l(n) + l(m) + l(z(n)) + l(z(m)) + l(q)

Wtedy warto±¢ funkcji tnP(x)deniujemy jako sum¦ logarytmicznych kosztów wszystkich instrukcji wykonywanych do zatrzymania programu.

Twierdzenie 5.12 Dla lewostronnie ograniczonej deterministycznej maszyny Turinga M =< S, Q, P > istnieje RAM program P symuluj¡cy jej obliczenia.

Szkic dowodu Zaªó»my, »e Q = {0, 1, . . . , n} a S = {0, 1, . . . , k} (dokªadniej ustalmy numeracje tych zbiorów); ponadto przyjmijmy, »e do zako«czenia oblicze« u»ywamy pewnego zbioru stanów. Wtedy konguracj¦ M postaci uqwzapami¦tujemy jako pi¡tk¦ (|u|, |w|, q, k(u), k(w)), gdzie |u| oznacza dªu- go±¢ sªowa, a k(u) jego kod np. gödlowski: k(a1, . . . , an) = Qn

i=0paii. Dla ka»dej instrukcji M mo»na napisa¢ procedur¦ na RAM realizuj¡c¡ jej wyko- nanie; n.p. instrukcja qa → a _ q0 oznacza tylko zmian¦ rejestru, w którym jest przechowywany stan. Troch¦ trudniejsze jest sprawdzenie, czy pierwsz¡

liter¡ w jest a: czyli czy mo»na t¦ instrukcj¦ zastosowa¢. W sumie RAM program b¦dzie b¦dzie miaª posta¢ p¦tli repeat, w której umieszczone s¡

wszyskie procedury symuluj¡ce instrukcje M.

Twierdzenie 5.13 Dla RAM programu P obliczaj¡cego funkcj¦ jednoargu- mentow¡ h o logarytmicznym kryterium kosztów f(n) istnieje trójta±mowa maszyna Turinga M obliczaj¡ca t¦ funkcj¦ o czasowej zªo»ono±ci obliczeniowej O(f (n) ∗ f (n)).

(26)

Szkic dowodu Zauwa»my, »e dªugo±¢ ka»dego sªowa (1 ) opisuj¡cego kong- uracje maszyny w czasie dziaªania P jest rz¦du O(f(n)). Maszyna Turinga M przechowuje takie sªowo na pierwszej ta±mie. Aby zrealizowa¢ n.p. in- strukcj¦ Z(k) w konguracji z musi:

1. odszuka¢ na pierwszej ta±mie zapis binarny k;

2. przesun¡¢ si¦ (usuwaj¡c kolejne litery) za b(z(k));

3. wszystko co jest dalej prznie±¢ (usuwaj¡c z pierwszej) na ta±m¦ drug¡;

4. wró¢i¢ na koniec sªowa na ta±mie pierwszej, aby dopisa¢ zawarto±¢

ta±my drugiej.

Realizacja takich oblicze« wymaga O(f(n)) ruchów. Poniewa» maszyna RAM wykonuje co najwy»ej f(n) instrukcji w czasie obliczania h(n) otrzy- mujemy »¡dan¡ tez¦.

6 Efektywne numeracje programów

W rozdziale tym zgª¦bimy oczywist¡ obserwacj¦, »e RAM-programów jest przeliczalnie wiele. Istniej¡ wi¦c numeracje zbioru Π wszystkich RAM-programów.

Denicja 6.1 Niech β : N −→ Π b¦dzie dowoln¡ numeracj¡ zbioru RAM- programów (czyli funkcj¡ «a"). Mówimy, »e β jest efektywna, je±li istniej¡

obliczalne funkcje d : N −→ N, kod, A : N2 −→ N takie, »e dla wszelkich x ∈ N i β(x) =< i0, . . . , in > mamy:

d(x) = n;

06r6nir =< kod(x, r), A(x, r) > .

F-cja d okre±la dªugo±¢ (ilo±¢ instrukcji) programu β(x), natomiast kod, A okre±laj¡ kody kolejnych instrukcji oraz adresy komórek, którymi one manip- uluj¡.

Przypomnienie: I = {0, 1, 2, 3} × N ⊂ N × N.

Niech x ∈ N, x = 4a+k i a b¦dzie cz¦±ci¡ caªkowit¡ a k reszt¡ z dzielenia x przez cztery.Odnotujmy oczywisty lemat.

Lemat 6.2 Funkcja α : N −→ I taka, »e α(x) =< k, a > jest bijektywn¡

numeracj¡ zbioru instrukcji.

(27)

Posªu»ymy si¦ ni¡ przy zdeniowaniu efektywnej numeracji programów.

Rozwa»my funkcj¦ τ : Sk>0Nk −→ N tak¡, »e

τ (a0, a1, . . . , ak−1) = 2a0 + 2a0+a1+1+ . . . + 2a0+a1+...+ak−1+k−1− 1 Jest to bijektywne kodowanie wszystkich sko«czonych ci¡gów liczb nat- uralnych. Omówimy dokªadniej numeracj¦ odwrotn¡ τ−1 , gdy» chcemy udowodni¢ lemat.

Lemat 6.3 Funkcja

µ(x) =< α(a0), . . . , α(an) >, gdzie τ(a0, . . . , an) = x jest efektywn¡ numeracj¡ programów.

Oczywi±cie funkcja τ−1 powi¡zana jest z przedstawianiem liczb natural- nych w systemie dwójkowym.

Ka»da liczba naturalna wi¦ksza od zera jest sum¡ rosn¡cych pot¦g dwójki, czyli dla x ∈ N:

x + 1 = 2b0 + 2b1 + . . . 2bm gdzie bi < bi+1

Wtedy wzory a0 = b0 i ai+1= bi+1− bi− 1dla i < m opisuj¡ ci¡g, którego kodem (poprzez τ) jest liczba x.

Wyznaczanie przedstawienia x opisuj¡ podane funkcje (prymitywnie) rekuren- cyjne.

1. l(x) = µ(y < x)(x < 2y+1) 2. Pomocniczy ci¡g

c(0, x) = qt(2, x) c(n + 1, x) = qt(2, c(n, x)) 3. Wtedy

b(0, x) = rm(2, x) b(n + 1, x) = rm(2, c(n, x))

Zauwa»my, »e jest to klasyczny algorytm wyznaczania zapisu liczby natu- ralnej x w systemie binarnym opieraj¡cy si¦ na spostrze»eniu, i» cyfra "jed- no±ci"jest reszt¡ z dzielenia przez 2 (b(0, x)), a nast¦pn¡ cyfr¦ (od prawej!) wyznacza si¦ podobnie bior¡c zamiast x cz¦±¢ caªkowit¡ z tego dzielenia.

(28)

Teraz mo»na odszuka¢ cyfry 1 w powy»szym przedstawieniu.

l1(x) = Σy6l(x+1)sg(b(y, x + 1)) b1(0, x) = µ y 6 l(x + 1)(b(y, x + 1) = 1)

b1(i + 1, x) = µ y 6 l(x + 1)(b(y, x + 1) = 1 ∧ b1(i, x) < y) a1(0, x) = b1(0, x)

a1(i + 1, x) = b1(i + 1, x) − b1(i, x) − 1 x =

l1(x)

X

i=0

2a1(i,x)− 1

Dowód lematu 6.3 Wystarczy zauwa»y¢, »e d(x) = l1(x) kod(x, r) = rm(4, a1(r, x))

A(x, r) = qt(4, a1(r, x)) s¡ poszukiwanymi funkcjami.

Oznaczenia Od tej pory u»ywa¢ b¦dziemy tej numeracji i oznaczenia µ(e) = Pe, czyli Pe jest programem, który w tej numeracji otrzymaª numer e. Ustalmy n > 1.

1. Wtedy φ(n)e jest n-argumentow¡ funkcj¡ obliczan¡ przez ten program.

B¦dziemy mówi¢, »e funkcja obliczalna ma numer e.

2. Zbiór We(n) jest dziedzin¡ tej funkcji:

We(n) =Dom φ(n)e = {x ∈ Nn; Pe(x) ↓}.

3. Ee(n) jest zbiorem warto±ci tej funkcji:

Ee(n) =Ran φ(n)e = {y ∈ N ; ∃x∈NnPe(x) ↓ y}.

4. Je±li nie b¦dzie pojawiaª si¦ indeks górny n nale»y przyj¡¢, »e jest równy 1.

Nasuwa si¦ wiele pyta«: Czy ka»dy program ma dokªadnie jeden numer?

A funkcja obliczalna? Czy dla danej funkcji obliczalnej f istnieje procedura rozsztrzygaj¡ca, które liczby naturalne s¡ jej numerami? itp. Poniewa» zbiór funkcji obliczalnych ustalonej argumentowo±ci jest przeliczalny jasne jest, »e istniej¡ funkcje, które nie s¡ obliczalne. Co ciekawsze ±ensownie"deniowane funkcje s¡ nieobliczalne.

(29)

6.1 Metoda diagonalizacji

Twierdzenie 6.4 Istnieje funkcja totalna f : N 7→ N, która nie jest obliczalna.

Dowód Niech φn, n ∈ N b¦dzie ci¡giem wszystkich funkcji obliczalnych jednoargumentowych. Rozwa»my funkcj¦:

f (n) = φn(n) + 1 n ∈ Wn

0 n 6∈ Wn

Przypu±¢my, »e jest ona obliczalna. Niech e b¦dzie numerem programu j¡

obliczaj¡cego, czyli f = φe. Wtedy f(e) = φe(e), ale e ∈ We, bo f jest totalna, wi¦c z denicji f otrzymujemy f(e) = φe(e) + 1, co daje sprzeczno±¢.

Udwodnimy dwa twierdzenia: o parametryzacji i funkcji uniwersalnej, które dadz¡ matematyczne narz¦dzia do odpowiedzi na powy»sze pytania.

Nale»y zaznaczy¢, »e ka»da formalizacja poj¦cia algorytmu powinna mie¢

te wªasno±ci (efektywna numeracja algorytmów-programów, tw. o parame- tryzacji i funkcji uniwersalnej).

7 Twierdzenie o parametryzacji

Twierdzenie o parametryzacji pozwoli m.in. odpowiedzie¢ na pytanie: czy dla danej funkcji f ∈ C2o numerze e mo»na efektywnie wyznaczy¢ dla dowolnego parametru a ∈ N numer funkcji f(a, _)?

Twierdzenie to jest nieco ogólniejsze.

Twierdzenie 7.1 (O parametryzacji, s-m-n ) Dla dowolnych liczb nat- uralnych n, m > 1 istnieje totalna i obliczalna funkcja smn : N1+m −→ N taka, »e

e∈Na∈Nm φ(m+n)e (a,_) ' φ(n)smn(e,a)(_)

Dowód, szkic Dla prostoty zaªo»ymy, »e n = m = 1 i b¦dziemy swo- bodnie u»ywa¢ tych oznacze«.

Niech e, a ∈ N. Przez Πe,a oznaczymy program powstaªy z Pe poprzez mody-

kacje:

1. na pocz¡tku umieszczamy ci¡g instrukcji T(1,2), Z(1), S(1), . . . , S(1);

przy czy instrukcja S(1) wyst¦puje a-razy;

(30)

2. potem nast¦puje tekst programu Pe ze zmodykowanymi instrukcjami warunkowymi.

Z konstrukcji wynika, »e

φ(2)e (a, y) ' φ(1)Π

e,a(y)

Pozostaje zauwa»y¢, »e µ(m) = Πe,a ⇐⇒ s11(e, a) = m. Zadanie Sformalizuj powy»szy dowód.

Wró¢my do pocz¡tkowych rozwa»a«.

Wniosek 7.2 Niech n, m > 1 i ψ ∈ Cn+m b¦dzie dowoln¡ funkcj¡ obliczaln¡

n + m-argumentow¡. Wtedy istnieje totalna funkcja obliczalna f ∈ Cm taka,

»e

a∈Nm ψ(a,_) ' φ(n)f (a)(_)

Dowód Niech e b¦dzie jakimkolwiek numerem ψ. Za f wystarczy wzi¡¢

smn(e,_).//

8 Programy i funkcje uniwersalne

Niech n > 0 b¦dzie ustalon¡ liczb¡ naturaln¡.

Denicja 8.1 Funkcj¡ uniwersaln¡ dla n-argumentowych funkcji RAM-obli- czalnych nazywamy funkcj¦ Ψ(n)U : Nn+1 −→ N tak¡, »e:

e∈Nx∈NnΨ(n)U (e, x) ' φ(n)e (x)

Twierdzenie 8.2 (O funkcjach uniwersalnych) Ka»da funkcja uniwer- salna jest cz¦±ciowo-rekurencyjna, a wi¦c i RAM-obliczalna.

Denicja 8.3 Ka»dy program obliczaj¡cy funkcj¦ uniwersaln¡ nazywamy pro- gramem uniwersalnym.

Dowód Niech e b¦dzie dowoln¡ liczb¡ naturaln¡. Niech σn(e, x, k)b¦dzie kodem konguracji uzyskanej po k krokach oblicze« Pe na x. Przyjmowa¢

b¦dziemy, »e konguracj¡ nast¦pn¡ po ko«cowej jest ona sama. Wtedy (σn(e, x, k))0 jest zawarto±ci¡ licznika rozkazów, natomiast (σn(e, x, k))1 za- warto±ci¡ rejestru zerowego po k krokach oblicze« Pe .

(31)

Inaczej, funkcja σn(e, x, k) deniowana jest przez rekursj¦.

σn(e, x, 0) = cd(codn(x))

σn(e, x, k+1) = δ(< kod(e, l), A(e, l) >, σn(e, x, k)) l = (σn(e, x, k))0 < d(e) + 1 σn(e, x, k) l = (σn(e, x, k))0 > d(e) + 1 Zadanie. Wska» schemat rekursji u»yty w denicji funkcji σn(e, x, k).

Wtedy funkcje cn(e, x, k) = (σn(e, x, k))1 jn(e, x, k) = (σn(e, x, k))0

prymitywnie rekurencyjne i opisuj¡ zawarto±¢ rejestru 0 (c!) i licznik rozkazów (j) po k krokach oblicze« Pe. Wtedy

Ψ(n)U (e, x) ' cn(e, x, µ k (jn(e, x, k) > d(e) + 1)).

co oznacza, »e funkcja uniwersalna jest cz¦±ciowo rekurencyjna.

Uwaga Czy ten dowód nie wydaje Ci si¦ znajomy? A powinien!

8.1 Konsekwencje

Wydaje si¦, »e tw. o parametryzacji i funkcji uniwersalnej s¡ niezbyt istotne w rozwa»aniach dotycz¡cych funkcji obliczalnych. Nic bardziej mylnego!

Przykªadowo poka»emy, »e pewne wa»ne problemy s¡ (nie)rozstrzygalne.

Wniosek 8.4 Dla dowolnego n > 1 nast¦puj¡ce predykaty s¡ rozstrzygalne:

1. Sn(e, x, y, t) ≡ program o nr e na danej x zatrzymuje si¦ w co najwy»ej t krokach zwracaj¡c y;

2. Hn(e, x, t) ≡ program o nr e na danej x zatrzymuje si¦ w co najwy»ej t krokach;

Dowód Nieformalne uzasadnienie jest bardzo proste: konkretny program (uniwersalny) mo»na na danych e, x ±ledzi¢ przez czas t aby ustali¢, czy si¦

zatrzymaª i co obliczyª. Formalnie:

Sn(e, x, y, t) ≡ (σn(e, x, t))0 > d(e) + 1 ∧ (σn(e, x, t))1 = y Hn(e, x, t) ≡ (σn(e, x, t))0 > d(e) + 1

Inn¡ konsekwencj¡ tw. o funkcjach uniwersalnych jest

Wniosek 8.5 (Twierdzenie Kleene o postaci normalnej) Istnieje totalna funkcja obliczalna U(x) i dla ka»dego n > 1 predykaty Tn(e, x, z) takie, »e:

(32)

1. φ(n)e (x) okre±lone ⇐⇒ ∃zTn(e, x, z); 2. φ(n)e (x) ' U (µ z Tn(e, x, z)).

Dowód Tn(e, x, z) = Sn(e, x, (z)0, (z)1) i U(x) = (x)0

Na deser najwa»niejsze Twierdzenie

Twierdzenie 8.6 Problem "φx jest totalna"jest nierozstrzygalny.

Dowód( Nie wprost) Przypu±¢my, »e funkcja c(x) = 1 φx totalna

0 φx nie jest totalna jest obliczalna. Wtedy obliczalna jest funkcja

t(x, y) = ΨU(x, y) c(x) = 1

0 c(x) = 0

Z okre±lenia ka»da funkcja totalna f ∈ C1 jest postaci t(e, _) dla pewnego e.

Rozwa»my fukcj¦ g(x) = t(x, x)+1, która oczywi±cie jest totalna i obliczalna.

Przypu±¢my, »e g(x) = t(i, x); wtedy g(i) = t(i, i) ( z denicji t) i g(i) = t(i, i) + 1 (z denicji g), co daje sprzeczno±¢.

9 Zbiory rekurencyjne

9.1 Podstawowe wªasno±ci

Przypomnijmy denicj¦

Denicja 9.1 Niech n > 1 i A ⊆ Nn b¦dzie dowolnym zbiorem a cA: Nn7→

n jego funkcj¡ charakterystyczn¡:

cA(x) =  1 x ∈ A 0 x6∈ A

Mówimy, »e A jest rekurencyjny je±li cA∈ Cn. Wtedy problem (predykat) x ∈ A jest rozstrzygalny. Je±li cA6∈ Cn, to problem x ∈ A jest nierozstrzygalny.

Twierdzenie 9.2 Dla ustalonego n > 1 zbiór wszystkich podzbiorów rekuren- cyjnych A ⊆ Nn jest zamkni¦ty na operacje teoriomnogo±ciowe.

(33)

Dowód Oczywi±cie ∅, Nn s¡ rekurencyjne. Niech A, B ⊆ Nn b¦d¡ rekuren- cyjne. Wtedy wobec wcze±niejszych twierdze« wzory

cNn\A(x) = 1÷cA(x), cA∪B(x) = max(cA(x), cB(x)) i cA∩B(x) = cA(x)∗cB(x) dowodz¡ obliczalno±ci odpowiednich funkcji.

Zwykle przez zbiór rekurencyjny rozumie si¦ podzbiór N. Rozdziaª ten po±wi¦cimy zbiorom, które nie s¡ rekurencyjne. Poka»emy »e wiele wa»nych problemów w Teorii Obliczalno±ci jest nierozstrzygalnych. Cz¦sto procedur¦

obliczaj¡c¡ funkcj¦ cA nazywa si¦ rozstrzygaj¡c¡.

9.2 Problemy nierozstrzygalne w Teorii Obliczalno±ci

Twierdzenie 9.3 Problem "x ∈ Wx"jest nierozstrzygalny czyli zbiór K = {x ∈ N : x ∈ Wx} nie jest rekurencyjny.

Dowód Przypu±¢my, »e cK jest obliczalna. Wtedy wzór

g(x) = 1 x 6∈ Wx

∞ x ∈ Wx

deniuje obliczaln¡ funkcj¦. Niech m b¦dzie numerem jakiegokolwiek pro- gramu obliczaj¡cego g, czyli φm = g. Wtedy

m ∈ Wm ←→ m ∈ Domg ←→ m 6∈ Wm i mamy sprzeczno±¢.

Powy»sze twierdzenie nie mówi, »e dla konkretnego a nie umiemy rozstrzygn¡¢, czy a ∈ Dom φa. Czasem jest to bardzo proste zadanie. Twierdzenie ma ogólny charakter: nie istnieje algorytm rozstrzygaj¡cy dla ka»dego x ∈ N, czy x ∈ Dom φx.

Wniosek 9.4 Istnieje obliczalna funkcja jednoargumentowa h, dla której prob- lemy "x ∈ Dom h", "x ∈ Ran h±¡ nierozstrzygalne.

Dowód Rozwa»my funkcj¦ h(x) = x ∗ 1(ΨU(x, x)), która jest obliczalna.

Wtedy;

x ∈ Dom h ←→ x ∈ Wx ←→ x ∈ Ran h

(34)

Twierdzenie 9.5 (Problem Stopu jest nierozstrzygalny) Problem "φx(y) jest okre±lone", równowa»nie "Px(y) ↓¢zy "y ∈ Wx", jest nierozstrzygalny.

Dowód nieformalny jest bardzo prosty: gdyby problem "y ∈ Wx"byª rozstrzy- galny, to problem "x ∈ Wx»ównie», co przeczy twierdzeniu 9.3. Dokªadniej funkcja

g(x, y) =  1 y ∈ Wx 0 y 6∈ Wx

jest funkcj¡ charakterystyczn¡ tego problemu. Stosuj¡c proste podstawienie otrzymujemy: cK(x) = g(x, x), czyli funkcj¦ charakterystyczn¡ zbioru K.

Gdyby wi¦c g ∈ C2, to cK ∈ C1.

Powy»sze twierdzenie jest wa»ne: wiele problemów da si¦ sprowadzi¢

podobn¡ technik¡ do problemu stopu. Zauwa»my, »e funkcja 1(ΨU(x, y)) jest obliczalna i jest cz¦±ciow¡ funkcj¡ charakterystyczn¡ problemu stopu;

problem ten jest wi¦c cz¦±ciowo rozstrzygalny. Zauwa»my, »e wniosek 9.4 mówi, »e istniej¡ programy, dla których problem stopu jest nierozstrzygalny, wi¦c tym bardziej musi zachodzi¢ twierdzenie 9.5.

Zanim sformuªujemy ogólne twierdzenie dotycz¡ce wszystkich problemów w Teorii Obliczalno±ci jeszcze przykªad

Twierdzenie 9.6 (Problem poprawno±ci jest nierozstrzygalny) Problem

x jest funkcj¡ to»samo±ciowo równ¡ zero"jest nierozstrzygalny.

Dowód Rozwa»my funkcj¦

g(x, y) =  0 x ∈ Wx

∞ x 6∈ Wx

która jest obliczalna, gdy» g(x, y) = 0(ΨU(x, x)). Niech {gx, x ∈ N } b¦dzie rodzin¡ funkcji takich, »e gx(y) = g(x, y) dla wszelkich x, y ∈ N. Wtedy:

x∈N gx = 0 wtw x ∈ Wx.

Zastosujmy do funkcji g (wniosek z) twierdzenie o parametryzacji; niech k ∈ C1 b¦dzie totalna i taka, »e

x,y∈N g(x, y) = φk(x)(y)tj. φk(x)= gx. Wtedy

x∈N x ∈ Wx ←→ φk(x) = 0.

Cytaty

Powiązane dokumenty

5 Poka», »e w przestrzeni Hausdora punkty s¡ domkni¦te, a ci¡gi zbie»ne maj¡ tylko jedn¡

Zilustruj na podstawie tych danych nierówno´sci, opisane w zadaniu 3.1, zast þepuj þ ac odpowiednie prawdopodobie´nstwa przez ich cz þesto´sci.. Co te nierówno´sci oznaczaj

Niech zmienna losowa X przyjmuje wartości równe ilości wyrzuconych orłów, natomi- ast zmienna losowa Y przyjmuje wartość 0, jeśli w pierwszym rzucie wypadł orzeł lub wartość

Pokazać, że zbiorem wartości tej funkcji jest przedział ]1, 2]..

Wtedy zbiór Th(Mod F ((F , C, R))) wszystkich zda« prawdziwych w ka»dym modelu sko«czonym j¦zyka (F, C, R) nie jest rekurencyjnie przeliczalny, ale jego dopeªnienie jest.

Wymienić, jakie znane

‚ gdy w przedstawieniu liczby n nie ma żadnej pięciozłotówki, to przedsta- wienie zawiera co najmniej dwie dwuzłotówki, ponieważ n jest większe bądź równe 4.. Należy

Dana jest funkcja określona wzorem y= (4m-24)x+5 Dla jakiej wartości parametru m funkcja ta jest