You are on page 1of 12

1 Tjuringova maina

1.1 Uvod
Digitalni racunar se na apstraktnom nivou obicno prikazuje kao cjelina sastavljena od
procesora, memorije i ulazno-izlaznih ureaja. Procesor iz memorije pribavlja naredbe
i podatke nad kojima se vri obrada u skladu sa znacenjem naredbi a dobijeni rezultati
se vracaju u memoriju. Podaci koji ce biti obraeni se, preko ulazno-izlaznih ureaja,
unose u memoriju odnosno iz memorije se preuzimaju rezultati obrade i prikazuju na
odgovarajuci nacin. Komunikacija djelova racunara se obavlja preko magistrala.
Tjuringova maina je preteca ovakvog modela racunara, pri cemu su neka svojstva ideali-
zovana. To se odnosi na memoriju za koju se pretpostavlja da je potencijalno beskonacna.
Preciznije, na pocetku izvravanja Tjuringove maine zauzet je samo konacan broj mem-
orijskih registara, a isto vazi i u svakom koraku izracunavanja. Ne postoji ogranicenje
koliki je taj konacan broj registara. U svakom koraku izracunavanja moguce je i zahti-
jevati novi, do tada neiskoriteni memorijski registar i svaki takav zahtjev se ispunjava.
Sa druge strane, Tjuringova maina je restrikcija koncepta savremenog racunara u smislu
operacija koje je u stanju izvravati a koje su elementarne. Zanimljivo je da su te op-
eracije ipak dovoljne za opisivanje proizvoljnih algoritama. Njihova prednost u odnosu
na bogatije programske jezike je upravo u jednostavnosti koja olakava analizu.
1.2 Alan Tjuring
Alan Mathison Turing je bio engleski matematicar, logicar, kriptoanaliticar i kompjuter-
ski naucnik. Ostvari je veliki uticaj na kompjutersku nauku time to je dao formal-
izaciju koncepata "algoritma" i "izracunavanja" putem Tjuringove maine, koja je odi-
grala znacajnu ulogu u kreiranju modernih kompjutera. Za Tjuringa se smatra da je
otac kompjuterske nauke i vjetacke inteligencije. U zickom smislu, imao je mnoge
karakteristike koje upucuju da je imao Aspergerov sindrom
1
.
Tokom drugog svjetskog rata Tjuring je radio za vladinu kolu za kriptograju (GCCS)
u Bletchley Park, Britanskom centru za deifrovanje. Vremenom je postao voa sekcije
koja je bila odgovorna za razbijanje ifara njemacke mornarice. Razvio je niz tehnika za
razbijanje njemackih ifara, ukljucujuci i metod Bombe, elektromehanicke maine koja je
mogla pronaci postavke maine Enigma.
Nakon rata je radio za National Physical Laboratory gdje je kreirao jedan od prvih diza-
jna racunara sa pohranjenim programom, ACE. Godine 1948 se doao u Max Newmans
Computing Laboratory na Manchester University gdje je pomagao u razvoju Manchester
kompjutera i gdje se zainteresovao za matematicku biologiju. Napisao je clanak o hemi-
jskoj osnovi morfogeneze i predvidio oscilatorne hemijske reakcije kao to su reakcija
Bjelousov-

Zabotinski (Belousov-Zhabotinsky oscilating reaction) koja je prvi put uocena


1960. godine.
1
To je poremecaj iz spektra autizma (autism spectrum disorder - ASD) kojeg karakteriu znacajne
tekoce u socijalnoj interakciji, skupa sa ogranicenim i repetitivnim obrascima ponaanja i interesa.
Od drugih tipova autizma se razlikuje po relativno visokom stepenu ocuvanja lingvistickog i kognitivng
razvoja. Mada se ne uzima kao element dijagnoze, cesto se pojavljuju slucajevi zicke "trapaovosti" i
atipicnog koritenja jezika.
1
Tjuringva homoseksualnost je rezultirala kriminalnim progonom godine 1952 kada je ho-
moseksualnost bila ilegalna u Velikoj Britaniji. Prihvatio je tretman zenskim hormonima
(hemijska kastracija) kao alternativu za zatvor. Umro je 1954, nekoliko sedmica prije
svog 42-og roendana, od trovanja cijanidom (gljivama). Istraga je utvrdila da je to
bilo samoubistvo; njegova majka i neki drugi su vjerovali da je umro nesretnim slucajem.
Dana 10.09.2009. godine, nakon Internetske kampanje, Britanski premijer Gordon Brown
je objavio javno izvinjenje u ime Britanske vlade zbog nacina na koji je Alan Tjuring bio
tretiran nakon rata.
1.3 Alfabet
Svaki problem se izrazava u nekom jeziku. Alfabet je skup znakova koji su nedjeljive
cjeline. Rijec na nekom alfabetu je bilo koja konacna sekvenca znakova tog alfabeta.
Sekvenca od nula znakova se naziva prazna rijec. Rijeci se razdvajaju znakom blanko
koji se ne smatra dijelom alfabeta vec pomocnim simbolom.
Jezik je neki poskup skupa svih rijeci odgovarajuceg alfabeta. Rijec t je podrijec rijeci q
ako postoje, mozda i prazne, rijeci u i v tako da je q = utv.
Alfabet je obicno konacan skup znakova jer sve to se moze iskazati beskonacnim pre-
brojivim alfabetom a
1
; a
2
; ::: moze se iskazati i najjednostavnijim, unarnim, alfabetom
A = 1. Rijeci alfabeta 1; 11; 111; ::: se mogu identikovati sa znacima proizvoljnog
beskonacnog alfabeta. Ako se posebno ne naglasi, u nastavku ce biti koriten unarni
alfabet A = 1. Pored simbola 1 ce biti koriten i blanko znak za cije oznacavanje ce,
radi preglednosti, biti koriten znak 0.
1.4 Neformalni opis Tjuringove maine
Tjuringova maina se sastoji od :
Trake, koja je podijena u celije, memorijske registre, koja se neograniceno pruza
lijevo i desno; broj celija (tj. duzina trake) je neogranicen; sadrzaj svake celije je ili
znak 1 ili blanko znak (znak 0),
Glave, koja se uvijek nalazi nad tacno jednom celijom trake i moze:
- procitati sadrzaj celije nad kojom se nalazi i
- upisati u celiju nad kojom se nalazi znak 1 ili 0 (blanko znak, tj. obrisati celiju)
ili se pomjeriti za jedan korak u lijevo ili u desno u odnosu na trenutnu poziciju,
Indikatora stanja maine
Tjuringova maina se u svakom trenutku nalazi u tacno jednom od konacno mnogo stanja
koje se eventualno mijenja nakon svakog koraka izracunavanja. Skup svih stanja maine
ce biti oznacen sa S = q
1
; q
2
; :::. Izvravanje maine se izvodi pod dejstvom programa
koji cini neki konacan niz naredbi. Svaka naredba je cetvorka oblika
q
i
s o q
j
2
gde su q
i
i q
j
neka stanja iz skupa S, s je znak nad kojim se nalazi glava maine a
o 1; 0; L; R je oznaka operacije. U svakom koraku rada maina analizira stanje u
kojem se nalazi i sadrzaj celije nad kojom je glava a zatim izvrava naredbu koja ima
odgovarajuce vrijednosti parametara q
i
i s. Efekat izvrenja naredbe je dvojak. Najprije
se, u zavisnosti od vrijednosti parametra o, obavi:
Ako je o = 1 tada se u celiju nad kojom se nalazi glava upisuje znak 1,
Ako je o = 0 tada se u celiju nad kojom se nalazi glava upisuje znak 0,
Ako je o = L tada se glava pomjera ulijevo za jednu celiju
Ako je o = R tada se glava pomjera udesno za jednu celiju
Nakon toga maina mijenja stanje i prelazi u stanje q
j
.
Primjeri naredbi su :
q
5
0 1 q
17
: Ako se maina nalazi u stanju q
5
a glava nad znakom blanko u celiju se
upisuje znak 1 i prelazi se u stanje q
17
;
q
1
0 0 q
2
: Ako se maina nalazi u stanju q
1
a glava nad znakom blanko u celiju se
upisuje blanko znak i prelazi u stanje q
2
. Ovakva naredba sluzi samo za promjenu
stanja maine;
q
0
1 L q
0
: Ako se maina nalazi u stanju q
0
a glava nad znakom 1 glava se pomjera
ulijevo a maina ostaje u istom stanju
Ako se zeli da maina radi deterministicki program smije sadrzavati samo jednu naredbu
za svaku kombinaciju stanja q
i
i sadrzaja celije s nad kojom je glava. Naprimjer u
programu se ne smiju pojaviti sljedece naredbe :
q
4
1 1 q
5
q
4
1 L q
2
jer im se poklapaju vrijednosti parametara q
i
i s a vrijednosti parametara o i q
j
razlikuju.
U slucaju nedeterministickih maina ovakav zahtjev ne postoji.
Konvencija je da se stanje q
0
S zove pocetno stanje. Rijec se na traci prikazuje kao
neprekidan niz celija koje sadrze znak 1 a sa lijeve i desne strane rijeci se nalazi najmanje
po jedan znak blanko odnosno znak 0. U pravilu, na pocetku i kraju glava maine se
nalazi iznad prve celije slijeva koja sadrzi znak 1. Skup stanja S ce biti proiren novim
stanjem q
z
koje ce se zvati zavrno stanje. Maina u tom stanju prekida izvrenje.
3
1.5 Formalni opis Tjuringove maine
Neka su :
S : konacan skup stanja
q
0
: pocetno stanje, q
0
S
q
z
: zavrno stanje, q
z
S
A = 0; 1 alfabet
: (S q
z
) A (A ' L; R) S
Tada se Tjuringova maina denie kao ureena petorka (S; q
0
; q
z
; A; ).
Opis trake je preslikavanje F : Z A tako da ako je u celiji sa indeksom z upisan znak
0 ili 1 tada je F (z) = 0 ili F (z) = 1.
Konguracija Tjuringove maine M = (S; q
0
; q
z
; A; ) je trojka (F; q; e) gdje su:
F : opis trake
q S : tekuce stanje
e Z : broj celije nad kojom se nalazi glava
Naredba Tjuringove maine M = (S; q
0
; q
z
; A; ) je cetvorka (q
i
; s; o; q
j
) gdje je (q
i
; s) =
(o; q
j
). Preslikavanje se naziva program. Pri tome vazi
q
i
= q
0
i
. s = s
0
= (q
i
; s) = (q
0
i
; s
0
)
Racunski korak Tjuringove maine M = (S; q
0
; q
z
; A; ) za naredbu I = (q
i
; s; o; q
j
) je
svaki par konguracija ((F
0
; q
0
; e
0
) ; (F
00
; q
00
; s
00
)) za koje vazi:
q
i
= q
0
F
0
(e
0
) = s
q
j
= q
00
Ako je operacija o = 1 vazi :
- e
0
= e
00
- F
0
i F
00
se poklapaju osim u e
00
gdje je F
00
(e
00
) = 1
Ako je operacija o = 0 vazi
- e
0
= e
00
- F
0
i F
00
se poklapaju osim u e
00
gdje je F
00
(e
00
) = 0
4
Ako je operacija o = L vazi
- e
0
1 = e
00
- F
0
i F
00
se poklapaju
Ako je operacija o = R vazi
- e
0
+ 1 = e
00
- F
0
i F
00
se poklapaju
Da je ((F
0
; q
0
; e
0
) ; (F
00
; q
00
; s
00
)) racunski korak naredbe I oznacava se sa (F
0
; q
0
; e
0
)
I
(F
00
; q
00
; e
00
).
Izracunavanje za Tjuringovu mainu M = (S; q
0
; q
z
; A; ) i program P opisan funkcijom
je niz konguracija (F
0
; q
0
; e
0
), (F
1
; q
1
; e
1
), ... , (F
m
; q
m
; e
m
) tako da :
(F
0
; q
0
; e
0
)
I
1
(F
1
; q
1
; e
1
) za neku naredbu I
1
(programa P) i stanje q
0
= q
0
(\k N) (0 < k < m1)

F
k1
; q
k1
; e
k1


I
k

F
k
; q
k
; e
k

(F
m1
; q
m1
; e
m1
)
I
m
(F
m
; q
m
; e
m
), za q
m
= q
m


\k = 1; m1

q
k
,= q
z

e
0
= 0; (\i < 0) (F
0
(i) = 0)
(n > 0) (k
1
; :::; k
n
) (e
0
_ k
1
< k
2
< ::: < k
n
) tako da vazi
- (\i; e
0
_ i _ k
1
) (F
0
(i) = 1; F
0
(k
1
+ 1) = 0)
- (\i; k
1
+ 1 _ i _ k
2
) (F
0
(i) = 1; F
0
(k
2
+ 1) = 0)
- ...
- (\i; ) (k
n1
+ 1 _ i _ k
n
) (F
0
(i) = 1)
- (\i; k
n
< i) (F
0
(i) = 0)
F
m
(e
m
) = 1, i (\i < e
m
) (F
m
(i) = 0)
k _ e
m
:
- (\i; e
m
_ i _ k) (F
m
(i) = 1)
- (\j > k) (F
m
(j) = 0)
Varijante Tjuringove maine su :
TM sa bogatijim alfabetom
TM sa vie zavrnih stanja (u kojem svako od njih simbolizuje rezultat rjeavanja
problema)
TM sa lijevo ogranicenom trakom
TM sa vie traka i glavom za svaku od njih
TM sa jednom trakom i vie glava nad njima
5
TM sa 2D trakom koja je beskonacna po obje dimenzije
TM koje dozvoljavaju u istoj naredbi upis u celiju i pomjeranje glave
Nedeterministicke TM ( je relacija a ne funkcija tj. moze postojati vie naredbi
za isto stanje i sadrzaj celije)
Nijedna od ovih varijanti ne proiruje klasu Tjuring izracunljivih funkcija (mogu izracu-
nati samo ono to moze i osnovna verzija TM)
Izracunljiva funkcija je samo ona koja je Tjuring izracunljiva.
1.6 Zadaci
Zadatak. Neka je na traci data samo jedna rijec sastavljena od jedinica (a sve ostale celije
sadrze znak 0); glava je nad krajnjim lijevim znakom. Napisati program koji dopisuje
dva znaka 1 sa desne strane rijeci a zatim se glava vraca ulijevo na pocetak rijeci i maina
staje.
Rjeenje. Osnovni koncept rjeavanja je da se na svakom koraku ispituje tekuci znak.
Ako je to 1 glava se pomice udesno; ako je to 0 znak se mijenja u 1 i glava ponovo pomice
udesno, znak se mijenja u 1; zatim se vri pomjeranje ulijevo sve dok se ne naie na 0;
tada se glava pomjeri jedno mjesto udesno i program zavrava.
Naredba Akcija
q
0
1 R q
0
glava se pomjera udesno na kraj rijeci
q
0
0 1 q
1
na mjestu prve 0 se upisuje 1 i prelazi se u stanje q
1
q
1
1 R q
2
glava se pomjera udesno
q
2
0 1 q
3
na mjestu druge 0 se upisuje 1 i prelazi u stanje q
3
q
3
1 L q
3
glava se pomjera ulijevo sve dok ima znakova 1
q
3
0 R q
z
na prvoj 0 glava ide udesno i zaustavlja se
Table 1: Primjer Tjuringove masine
Niz koji opisuje izvravanje ovog programa je dat u nastavku.
q
0
: 011000:::
q
0
: 011000:::
q
0
: 011000:::
q
1
: 011100:::
q
2
: 011100:::
q
3
: 011110:::
q
3
: 011110:::
q
3
: 011110:::
q
3
: 011110:::
q
3
: 011110:::
q
z
: 011110:::
U svakom redu je navedeno stanje a podvucena je pozicija koja odgovara tom stanju.
Ovo se kompaktnije opisuje tabelom.
6
Stanje 1 0
q
0
q
0
1 R q
0
q
0
0 1 q
1
q
1
q
1
1 R q
2
q
2
q
2
0 1 q
3
q
3
q
3
1 L q
3
q
3
0 R q
z
Table 2: Tabelarni opis Tjuringove masine
Zadatak. Napraviti program za Tjuringovu mainu koja izracunava funkciju f (x) = 0.
Rjeenje. Zadatak se rjeava tako da se u svakom koraku znak 1 mijenja sa 0. Kraj se
detektuje tako da se ova zamjena izvrava u okviru jednog stanja i da se u okviru istog
stanja ispituje da li je tekuci znak 0.
Stanje 1 0
q
0
q
0
1 0 q
1
q
0
0 0 q
z
q
1
q
1
0 R q
0
Table 3: Racunanje f(x)
Zadatak. Napraviti program za Tjuringovu mainu koja racuna nasljednika prirodnog
broja n.
Rjeenje. Nasljednik prirodnog broja je broj koji je za 1 veci od datog broja. Zadatak se
rjeava tako da se glava pomakne jedno mjesto ulijevo, upie znak 1 i zavri posao.
Stanje 1 0
q
0
q
0
1 L q
1
q
1
q
1
0 1 q
z
Table 4: Nasljednik prirodnog broja
Zadatak. Napraviti program za Tjuringovu mainu koja racuna vrijednost funkcije
f (n) = 2n.
Rjeenje. Zadatak se rjeava tako da se tekuci znak 1 zamijeni sa 0, prou svi znaci 1 u
toj rijeci, proe i jedan znak 0 iza te rijeci, prou sve jedinice ako ih eventualno ima iza
te nule, dodaju dva znaka 1, glava vrati preko svih jedinica ulijevo, zatim pree preko
znaka 0 koji razdvaja dvije rijeci, prou sve jedinice pocetne rijeci i doe do prvog znaka
1 te rijeci. Kriterij zaustavljanja je da posljednje stanje, zaduzeno za detekciju jedinica
u prvoj rijeci, detektuje znak 0.
Svaka celija se ovdje cita po sljedecem redu : novi simbol na tekucoj lokaciji (0,1), akcija
(L, R) i novo stanje.
7
Stanje 1 0
q
0
0 R q
1
0 R q
z
q
1
1 R q
1
0 R q
2
q
2
1 R q
2
1 R q
3
q
3
1 L q
4
q
4
1 L q
4
0 L q
5
q
5
1 L q
5
0 R q
0
Table 5: Mnozenje sa 2
Ilustracija zadatka za mnozenje sa 2
U narednim primjerima Tjuringova maina je data estorkom Q; ; ; ; q
0
; F gdje je:
Q : konacan skup stanja
: skup ulaznih simbola (alfabet)
: skup simbola na traci ukljucujuci i simbol # za prazno
: tranzicijska funkcija : Q Q L; R
q
0
: inicijalno stanje
F : skup konacnih stanja
Zadatak. Zadata je Tjuringova maina
TM = (q
1
; q
2
; q
3
; 0; 1 ; 0; 1; # ; ; q
0
; q
z
)
Maina cita niz znakova i krajnji desni mijenja simbolom #.
Rjeenje. Dijagram za ovaj program je u nastavku.
8

Citanje niza simbola i ispravka krajnjeg desnog simbola


Ovdje se " 1; 1; R" cita : Ako je q
0
= 1 upisati 1 (1 ostaje 1) i idi desno u stanje q
1
" itd.
Program je dat u obliku tabele.
Stanje 1 0 #
q
0
0; R; q
1
1; R; q
1
q
1
0; R; q
1
1; R; q
1
#; L; q
2
q
2
#; L; q
3
#; L; q
3
q
3
0; L; q
3
1; L; q
3
#; L; q
z
Table 6: Citanje niza znakova i ispravka krajnjeg desnog simbola
Niz kojim se ilustruje rad ovog programa je u nastavku.
q
0
: #1110#
q
1
: #1110#
q
1
: #1110#
q
1
: #1110#
q
1
: #1110#
q
2
: #1110#
q
3
: #111##
q
3
: #111##
q
3
: #111##
q
3
: #111##
q
z
: ##111##
Zadatak. Napraviti program koji cita niz nula i jedinica i daje broj jedinica u nizu. Izlaz
je 0 ako je broj jedinica u nizu paran a 1 ako je broj jedinica neparan.
Rjeenje. Akcije koje se obavljaju su :
Trazenje jedinica slijeva udesno
Simboli 0 se citaju ali se ignoriu
Odrzava se brojac ako se naie na simbol 1 u skladu sa tim da li je broj jedinica
paran ili neparan
Kad se naie na znak # izlaz se pie na tekucu poziciju
Skup stanja je sljedeci :
q
0
indicira da li je broj simbola 1 paran
9
q
1
indicira da li je broj simbola 1 neparan
Dijagram za ovaj program je u nastavku.
Brojac pariteta broja jedinica u nizu
Program je dat sljedecoj na tabeli.
Stanje 1 0 #
q
0
1 R q
1
0 R q
0
0 R q
z
q
1
1 R q
0
0 R q
1
1 R q
z
Table 7: Utvrdjivanje pariteta
Rad je ilustrovan na sljedecem primjeru.
q
0
: 1011010#
q
1
: 1011010#
q
1
: 1011010#
q
0
: 1011010#
q
1
: 1011010#
q
1
: 1011010#
q
0
: 1011010#
q
0
: 1011010#
q
z
: 10110100
Zadatak. Zadata je Tjuringova maina
TM = (q
1
; q
2
; q
3
; 0; 1 ; 0; 1; # ; ; q
0
; q
z
)
Prethodni primjer modikovati na nacin da se izlaz stavlja nakon simbola # tako da se
dopie jo jedan takav simbol. Drugim rijecima ako je string 01# tada je izlaz u obliku
01#1# a izlaz iz stringa iz prethodnog primjera bi trebao biti 1011010#0#.
Rjeenje. Ovdje je potrebna dodatna akcija za trazenje simbola # i stavljanje izlaza iza
njega. Dijagram za ovaj program je u nastavku.
10
Modikacija programa za odreivanje pariteta
Program je dat na narednoj tabeli.
Stanje 1 0 #
q
0
1 R q
1
0 R q
0
# R q
2
q
1
1 R q
0
0 R q
1
# R q
3
q
2
0 R q
z
q
3
1 R q
z
Table 8: Modikacija programa za odredjivanje pariteta
Rad je ilustrovan na sljedecem primjeru.
q
0
: 1011010##
q
1
: 1011010##
q
1
: 1011010##
q
0
: 1011010##
q
1
: 1011010##
q
1
: 1011010##
q
0
: 1011010##
q
0
: 1011010##
q
2
: 1011010##
q
z
: 1011010#0
Zadatak. Zadata je Tjuringova maina
TM = (q
1
; q
2
; q
3
; 0; 1 ; 0; 1; # ; ; q
0
; q
z
)
Napraviti program koji dodaje 1 broju koji je predstavljen binarno, sa mogucim vodecim
nulama.
Rjeenje. Aktivnosti koje se obavljaju su:
Trazenje posljednje znacajne cifre
Kretanje ulijevo i praviti prenos. Ako je pronaena 0 mijenja se jedinicom i posao
se zaustavlja; Ako je pronaena 1 mijenja se sa 0 i nastavlja sa kontrolom prenosa
11
Figure 1: Dodavanje jedinice na binarni zapis broja
Stanje 1 0 #
q
0
1 R q
0
0 R q
0
# L q
1
q
1
0 L q
1
1 L q
z
1 L q
z
Table 9: Table Caption
Dijagram za ovaj program je u nastavku.
Program je dat na sljedecoj tabeli.
Rad programa je ilustrovan na sljedeca dva primjera.
Primjer 1.
q
0
: #110#
q
0
: #110#
q
0
: #110#
q
0
: #110#
q
1
: #110#
q
z
: #111#
Primjer 2.
q
0
: #11#
q
0
: #11#
q
0
: #11#
q
1
: #11#
q
1
: #10#
q
1
: #00#
q
z
: #100#
.
12

You might also like