Académique Documents
Professionnel Documents
Culture Documents
U računarstvu, teorija izračunljivosti je grana teorije računanja koja proučava probleme koji su računski rješivi koristeći
Teorija se izračunljivosti razlikuje od povezane discipline računske teorije složenosti, koja se bavi pitanjem koliko se učinkovito
Sadržaj
[sakrij]
1 Uvod
3 Moć automata
7 Vidi još
8 Izvori
Uvod [uredi]
Središnje pitanje računarstva jest ono ograničenja računarskih uređaja. Jedan pristup u odgovaranju ovog pitanja jest
razumijevanje problema koje možemo riješiti uz pomoć računala. Suvremeni računarski uređaji često naizgled posjeduju
beskonačan kapacitet za računanje, i lako je zamisliti da, uz dovoljnu količinu dostupnog vremena, možemo koristiti računala za
rješavanje bilo kojeg problema. U drugu ruku, moguće je pokazati jasne granice mogućnosti računala, čak i uz dane proizvoljno
velike računske resurse, za rješavanje naizgled jednostavnih problema. Problemi se formalno izražavaju kao problem odluke
koji se sastoji od konstrukcije matematičke funkcije koja za svaki ulaz vraća ili 0 ili 1. Ukoliko je vrijednost funkcije za ulaz
jednaka 0, tada je odgovor "ne", inače je odgovor "da".
Kako bi istražili ovo područje, računalni su znanstvenici izmislili teoriju automata koja se bavi problemima poput sljedećeg: za
dani formalni jezik i string, je li string član tog jezika? Ovo je ponešto ezoteričan način postavljanja ovog pitanja, tako da primjer
djeluje prosvjetljujuće. Taj se jezik može definirati kao npr. skup svih stringova znamenke čije predstavljaju prost broj. Pitanje je
li ulazni string član ovog jezika je istovjetno pitanju je li broj koji string predstavlja prost broj. Slično, definira se jezik kao skup
svih palindroma, kao skup svih stringova koji se sastoje samo od slova 'a'. U ovim primjerima, lako je vidjeti da je konstruiranje
računala za rješavanje jednog problema u nekim slučajevima lakše nego u nekim drugima.
Ali u kojem je stvarnom smislu ova opservacija istinita? Može li se definirati formalni način u kojem se može shvatiti koliko je
težak pojedini problem za rješavanje računalom? Cilj je teorije izračunljivosti i teorije automata da odgovori na ovo pitanje.
Kako bi se odgovorilo na središnje pitanje teorije automata, potrebno je na formalni način definirati što je uopće automat. Postoji
ili kraće DKA je jednostavno konačni automat, jednostavni model računanja. Stvarni računarski uređaji koji danas
postoje se mogu modelirati kao konačni automati. Takav stroj posjeduje skup stanja, te skup prijelaza stanja koji
djeluju u odnosu na ulazni tok. Određena su stanja definirana kao prihvatljiva. Ulazi tok se usmjerava u stroj jedan po
jedan znak (simbol). Prijelazi stanja za trenutno stanje se uspoređuju sa ulaznim tokom, i ako postoji sparujući prijelaz
stroj može ući u novo stanje. Ako je na kraju čitanja ulaznog toka stroj u prihvatljivom stanju, cijeli ulazni tok je
prihvaćen.
Potisni automat
Sličan konačnom automatu, osim što ima još dostupan i stog izvršavanja, kojem se dozvoljava rast do proizvoljne
veličine. Prijelazi stanja dodatno specificiraju dodaje li se simbol na stog, ili se skida simbol sa vrha stoga.
Turingov stroj
Također sličan konačnom automatu, osim što se ulaz nalazi na "traci" izvršavanja koju Turingov stroj može čitati, na
koju može pisati, te pomicati svoju "glavu" za čitanje i pisanje naprijed i nazad. Traci je dozvoljen rast do proizvoljne
veličine. Turingov je stroj sposoban obaviti složene izračune koji mogu proizvoljno dugo trajati. Ovo je možda
najvažniji model računanja u računarstvu, jer simulira računanje u odsutnosti predefiniranih ograničenja resursa.
U ovom slučaju može postojati više od jedne trake, čak štoviše - više od jedne glave po traci. Iznenađujuće je da bilo
koje računanje koje može obaviti ovaj stroj također može obaviti i obični Turingov stroj, iako bi mu za to trebalo znatno
Imajući na umu ove računske modele, mogu se odrediti njihove granice. To jest, koje klase formalnih
Računalni znanstvenici zovu bilo koji jezik kojeg prihvaća konačni automat regularni jezik. Zbog
ograničenja o konačnom broju stanja u konačnom automatu, može se lako vidjeti da je za naći
neregularni jezik potrebno konstruirati jezik koji bi zahtijevao beskonačan broj stanja.
Takav jezik je skup svih stringova koji se sastoje od slova 'a' i 'b' koji sadržavaju jednak broj slova 'a'
i 'b'. Da bi se vidjelo da ovaj jezik ne može prepoznati konačni automat, neka se prvo pretpostavi da
takav automat M postoji. M mora imati neki broj stanja n. Neka se sad razmotri string x koji se sastoji
od (n + 1) slova 'a' nakon kojih slijedi (n + 1) slova 'b' po Dirichletovom principu. Nazovimo ovo
stanje S, i neka je d broj slova 'a' koje stroj čita kako bi došao od prvog pojavljivanja stanja S do
nekog sljedećeg pojavljivanja tokom čitanja slijeda slova 'a'. Znamo da se, za drugog pojavljivanja
stanja S, može dodati dodatnih d (gdje je d > 0) slova 'a' pri čemu će se opet biti u stanju S. Ovo znači
da string od (n + d + 1) slova 'a' mora završiti u istom stanju kao i string od (n + 1) slova 'a'. Ovo
implicira da ako stroj prihvaća string x, tada također mora prihvaćati string od (n + d + 1) slova 'a'
nakon kojih slijedi (n + 1) slova 'b', koji nije u jeziku stringova koji sadrže jednak broj slova 'a' i 'b'.
Iz ovoga slijedi da taj jezik ne može ispravno prihvatiti nijedan konačni automat, te on stoga nije
regularni jezik. Općenitiji oblik ovoga rezultata se zove svojstvo napuhavanja za regularne jezike, i
može biti korišteno za pokazivanje da široka klasa jezika ne može prihvaćena konačnim automatima.
Računalni znanstvenici definiraju jezik kojeg može prihvatiti potisni automat kao kontekstno
neovisni jezik, koji može biti specificirankontekstno neovisnom gramatikom. Jezik koji se sastoji
od jednakog broja slova 'a' i 'b', za kojeg je pokazano da je neregularan, može odlučiti potisni
automat. Također, općenito, potisni se automat može ponašati kao i obični konačni automat, tako da
može odlučiti svaki regularni jezik. Ovaj model računanja je strogo jači od konačnih automata.
Međutim, ispostavlja se da postoje jezici koje ni potisni automati ne mogu odlučiti. Rezultat je sličan
onome za regularne jezike, i ovdje neće biti u detalje raščlanjen. Također postoji svojstvo
napuhavanja za kontekstno neovisne jezike. Primjer takvog jezika je skup prostih brojeva.
Turingovi strojevi mogu odlučiti bilo koji kontekstno neovisni jezik, pored jezika neodlučivih konačnim
automatima, kao što je jezik prostih brojeva. Stoga je to strogo moćniji model računanja.
Budući da Turingovi strojevi imaju mogućnost "spremanja" svoje ulazne trake, moguće je za
Turingov stroj da radi dugo vremena na način koji nije moguć u ostalim, prethodno opisanim
modelima računanja. Moguće je konstruirati Turingov stroj koji nikad neće stati za neke ulaze. Kaže
se da Turingov stroj odlučuje jezik ako će s vremenom stati na sve ulaze i dati odgovor. Jezik koji
tako može biti odlučen se zoverekurzivni jezik. Možemo nadalje opisati Turingove strojeve koji će s
vremenom stati i dati odgovor za svaki ulaz u jeziku, ali koji mogu nikada ne stati za ulazne stringove
koji nisu u jeziku. Takvi Turingovi strojevi mogu reći je li dani string u jeziku, ali se nikad sa
sigurnošću ne može reći da dani string nije u jeziku, jer stroj može nikada ne stati u tom slučaju.
Ispostavlja se da je Turingov stroj izuzetno moćan model automata. Na opće iznenađenje, svi
pokušaji izmjene definicije Turingovog stroja u svrhu stvaranja moćnijeg stroja nisu polučili uspjeh.
Na primjer, dodavanje dodatne trake Turingovom stroju, i na taj mu način dajući dvodimenzionalnu
(ili tri ili bilo koji drugi broj traka, odnosno dimenzija) površinu na kojoj može raditi može biti
simulirano Turingovim strojem sa osnovnom, jednodimenzionalnom trakom. Ovi modeli stoga nisu
moćniji. Ustvari, posljedica Church-Turingove teze jest da ne postoji razumni model računanja koji
Pitanje koje se postavlja jest: postoje li jezici koji su nerekurzivni, a i rekurzivno prebrojivi? Također,
Za dani opis Turingovog stroja i njegov početni ulaz, odredi staje li (odnosno završava) program, prilikom izvršavanja
Ovdje se ne postavlja jednostavno pitanje o prostom broju ili palindromu, već općenitije - pita
se Turingov stroj da odgovori na pitanje o drugom Turingovom stroju. Može se pokazati (vidi
glavni članak: Problem zaustavljanja) da nije moguće konstruirati Turingov stroj koji općenito
Drugim riječima, jedini općenit način za znati hoće li dani program stati za pojedini ulaz u svim
slučajevima jest izvršiti ga i vidjeti staje li. Ako staje, tada se zna da staje. U drugu ruku, ako
ne staje, tada se nikad ne može znati hoće li s vremenom stati. Jezik koji se sastoji od svih
opisa Turingovih strojeva uparnih sa svim mogućim ulazima za koje Turingovi strojevi s
ili neodlučiv.
Problem je zaustavljanja lako riješiti ukoliko se dopusti Turingovom stroju koji odlučuje da se
zauvijek izvršava kad mu je dan ulaz koji predstavljanja Turingov stroj koji sam ne staje. Jezik
zaustavljanja je stoga rekurzivno prebrojiv. Međutim, moguće je konstruirati i jezike koji nisu
rekurzivno prebrojivi.
Jednostavan je primjer takvog jezika komplement jezika zaustavljanja, to jest jezik koji se
sastoji od svih Turingovih strojeva uparenih sa ulaznim stringovima pri čemu Turingov
stroj ne staje za svoj ulaz. Da bi se vidjelo da ovaj jezik nije rekurzivno prebrojiv, neka se
zamisli konstrukcija Turingovog stroja M koji može dati definitivan odgovor za sve takve
Turingove strojeve, ali i da može nikad ne stati za Turingov stroj koji sam nikad ne staje. Tad
se može konstruirati drugi Turingov stroj, M', koji može simulirati djelovanje ovog stroja, te
također i izravno simulirati izvršavanje stroja danog kao ulaz, na način da preklapa
izvršavanje ovih dvaju prgrama. Budući da će izravna simulacija s vremenom stati ako
vremenom stati ako ulazni program nikad ne staje, zna se da će u M' s vremenom jedna od
paralelno izvršavajućih inačica stati. M' stoga odlučuje problem zaustavljanja. Prethodno je
izravnim pristupom te Petrijeve mreže. Ovi modeli konkurentnog računanja još uvijek ne
strojevima.
izračunati više matematičkih funkcija od Turingovog stroja. U ovoj će se sekciji istražiti neki od
Neka se pretpostavi postojanje stroja u kojem svaki korak računanja zahtijeva polovicu
vremena prethodnog koraka. Ako se količina vremena potrebna za prvi korak normalizira na
vremena. Ovaj beskonačni red konvergira ka 2 vremenske jedinice, što znači da ovaj
Takozvani strojevi proročišta imaju pristup različitim "proročištima" koji pružaju rješenja
zaustavljanje" koje odmah odgovara staje li ikada dani Turingov stroj za dani ulaz. Ovi
ograničenja. Iako svaki od njih može riješiti problem zaustavljanja za Turingov stroj, oni
Church i Stephen Cole Kleene. Alan Turing je najčešće smatran ocem suvremenog
prvi opis Turingovog stroja(u [1], 1936.) kao i mnoge rane rezultate od velike važnosti.
Teorija automata
Apstraktni stroj
Logika izračunljivosti
Izvori [uredi]
str. 123–222.