Turingovi strojevi
7.4 Turingovi strojevi
Kroz prethodna smo dva poglavlja tragali za automatom koji bi mogao opisati bilo koji jezik. Uveli smo dvije vrste automata, no ni jedan od njih, kao ˇsto smo pokazali, nije sveobuhvatan. U prvom smo poglavlju imali jedan vrlo jednostavan automat, koji je traku ˇcitao sljedno i koji nije imao memo- riju. Pokazali smo da taj koncept nije dovoljan da bi se njime mogli opisati
7.4. TURINGOVI STROJEVI
svi jezici. U drugom smo poglavlju automat proˇsirili dodavˇsi mu memo- riju. Tako smo proˇsirili klasu jezika koje moˇzemo prepoznati automatom, no pokazalo se da i time nismo definirali sveobuhvatni automat. U ovom ´cemo poglavlju opisati automat koji prepoznaje joˇs ˇsiru klasu jezika – Turingov stroj.
Turingov stroj je automat koji nema svoju zasebnu memoriju, ali moˇze traku s koje ˇcita ulaz ujedno koristiti kao memoriju. Osim toga, Turingov stroj traku ne mora ˇcitati samo jednosmjerno - od poˇcetka prema kraju, ve´c su kod njega mogu´ci pomaci po traci u oba smjera, tako da Turingov stroj moˇze isti simbol ˇcitati i viˇse puta.
Dakle, Turingov je stroj automat koji u svakom svom koraku moˇze proˇcitati s trake znak, upisati na istu tu poziciju trake drugi znak, te po- maknuti glavu za ˇcitanje na sljede´ci ili prethodni znak na traci. Ovaj koncept razvio je engleski matematiˇcar Alan Turing (1912.-1954.).
Turingov se stroj formalno definira kao: Definicija 7.14 Turingov stroj je petorka M = hK, Σ, S, F, δi, pri ˇcemu je: • K konaˇcan skup stanja automata,
• Σ je abeceda, u kojoj imamo istakuti prazni (blank) simbol ⊔ ∈ Σ i poˇcetni simbol ⊲,
• S ∈ K poˇcetno stanje, • F = {q T ,q F } ⊆ S skup zavrˇsnih stanja, koji sadrˇzi stanja, • δ : K\{q F ,q T } × Σ → K × Σ × {L, R} funkcija prijelaza. U literaturi se mogu prona´ci vrlo razliˇcite definicije Turingovog stroja,
ˇsto moˇze itekako zbuniti manje vjeˇstog ˇcitatelja. Turingov stroj u literaturi predstavlja kao ˇcetvorka, pa sve do sedmorke. Neki autori ne istiˇcu posebno skup zavrˇsnih stanja, a neki da. U ovoj definiciji skup zavrˇsnih stanja bi se
isto tako mogao izostaviti i re´ci samo da skup stanja sadrˇzi stanja q T ,q F i q h . Neki autori razlikuju dvije abecede: jedna je abeceda jezika koji automat prepoznaje, a druga je abeceda oboga´cena specijalnim simbolima ⊲ i ⊔. Neki autori ne specificiraju, kao ˇsto smo mi napravili, posebno zavrˇsno stanje za
rijeˇc koju automat potvrduje (q T ) i za onu koju odbacuje (q F ) te posebno zavrˇsno stanje (q h ), koje sluˇzi u automatima koji ne rade odluˇcivanje, ve´c izraˇcunavanje. U tom sluˇcaju, autori definiraju funkciju δ kao parcijalnu funkciju, te sve prijelaze u stanje q F zamijenjuju nedefiniranim prijelazima. Na kraju, postoje razlike i u tome kako se definiraju mogu´ci pokreti glave za ˇcitanje. Dok neki autori zahtijevaju da se u svakom koraku glava za
ˇcitanje mora pomaknuti jedno polje lijevo ili desno, neki autori dozvoljavaju
da glava u nekim konfiguracijama ostane na mjestu. Drugim rijeˇcima, skup simbola {L, R}, koji definira pomicanje glave za ˇcitanje, moˇze se nadopuniti
POGLAVLJE 7. MATEMATI ˇ CKA TEORIJA RA ˇ CUNALSTVA 315 do {L, N, R}. Bez obzira na sve te razlike, svi autori, definiraju´ci Turingov
stroj, definiraju automat iste ekspresivnosti i istih osnovnih svojstava. Primjer 7.16 Neka je Σ =
{a, b}, i neka je zadan jezik L = {a n b n } nad Σ. Napravimo Turingov stroj koji prepoznaje ovaj jezik. On otkida jedan
a sprijeda, pa jedan b straga. Ako ostane viˇsak a-ova ili viˇsak b-ova, onda rijeˇc nije dobra, a ako ostane prazna rijeˇc, onda je ulazna rijeˇc bila dobra.
Primijetimo da tablicu kojom smo opisali Turingov stroj nismo ispunili do kraja. To bi znaˇcilo da je funkcija δ parcijalna funkcija. No, ona se moˇze upotpuniti tako da se sva nedefinirana stanja popune tako da Turingov stroj
upiˇse znak koji je proˇcitao, glavu premjesti u desno i prijede u stanje q F . Primjer 7.17 Napravimo Turingov stroj koji ´ce prepoznavati jezik L =
n b {a n c n }. Ideja je da se prvo provjeri ima li isti broj a-ova i c-ova, tako da se a-ovi
prepisuju c-ovima, a c-ovi se na kraju briˇsu. Ako se desi da ostane u rijeˇci neki a, a da iza b-ova viˇse nema c-ova, onda rijeˇc nije dobra. Isto je ako iza b-ova ostane neki c, ali u rijeˇci viˇse nema a-ova. Ako istovremeno ponestane a-ova i c-ova iza b ova, onda ´ce nam preostati rijeˇc koja zapoˇcinje odredenim brojem c-ova, iza ˇcega slijedi odreden broj b-ova. Njihovo se prebrojavanje vrˇsi tako da se briˇse po jedan c s poˇcetka rijeˇci i jedan b s kraja. Ako taj postupak zavrˇsi praznom rijeˇci, onda je ulazna rijeˇc bila dobra. Zavrˇsi li ovaj postupak rijeˇcju koja se sastoji od odredenog broja c-ova ili od odredenog broja b-ova, onda rijeˇc nije dobra.
q 0 (⊲, R, q 0 ) (c, R, q 1 )
( ⊔, L, q T ) q 1 (a, R, q 1 ) (b, R, q 1 ) (c, R, q 1 ) ( ⊔, L, q 2 ) q 2 ( ⊔, L, q 3 ) q 3 (⊲, R, q 4 ) (a, L, q 3 ) (b, L, q 3 ) (c, L, q 3 ) q 4 (c, R, q 1 ) (b, R, q 5 ) (c, R, q 4 )
q 5 (b, R, q 5 ) (c, R, q 5 ) ( ⊔, L, q 6 ) q 6 (⊲, R, q T )
( ⊔, L, q 7 )
q 7 (⊲, R, q 8 ) (b, L, q 7 ) (c, L, q 7 ) q 8 (⊲, R, q 5 ) ( ⊔, R, q F )
Tablica 7.7
7.4. TURINGOVI STROJEVI
No, kako Turingovi strojevi imaju, osim ˇcitanja, mogu´cnost pisanja na traku, oni, za razliku od prije navedenih automata, imaju mogu´cnost zapisi- vanja izlaznog rezultata na traku. Tako se Turingovi strojevi mogu koristiti
i za razliˇcita izraˇcunavanja. Primjer 7.18 Neka su dva broja zapisana u unarnom zapisu, tj. broj n je
prikazan pomo´cu n nula. Ta dva broja na traci razdvojena su znakom +. Potrebno je zbrojiti ta dva broja.
Rjeˇsenje je jednostavno: treba obrisati jednu nulu s kraja drugog broja,
a znak + treba zamijeniti nulom. Turingov stroj koji radi ovu operaciju opisan je sljede´com tablicom.
q 2 ( ⊔, R, q T ) Tablica 7.8
Dajmo joˇs dva primjera: Primjer 7.19 Napravimo sada Turingov stroj koji izokre´ce bilo koju rijeˇc
nad abecedom Σ = {a, b, c} naopako. Automat radi na sljede´ci naˇcin. Na poˇcetku rijeˇci ´ce ostati praznina ispred koje se prepisuje prvo slovo rijeˇci. Nakon toga se prepisuje drugo slovo rijeˇci ispred prvoga, itd., sve do kraja rijeˇci. Kao pomo´cni simbol, kojim ´cemo ispunjavati prostor izmedu kreirane rijeˇci i ostatka ulazne rijeˇci koristit ´cemo simbol ⊲.
Stroj je dan sljede´com tablicom. ⊲
Primjer 7.20 Napravimo Turingov stroj koji ´ce ulazni niz znakova na traci kopirati, tj. kao izlaz dati dva jednaka niza znakova odvojena razmakom. Neka je abeceda ovog stroja binarna abeceda, tj. Σ = {0, 1, ⊲, ⊔}.
POGLAVLJE 7. MATEMATI ˇ CKA TEORIJA RA ˇ CUNALSTVA 317 Stroj ´ce raditi tako da ´ce prvi znak ulaznog niza znakova brisati, i
prepisati ga dva puta. Pri tome ´ce se posljednja rijeˇc na traci trebati pomi- cati jedno polje desno prije svakog upisivanja slova u drugu rijeˇc, kako bi se dobilo mjesto za upis novog slova u drugu rijeˇc.
Ovaj je Turingov stroj neˇsto sloˇzeniji pa ´cemo ga detaljnije opisati. Stanje q 0 je poˇcetno stanje i ujedno nam sluˇzi za brisanje prvog slova iz ulazne rijeˇci. Ovisno o tome je li prvo slovo bilo 0 ili 1, stroj odlazi u stanje q 01 ili q 11 . Stanja q 01 do q 108 su stanja koja definiraju rad stroja u sluˇcaju da je obrisani znak bio 0, dok stanja q 11 do q 118 na sliˇcan naˇcin definiraju rad stroja u sluˇcaju da je obrisani znak 1. Dalje ´cemo opisati stanja q 01 do q 108 . Stanje q 01 se ponavlja dok se ne proˇcita do kraja ostatak ulazne rijeˇci. Nakon toga dolaze stanja q 02 do q 103 , koja dodaju na poˇcetak druge rijeˇci, odnosno
7.4. TURINGOVI STROJEVI
prve rijeˇci rezultata znak 0, dok preostale znakove te rijeˇci premjeˇstaju za jedno polje trake dalje. Stanje q 02 izvrˇsava se jednom i dodaje 0 na poˇcetak rijeˇci. S obzirom na to je li na mjestu gdje je upisana ta nula bio znak 0 ili
1 prelazi se u stanje q 003 , odnosno q 103 . Na kraju druge rijeˇci prelazi se u stanje q 04 , ˇcime poˇcinje obrada tre´ce rijeˇci. U prvom prolazu tre´ca se rijeˇc premjeˇsta za jedno mjesto desno na traci. Poˇcinje se stanjem q 04 , kojim se premjeˇsta razmak izmedu druge i tre´ce rijeˇci, te se ponavljaju stanja q 005 i q 105 dok se ne dode do kraja tre´ce rijeˇci. Tada stroj dode u stanje q ⊔05 , te
nakon toga prelazi u stanje q 06 . Stanje q 06 sluˇzi za vra´canje na poˇcetak tre´ce rijeˇci, a kada se dode do njenog poˇcetka, prelazi se u stanje q 07 . Stanja q 07 do q 108 dodaju znak 0 na poˇcetak tre´ce rijeˇci i premjeˇstaju ostale znakove tre´ce rijeˇci za jedno mjesto na traci u desno. Ova stanja djeluju sliˇcno kao
ˇsto djeluju stanja q 02 do q 103 , premjeˇstaju´ci drugu rijeˇc. Nakon toga, prelazi se u stanje q rew koje sluˇzi za prematanje trake na poˇcetak zapisa. Kada se dode do poˇcetka zapisa, prelazi se natrag na stanje q 0 i postupak se ponavlja za sljede´ci znak ulazne rijeˇci.
Sada se postavlja pitanje koju klasu jezika prepoznaju Turingovi stro- jevi? Imamo sljede´ce definicije:
Definicija 7.15 Neka je dan jezik L za koji postoji Turingov stroj koji za svaku rijeˇc w ∈ L staje u stanju q T , a za svaku rijeˇc x 6∈ L staje u stanju
q F . Tada kaˇzemo da je L rekurzivan jezik . Za rekurzivne jezike kaˇzemo da su odluˇcivi.
Definicija 7.16 Neka je L jezik za koji postoji Turingov stroj koji za svaku rijeˇc w ∈ L staje u stanju q T . Tada kaˇzemo da je jezik L rekurzivno prebrojiv .
Jasno je da je klasa rekurzivnih jezika (RCL) podklasa klase rekurzivno prebrojivih jezika (RCEL), tj. da vrijedi sljede´ca slika:
L RCEL RCL CFL RL
Slika 7.11
POGLAVLJE 7. MATEMATI ˇ CKA TEORIJA RA ˇ CUNALSTVA 319 No, postavlja se pitanje postoji li jezik koji je rekurzivno prebrojiv, a
koji nije rekurzivan ili je RCL = RCEL. Pokazat ´cemo da ove dvije klase nisu jednake, tj, da postoje rekurzivno prebrojivi jezici koji nisu rekurzivni.
Krenimo u konstrukciju jezika koji je rekurzivno prebrojiv, a nije rekurzi- van. Ponajprije, kreirajmo koncept koji se naziva univerzalni Turingov stroj. Univerzalni Turingov stroj kao ulaz prima par (M, w), gdje je M opis nekog Turingovog stroja, a w rijeˇc. On staje u stanju q T ako stroj M primjenjen na rijeˇc w staje u stanju q T , a ako stroj M primijenjen na rijeˇc
w staje u stanju q F , onda staje u stanju q F . Drugim rijeˇcima, univerzalni Turingov stroj odluˇcuje prihva´ca li dani Turingov stroj danu rijeˇc ili ne. Postavlja se pitanje moˇze li se neki Turingov stroj M = hK, Σ, S, F, δi efikasno kodirati na traku tako da ga univerzalni Turingov stroj moˇze ko- ristiti kao ulaz. Bez smanjenja op´cenitosti moˇzemo pretpostaviti da je
Σ= {0, 1, ⊲, ⊔}. Stavimo da je X 1 = 0, X 2 = 1, X 3 = ⊲, a X 4 = ⊔. Nadalje, preimenujmo stanja tako da stanja stroja budu q 1 ,...,q n . Pri tome, neka je S = q 1 te q n −1 =q F iq n =q T . Nadalje, kodirajmo pomicanja trake tako
da je D 1 =LiD 2 = R. Na samu traku nije potrebno zapisivati niti skup stanja, niti ulaznu abecedu, jer ´ce oboje biti implicitno zadano preko jedinog ˇsto ´cemo zapisivati na traku: preko funkcije δ prijelaza. Za svaki prijelaz je
δ(Q i ,X j ) = (Q k ,X l ,D m )
Definirajmo sljede´ci kod:
0 m 10 10 10 10 .
Sada je jasno da se bilo koja druga abeceda, osim one koju smo uzeli u razmatranje moˇze jednako lagano enkodirati na ovaj naˇcin. Neka su
c 1 ,...,c r kodovi za sve prijelaze Turingovog stroja M dobiveni na gore opisani naˇcin. Tada se cijeli Turingov stroj M kodira kao
111c 1 11c 2 11 . . . 11c n 111.
Dokaˇzimo sada neka svojstva Turingovih strojeva koja ´ce nam trebati u daljnjem razmatranju. Prvo svojstvo koje ´cemo dokazati smo ve´c koristili na prethodnoj slici, pretpostavivˇsi da je klasa RCL ⊆ RCEL. Taj je rezultat izravna posljedica definicija 7.15 i 7.16.
Korolar 7.2 Neka je L rekurzivan jezik. Onda je L rekurzivno prebrojiv jezik.
Lako se dokazuje sljede´ce svojstvo: Propozicija 7.1 Neka je L rekurzivan jezik. Onda je i L c rekurzivan jezik.
7.4. TURINGOVI STROJEVI
Dokaz. Neka je L rekurzivan jezik. Tada postoji Turingov stroj M koji odluˇcuje o jeziku L. Konstruirajmo Turingov stroj M ′ na sljede´ci naˇcin: Turingov stroj M ′ je jednak Turingovom stroju M u svemu, osim u prijela- zima koji prevode stroj u zavrˇsno stanje. Promjene su napravljene tako da
ako stroj M prelazi u stanje q T , onda stroj M ′ prelazi u stanje q F i obrnuto. Jasno je da ´ce tako definirani Turingov stroj M ′ stati u stanju q F za svaku rijeˇc w ∈ L te da ´ce stati u stanju q T za svaku rijeˇc w ′ 6∈ L. Drugim rijeˇcima,
Turingov stroj M ′ odluˇcuje o jeziku L c .
Tvrdnja prethodne propozicije jest intuitivno vrlo jasna. No, isto je tako jasno da klasa rekurzivno prebrojivih jezika ne mora biti zatvorena s obzirom na komplement. Takoder, intuicija nam govori, ako je klasa rekurzivno prebrojivih jezika zatvorena s obzirom na komplement, onda je RCEL=RCL. Naime, vrijedi sljede´ci teorem:
Teorem 7.6 c Neka je L jezik. L je rekurzivan ako i samo ako su L i L rekurzivno prebrojivi.
Iskaz ovog teorema moˇze se prikazati sljede´com slikom:
RCEL coRCEL
RCL
Slika 7.12
Prije no ˇsto dokaˇzemo ovu tvrdnju, dokazat ´cemo sljede´cu propoziciju. Propozicija 7.2 Neka su L 1 iL 2 rekurzivni (rekurzivno prebrojivi) jezici
nad istom abecedom Σ. Onda je i jezik L 1 ∪L 2 rekurzivan (rekurzivno prebrojiv).
Dokaz. Neka su jezici L 1 iL 2 rekurzivni. Neka su M 1 iM 2 Turingovi strojevi koji odluˇcuju o jezicima L 1 iL 2 . Tada konstruiramo Turingov stroj M kako slijedi.
POGLAVLJE 7. MATEMATI ˇ CKA TEORIJA RA ˇ CUNALSTVA 321 Prvo je potrebno ulazni niz znakova na traci iskopirati u dvije kopije
kako je to napravljeno u primjeru 7.20. Dakle, M prvo mora simulirati rad TS iz primjera 7.20.
Nakon toga M simulira rad TS M 1 na prvoj kopiji ulaznog niza znakova. No, TS M 1 se za svaku rijeˇc nakon konaˇcno mnogo koraka zaustavlja u stanju q T ili u stanju q F , pa ´ce tako i simulacija. Ako bi se stroj M 1 zaustavio u stanju q T , onda i stroj M staje u stanju q T . Ako bi se TS M 1 zaustavio u
stanju q F , onda TS M nastavlja s radom, simuliraju´ci sada TS M 2 na drugoj kopiji ulaznog niza znakova. M 2 takoder za svaku rijeˇc staje u konaˇcno mnogo koraka u stanju q T ili pak u stanju q F . U svakom sluˇcaju TS M u oba sluˇcaja staje i to u istom onom stanju u kojem staje TS M 2 . Jasno je da ´ce TS M stati u stanju q T ako u tom stanju staje TS M 1 ili pak M 2 , dok za rijeˇci za koje i M 1 iM 2 staju u stanju q F , i TS M staje u
stanju q F . Dakle, TS M odluˇcuje o jeziku L 1 ∪L 2 .
Ako su jezici L 1 iL 2 rekurzivno prebrojivi, onda se M konstruira malo drugaˇcije. Naime, tada nije sigurno da ´ce M 1 ikada stati, pa ne moˇzemo
prvo simulirati M 1 , a nakon toga M 2 .
Kao i u prethodnom sluˇcaju, i u ovom sluˇcaju moramo ulazni niz znakova udvostruˇciti na traci. Sada ´cemo simulirati rad M 1 iM 2 paralelno, simuliraju´ci jedan korak TS M 1 na prvoj kopiji ulaznog niza znakova, a nakon toga jedan korak TS M 2 na drugoj kopiji ulaznog niza znakova, nakon ˇcega se opet simulira korak TS M 1 na prvoj kopiji ulaznog niza znakova itd. Jedini problem koji je kod toga potrebno rijeˇsiti je kako zapamtiti gdje se nalazi glava za ˇcitanje pojedine simulacije. To se moˇze izvesti na razliˇcite naˇcine. Najjednostavniji je da se za svaki simbol σ ∈ Σ u abecedi TS M definira joˇs jedan znak σ ′ koji ´ce imati znaˇcenje znaka σ, ali ´ce dodatno pokazivati da bi se glava simuliranog TS nalazila u tom trenutku na njemu.
Ako bilo koji od Turingovih strojeva M 1 iM 2 prepoznaje rijeˇc koja se obraduje, TS M ´ce u simulaciji do´ci do koraka u kojem neki od simuliranih Turingovih strojeva staje u stanju q T . Tada i M staje u stanju q T .
Tako konstruirani TS M prepoznaje jezik L 1 ∪L 2 . Sada moˇzemo prije´ci na dokaz teorema 7.6. Dokaz teorema 7.6. Neka je jezik L rekurzivan. Tada je on, prema
korolaru 7.2, i rekurzivno prebrojiv. No, ako je L rekurzivan onda je prema propoziciji 7.1 i jezik L c rekurzi-
van. U tom sluˇcaju je, prema korolaru 7.2 jezik L c rekurzivno prebrojiv. Obrnuto, neka su jezici L 1 iL 2 rekurzivno prebrojivi. Tada postoje Turingovi strojevi M 1 iM 2 koji prepoznaju rijeˇci jezika L i L c . Bez smanjenja op´cenitosti moˇzemo pretpostaviti da su M 1 iM 2 kon- struirani tako da u sluˇcaju da ne prepoznaju neku rijeˇc odlaze u beskonaˇcnu petlju. Naime, ako neki od ovih Turingovih strojeva staje u stanju q F , ili pak funkcija prijelaza nije definirana, moˇzemo ga prebaciti u novo stanje, koje za bilo koji ulaz pomiˇce glavu u desno i vra´ca se u isto stanje.
7.4. TURINGOVI STROJEVI
Konstruirajmo TS M na sljede´ci naˇcin: M prvo kopira ulazni niz znakova u dvije kopije kako je to opisano u
primjeru 7.20. Nakon toga, sliˇcno kao u drugom dijelu dokaza propozicije
7.2, simuliramo Turingove strojeve M 1 iM 2 paralelno, tako da prvo simuli- ramo jedan korak TS M 1 na prvoj kopiji ulaznog niza znakova, pa onda jedan korak TS M 2 na drugoj kopiji ulaznog niza znakova, itd. Kako za
svaku rijeˇc w c ∗ ∈Σ ∗ vrijedi da je W ∈ L ili je we ∈ L , to svaku rijeˇc w ∈Σ prepoznaje ili TS M 1 ili TS M 2 dakle, u konaˇcno mnogo koraka ili ´ce se M 1
ili M 2 na´ci u stanju q T . Ako se M 1 nade u stanju q T , onda i M prelazi u stanje q T . Ako se pak M 2 nade u stanju q T , onda TS M prelazi u stanje q F . Jasno je da TS M odluˇcuje o jeziku L, pa je L rekurzivan. Konaˇcno, definirajmo problem koji je, kako ´ce se vidjeti, rekurzivno pre-
brojiv, ali nije rekurzivan. Problem 7.1 (Problem zaustavljanja (HP)) Neka je dan TS M i ulaz-
ni niz znakova x. Ho´ce li se TS M zaustaviti za ulaz x? Drugaˇcije definirano, neka je H jezik nad abecedom univerzalnog Tu-
ringovog stroja definiran na sljede´ci naˇcin: H = {(M, x) : |M(x) 6=ր}. Pri tome s M (x) = ր oznaˇcavamo da TS M za ulaz x odlazi u beskonaˇcnu petlju. Dakle, jezik H sadrˇzi sve rijeˇci za koje TS M ne odlazi u beskonaˇcnu petlju.
Propozicija 7.3
H je rekurzivno prebrojiv.
Dokaz. TS koji prepoznaje ovaj jezik je malo promijenjen univerzalni TS. Jedina promjena koju trebamo napraviti jest da uvijek kada on staje, prijede u stanje q T .
HP ima joˇs jedno vrlo vaˇzno svojstvo: on je potpun problem za klasu rekurzivno prebrojivih problema. To znaˇci da vrijedi sljede´ci teorem, koji ne´cemo dokazivati:
Teorem 7.7 RCL = RCEL ako i samo ako je HP ∈ RCL. No, odmah se ispostavlja sljede´ca tvrdnja.
Teorem 7.8
H nije rekurzivan. Dokaz. Pretpostavimo da postoji TS M H koji odluˇcuje o jeziku H.
Modificirajmo M H tako da dobijemo TS M D .M D kao ulaz prima kodove Turingovih strojeva i obraduje ih na sljede´ci naˇcin: za ulaz M , TS M D simulira rad TS M H za ulaz (M, M ) sve do trenutka kada M H treba stati. M H sigurno mora stati zbog pretpostavke da on odluˇcuje o jeziku H. Ako M H staje u stanju q T , TS M D ulazi u stanje koje ´ce u beskonaˇcnoj petlji pomicati glavu za ˇcitanje u desno. Ako M H staje u stanju q F , onda M D staje u stanju q T .
POGLAVLJE 7. MATEMATI ˇ CKA TEORIJA RA ˇ CUNALSTVA 323
Sada se postavlja pitanje ˇsto je M D (M D )?
Ako je M D (M D )= ր, to, po definiciji TS M D znaˇci da M H prihva´ca rijeˇc (M D ,M D ). Dakle, (M D ,M D ) ∈ H. No tada po definiciji od H vrijedi
da je (M D (M D ) 6=ր. Dakle, M D (M D ) 6=ր. Tada, prema definiciji od M D TS M H odbacuje rijeˇc (M D ,M D ). Dakle, (M D ,M D ) 6∈ H. No tada, prema definiciji od H
vrijedi da je M D (M D )= ր.
Dakle, ovakav TS M D ne moˇze postojati. No, ako je H rekurzivan, onda je M D dobro definiran, pa se zakljuˇcuje da H ne moˇze biti rekurzivan. Dajmo, za kraj ovog poglavlja, joˇs nekoliko jezika koji su rekurzivno prebrojivi, a nisu rekurzivni.
Propozicija 7.4 Sljede´ci jezici nisu rekurzivni:
1. {M|M se zaustavlja za sve ulaze}
2. {(M, x)| postoji y takav da je M(x) = y}.
3. {(M, x, y)|M(x) = y}. Dokaz. Izvedite da sami. Reducirajte te probleme na HP.
Interesantno je vidjeti ˇsto ´ce se dogoditi uvedemo li nedeterministiˇcki Turingov stroj i kakva ´ce biti klasa jezika koju ´ce on prepoznavati s obzirom na klasu jezika koju prepoznaje deterministiˇcki Turingov stroj.
Jasno je kako se definira nedeterministiˇcki Turingov stroj (NTS): tako
da se δ definira kao relacija prijelaza, a ne kao funkcija. No, pokazuje se da se, ˇsto se tiˇce klase jezika o kojoj automat odluˇcuje, ne dobiva niˇsta nova. Naime, vrijedi sljede´ci teorem.
Teorem 7.9 Neka za jezik L postoji nedeterministiˇcki Turingov stroj M 1 koji ga prihva´ca (koji o njemu odluˇcuje). Tada postoji deterministiˇcki Turingov stroj koji prihva´ca jezik L (odluˇcuje o njemu).
Ovaj teorem se moˇze dokazati na razne naˇcine, no svi zahtjevaju uvode- nje dodatnih automata preko kojih se uspostavlja ekvivalencija. Najlakˇse se ekvivalencija uspostavlja preko deterministiˇckih Turingovih strojeva s viˇse traka (VTTS). Tada se dokazuje da vrijedi T S ⇔ V T T S ⇔ NT S. No ovo bi razmatranje znatno proˇsirilo ovo poglavlje, za ˇsto nema potrebe. Oni koji su zainteresirani, ovaj dokaz, kao i svu potrebnu aparaturu koju treba uvesti za dokaz mogu prona´ci u [3].
No, uvodenje nedeterministiˇckih Turingovih strojeva dovodi nas do druge zanimljive stvari u teoriji algoritama. Oznaˇcimo li s P klasu svih proble- ma koji su rjeˇsivi u polinomno mnogo koraka deterministiˇckog Turingovog stroja s obzirom na veliˇcinu ulaza, a s N P klasu svih onih koji su rjeˇsivi u polinomno mnogo koraka nedeterministiˇckog Turingova stroja s obzirom na veliˇcinu ulaza. Prirodno se postavlja pitanje, koje je jedno od najpoznatijih
7.5. ZADACI
nerjeˇsenih problema danaˇsnje matematike: pitanje vrijedi li P = N P ? Ovo pitanje ve´c desetlje´cima pokuˇsava rijeˇsiti velik broj matematiˇcara. Jasno je
da je P ⊆ NP , no postoje klase problema za koje se lako dokazuje da se nalaze u klasi N P , ali za koje ne postoji algoritam koji bi pokazao da su u klasi P .
Ovdje se, zapravo, radi o definiciji vremenske sloˇzenosti algoritama na Turingovom stroju. Nadalje, interesantno je, takoder, da vrijedi da ako je Turingova sloˇzenost nekog problema (najmanja sloˇzenost koju moˇze posti´ci TS rjeˇsavaju´ci taj problem) Θ(f (n)), onda ´ce algoritamska sloˇzenost tog problema (u smislu raˇcunalnih programa, kako je definirano u poglavlju 4) takoder Θ(f (n)).
Tijekom tog istraˇzivanja doˇslo se do nekih interesantnih rezultata, a jednim od najznaˇcajnijih zavrˇsit ´cemo ovo poglavlje:
Taj se rezultat veˇze uz jedan istaknuti problem koji se zove problem ispunjivosti propozicijske formule u konjunktivnoj normalnoj formi (SAT):
Problem 7.2 (SAT) Neka je zadana formula raˇcuna sudova (sud) F u konjunktivnoj normalnoj formi. Postoji li interpretacija i takva da je i(F ) = 1?
Teorem 7.10 (Cook) P = N P ako i samo ako je SAT ∈P. Dokaz ovog teorema provodi se dokazivanjem da se svaki Turingov stroj
M i svaki ulaz w poveˇze s nekom formulom raˇcuna sudova u konjunktivnoj normalnoj formi s najviˇse tri literala po konjunktu koja je ispunjiva ako i samo ako M prihva´ca w. Takoder se pokazuje da se takva formula moˇze prona´ci u polinomno mnogo koraka s obzirom na veliˇcinu ulaza (M, w).
Postoji li TS (algoritam) koji moˇze u polinomno mnogo koraka rijeˇsiti problem SAT , on ´ce mo´ci zajedno s TS koji u polinomno mnogo koraka generira formulu F , za svaki TS M i ulaz w odrediti prihva´ca li M ulaz w i to u polinomnom vremenu. Detalje ovog dokaza moˇzete na´ci u [6].