Teorija izračunljivosti i Tjuringove mašine

Uvod u teoriju izračunljivosti

  • Kontekst unutar savremene logike: Teorija izračunljivosti predstavlja jednu od ključnih disciplina savremene logike, pored teorije dokaza, teorije modela, teorije značenja i teorije skupova. Iako se ranije samo usputno pominjala (npr. kod funkcionalno potpunih skupova veznika), ona predstavlja temelj za razumevanje odnosa između logike i informatike.
  • Definicija i predmet proučavanja:     - Teorija izračunljivosti primarno istražuje pod kojim uslovima je određena funkcija ili formula izračunljiva.     - Fokus je na procesu transformacije ulaznih vrednosti (input) u precizno određene izlazne vrednosti (output).     - Izračunljivost se definiše kao formalizovana ideja samog postupka računanja.
  • Uslovi za izračunljivost funkcije: Da bi se funkcija smatrala izračunljivom, moraju biti zadovoljeni strogi kriterijumi:     - Postojanje algoritma: Mora postojati precizan i definisan skup koraka za utvrđivanje izlaznih vrednosti.     - Tačnost i ponovljivost: Algoritam mora uvek davati tačan rezultat i biti primenljiv u istim uslovima sa istim uspehom.     - Postupnost: Proces ne sme sadržati nikakve „intuitivne skokove“; svaki korak mora logički slediti iz prethodnog.
  • Apstrakcija od psihološkog procesa:     - Računanje u teoriji izračunljivosti je potpuno nezavisno od subjekta koji ga izvodi.     - Nebitno je da li operaciju vrši genije mentalnom aritmetikom, učenik na papiru ili računar putem binarnih operacija (00 i 11).     - Cilj je proučavanje same strukture računanja, a ne psiholoških aspekata agenta koji računa.
  • Pioniri discipline: Ključne figure koje su povezale logiku i ranu informatiku su Alan Tjuring (Alan Turing) i Alonzo Čerč (Alonzo Church).

Tjuringova mašina

  • Koncept: Osmišljena od strane Alana Tjuringa u prvoj polovini 20. veka, Tjuringova mašina predstavlja apstraktni model aparata za računanje.
  • Komponente Tjuringove mašine:     - Beskonačna traka: Podeljena je na segmente (polja). U svaki segment može biti upisan jedan simbol koji predstavlja informaciju. Ova traka je direktna analogija savremenoj memoriji računara.     - Radna „glava“: Mehanizam koji se kreće duž trake. Može da čita upisane simbole, briše ih i upisuje nove. Odgovara funkciji procesora.     - Konačna tablica sa instrukcijama: Skup pravila koji diktira ponašanje glave na osnovu pročitanog simbola.         - Primer: Ako glava pročita simbol „\“, instrukcija može glasiti: „pomeri se za dva mesta ulevo i unesi simbol β\beta“.         - Ovaj deo odgovara programskim instrukcijama u modernom softveru.     - Registar: Deo mašine koji beleži sva stanja kroz koja sistem prolazi tokom procesa.
  • Varijacije i suština: Postoje verzije sa više glava ili više traka, ali sve su fundamentalno ekvivalentne u pogledu onoga što mogu da izračunaju.
  • Svrha modela:     - Model nije nacrt za fizičku konstrukciju računara (fizički realizovana Tjuringova mašina bila bi spora i nezgrapna).     - Namera je bila da se definišu granice onoga što bilo koja mašina za računanje može da izvede.     - Model je primenljiv kako na neorganske sisteme (silicijumska jezgra), tako i na biološke sisteme (ljudski mozak).

Univerzalna Tjuringova mašina (UTM) i Čerč-Tjuringova teza

  • Univerzalna Tjuringova mašina (UTM): Posebna vrsta mašine koja može da simulira rad bilo koje druge, prostije Tjuringove mašine. Ona u sebi sadrži resurse za izvršenje svakog mogućeg računanja.
  • Moć UTM:     - UTM je najmoćniji teoretski model računara ne po brzini, već po opsegu izvodljivosti.     - Ako UTM ne može da reši određeni zadatak, to znači da ne postoji nijedan drugi računarski sistem koji bi to mogao.     - Do danas ne postoji poznata procedura računanja koja se ne može izvršiti na UTM, a može na nekom drugom modelu.
  • Čerč-Tjuringova teza: Ova teza uspostavlja fundamentalnu paralelu između automatskog računanja i mišljenja (u algoritamskom smislu).     - Definicija: Funkcija je izračunljiva ako i samo ako je izračunljiva za Tjuringovu mašinu.     - Implikacije:         - Ako funkcija nije izračunljiva za Tjuringovu mašinu, ona nije izračunljiva ni za jedan drugi sistem (bilo organski mozak ili neorganski procesor).         - Napomena: Ovo se odnosi na algoritamske procese, dok kreativnost i intuicija nisu nužno obuhvaćeni ovim modelom.     - Status teze: Nije konkluzivno dokazana, ali postoji ogroman broj indikacija koje potvrđuju njenu ispravnost.

Problem zaustavljanja (Halting Problem)

  • Definicija neizračunljivosti: Postoje funkcije za koje je dokazano da nisu izračunljive.
  • Formulacija Halting problema: Pitanje je da li jedan računar može unapred da proceni da li će se za dati algoritam i date ulazne vrednosti proces završiti (haltovati) ili će mašina upasti u beskonačnu petlju.
  • Praktična vrednost: Rešenje bi omogućilo softveru da razlikuje situaciju u kojoj je računar „zakucan“ od situacije u kojoj on samo vrši veoma složenu i dugotrajnu operaciju.
  • Teoretski zakjučak: Odgovor na Halting problem je negativan; nemoguće je konstruisati opšti algoritam koji bi ovo rešavao za sve slučajeve.

Logički dokaz nemogućnosti rešenja Halting problema

  • Metod dokaza: Posredni dokaz (reductio ad absurdum).
  • Postavka hipotetičkog programa HH:     - Pretpostavimo da postoji program HH koji rešava Halting problem.     - Ulaz I1I1: Algoritam koji proveravamo.     - Ulaz I2I2: Ulazne vrednosti za taj algoritam.     - Rezultat HH: Ispisuje „haltuje“ ili „ne haltuje“.
  • Problem simulacije: Ako program koji HH proverava ne haltuje, onda ni simuluacija unutar HH neće haltovati, što znači da HH nikada neće moći da izbaci odgovor „ne haltuje“. Vremensko ograničenje ovde ne pomaže, jer bi prekratak limit proglasio izračunljive procese neizračunljivim.
  • Formalni dokaz kontradikcijom:     - Konstruišimo složeni program XX koji se sastoji od programa HH i dodatnog programa negacije NN.     - Pravila za NN:         - Ako HH kaže „haltuje“, NN se zakucava (beskonačna petlja).         - Ako HH kaže „ne haltuje“, NN ispisuje „haltuje“ i staje.     - Testiranje programa XX na samom sebi (Self-reference):         - Šta ako damo programu XX da proveri sopstveni kod (gde su i I1I1 i I2I2 zapravo XX)?         - Scenario A: HH predvidi da će XX haltovati. Prema pravilu programa NN, celi sistem XX će se tada zakucati. Ovo je kontradikcija onome što je HH predvideo.         - Scenario B: HH predvidi da XX neće haltovati. Prema pravilu programa NN, sistem će ispisati „haltuje“ i stati. Opet dobijamo kontradikciju predviđanju koje je dao HH.
  • Zaključak dokaza: Budući da oba scenarija vode u logičku kontradikciju, program HH ne može postojati. Prema Čerč-Tjuringovoj tezi, to znači da nikada nećemo moći univerzalno da znamo da li je računar zaglavljen ili samo intenzivno radi.