Elementy Teorii Oblicze ´n
Wykład 2
dr Andrzej Zbrzezny
Instytut Matematyki i Informatyki Akademia Jana Długosza w Cz˛estochowie
10 stycznia 2009
Maszyna Turinga – uwagi wst ˛epne
Maszyna Turinga (1936 r.) to jedno z najpi ˛ekniejszych i najbardziej intryguj ˛acych odkry´c 20 wieku. Odkrycie to stworzyło podstawy dla rozwojuinformatyki teoretycznej.
Maszyna Turinga jest prostym ale u ˙zytecznymmodelem oblicze ´n(modelem komputerów) wystarczaj ˛aco ogólnym, aby reprezentowa ´c dowolny program komputerowy.
Z powodu prostego opisu i działania maszyna Turinga poddaje si ˛e matematycznym rozwa ˙zaniom, które doprowadziły do lepszego zrozumienia istoty oblicze ´n oraz komputerów.
Jednym z najwa ˙zniejszych odkry´c teorii oblicze ´n jest fakt mówi ˛acy, ˙ze istniej ˛aproblemy obliczeniowe, które nie mog ˛a zosta ´c rozwi ˛azane na ˙zadnym komputerze, niezale ˙znie od ilo ´sci dost ˛epnej pami ˛eci i czasu.
Maszyna Turinga – komponenty
Potencjalnie niesko ´nczonata ´sma, na której umieszcza si ˛e dane wej´sciowe, wyniki po ´srednie oraz wyniki ko ´ncowe.
Ta´sma podzielona jest nakomórki.
W ka˙zdej z komórek znajduje si ˛e w danym momencie jeden z symboli sko ´nczonego alfabetu.
Głowica czytaj ˛aco-pisz ˛aca, która w danym momencie znajduje si ˛e nad jedn ˛a komórk ˛a ta ´smy zwan ˛a komórk ˛a aktywn ˛a.
W ka˙zdym kroku głowica czyta symbol z aktywnej komórki i albo pozostawia go bez zmiany albo zapisuje w komórce aktywnej inny symbol.
Ka˙zdy krok ko ´nczy si ˛e zmian ˛astanuoraz przesuni ˛eciem głowicy w lewo lub w prawo.
Maszyna Turinga – komponenty
Jednostka steruj ˛acaw postaci diagramu przej´s´c pomi ˛edzy stanami.
W zale˙zno´sci od bie˙z ˛acego stanu oraz symbolu
znajdujacego si ˛e w aktywnej komórce maszyna Turinga zapisuje na ta´smie jednoznacznie okre´slony symbol oraz przechodzi do jednoznacznie okre´slonego stanu.
Ka˙zdatranzycjawi ˛a˙ze dwa stany (nazwijmy je t oraz s) i jest etykietowana par ˛a symboli (nazwijmy je A oraz X ).
Oznacza to, ˙ze je˙zeli maszyna Turinga znajduje si ˛e w stanie t a w aktywnej komórce znajduje si ˛e symbol A, to w wyniku wykonania tej tranzycji maszyna wpisuje do aktywnej komórki symbol X i przechodzi do stanu t.
Ka˙zdy stanetykietowanyjest jednym z pi ˛eciu oznacze ´n:
L (left), R (right), Y (yes), N (no) lub H (halt).
Po wykonania przej´scia do stanu t maszyna Turinga w zale˙zno´sci od etykiet tego stanu albo przesuwa głowic ˛e (w lewo lub w prawo) albo zatrzymuje si ˛e.
Przykładowa maszyna Turinga
Example (Zamiana liczby z postaci unarnej na binarn ˛a)
Działanie maszyny Turinga
Maszyna Turinga rozpoczyna prac ˛e w wyró ˙znionym stanie nazywanym stanempocz ˛atkowym; głowica maszyny Turinga znajduje si ˛e nad wyró ˙znion ˛a komórk ˛a nazywan ˛a komórk ˛a pocz ˛atkow ˛a.
Dla ka ˙zdej pary(stan,symbol)istnieje co najwy˙zej jedna tranzycja zwi ˛azana z t ˛a par ˛a; je ˙zeli takiej tranzycji nie ma, to maszyna Turinga nie zmienia stanu i nie zmienia symbolu w aktywnej komórce.
Ka ˙zdy krok działania maszyny Turinga przebiega jak nast ˛epuje:
czyta symbol z aktywnej komórki
szuka tranzycji zwi ˛azanej z bie˙z ˛acym stanem i z przeczytanym symbolem
zmienia symbol w bie˙z ˛acej komórce zmienia stan zgodnie z tranzycj ˛a
przesuwa głowic ˛e w lewo lub w prawo lub zatrzymuje si ˛e
Działanie maszyny Turinga
Kroki maszyny Turinga powtarzane s ˛a dopóty, dopóki nie znajdzie si ˛e ona w stanie etykietowanym przez:
H (zatrzymanie), Y (akceptacja) lub N (odrzucenie).
Jest mo ˙zliwe, ˙ze maszyna Turinga nigdy si ˛e nie zatrzyma.
Zało ˙zenie o potencjalnie niesko ´nczonej ta ´smie oznacza, ˙ze maszyna Turinga jest modelemoblicze ´na nie komputerów.
Example (Symulator maszyny Turinga) Programturing.jar
Uniwersalno´s´c
Na potrzeby teorii oblicze ´n mo ˙zemy zdefiniowa ´calgorytm jako maszyn ˛e Turinga. W tym sensie maszyny Turinga odpowiadaj ˛a programom komputerowym.
Uniwersalna Maszyna Turinga(UTM) to specyficzna maszyna Turinga potrafi ˛aca symulowa ´c działanie dowolnej innej maszyny Turinga (tak˙ze samej siebie!).
UTM pozwala odpowiada ´c na pytania dotycz ˛ace innych TM (tak˙ze samej siebie!).
Pierwsz ˛a UTM opisał Alan Turing. Istnienie UTM oznacza,
˙ze istnieje TM, która potrafi wykona´c dowolny algorytm.
Kluczowa idea polega na sposobie zakodowania dowolnej TM przy pomocy słowa nad sko ´nczonym alfabetem.
Kodowanie maszyny Turinga na przykładzie
Kodowanie stanów:
0L, 1R, 2R, 3Y , 4R, 5N Kodowanie tranzycji:
01##, 201x , 400x , 120x , 13##, 141x , 25##, 45##
Kodowanie maszyny Turinga
Aby otrzyma ´c kodowanie konkretnej maszyny Turinga konkatenujemy słowa koduj ˛ace stany oraz słowa koduj ˛ace tranzycje w słowo nad alfabetem{0,1,2,3,4,5,x,#}:
0L1R2R3Y 4R5N01##201x...45##
i zapisujemy je na ta ´smie UMT. Po tym słowie
umieszczamy słowo nad alfabetem{0,1}b ˛ed ˛ace słowem wej´sciowym dla zakodowanej TM oddzielaj ˛ac je nowym symbolem.
Do tego słowa mo ˙zna równie ˙z doł ˛aczy´c stan pocz ˛atkowy oraz pocz ˛atkow ˛a pozycj ˛e głowicy.
UTM jako wej´scie otrzymuje kodowanie konkretnej TM oraz pocz ˛atkow ˛a zawarto ´s´c ta ´smy tej TM.
Uwagi na temat istniej ˛ acych UTM
Pierwsz ˛a UTM opisał Alan Turing w swojej pracy z 1937 roku: “On Computable Numbers, with an Application to the Entscheidungsproblem.”
W 1962 roku M. Minsky odkrył siedmiostanow ˛a UTM nad czteroznakowym alfabetem. Z niej mo ˙zna otrzyma ´c UTM nad dwuznakowym alfabetem, ale wymaga to 43 stanów.
Inne UTM zostały odkryte w 1996 roku przez Rogozhina.
Oznaczane s ˛a parami liczb(m,n), gdzie m to liczba stanów a n to ilo ´s´c znaków alfabetu. S ˛a to maszyny:
(24,2), (10, 3), (7, 4), (5, 5), (4, 6), (3, 10) oraz(2,18).
W 2002 roku Wolfram odkrył UTM typu(2,5).
Uwa ˙zano, ˙ze cztery TM typu(2,4)oraz czterna ´scie maszyn typu(2,3)(wszystkie odkryte przez Wolframa) s ˛a prawdopodobnie UTM, ale potrafiono tego udowodni´c.
Najmniejsza Uniwersalna Maszyna Turinga
24 pa ´zdziernika 2007 roku 20-letni brytyjczyk Alex Smith, student uniwersytetu w Birmingham, zgłosił dowód twierdzenia mówi ˛acego, ˙ze zaproponowana przez Wolframa dwustanowa maszyna Turinga u ˙zywaj ˛aca tylko trzech symboli jest uniwersaln ˛a maszyn ˛a Turinga.
Za to odkrycie Alex Smith otrzymał wcze ´sniej wyznaczon ˛a nagrod ˛e w wysoko ´sci 25′000 dolarów.
Rozwa ˙zana maszyna ma w numeracji Wolframa numer 596′440.
Istnieje(2∗3∗2+1)(2∗3)=136=4′826′809 dwustanowych maszyn Turinga u ˙zywaj ˛acych trzech symboli (w tym symbolu pustego).
Najmniejsza Uniwersalna Maszyna Turinga
Hipoteza Churcha-Turinga
W 1936 roku Alonzo Church i Alan Turing zaproponowali niezale ˙znie od siebie ró ˙zne modele oblicze ´n: Church wymyslił rachunek lambda a Turing abstrakcyjn ˛a maszyn ˛e nazwan ˛a pó ´zniej na jego cze ´s´c maszyn ˛a Turinga.
Chocia ˙z oba formalizmy bardzo si ˛e ró ˙zni ˛a Turing udowodnił wkrótce, ˙ze s ˛a one równowa ˙zne.
W 1943 roku Stephen Kleene sformułował nast ˛epuj ˛acy wniosek zwany hipotez ˛a (równie ˙z tez ˛a) Churcha-Turinga:
Ka ˙zdy problem, który mo ˙ze by´c intuicyjnie uznany za obliczalny, jest rozwi ˛azywalny przez maszyn ˛e Turinga.
Sformułowanie “intuicyjnie uznany za obliczalny”
uniemo ˙zliwia przeprowadzenie matematycznego dowodu tej hipotezy.
Rozszerzenia maszyn Turinga
Poni˙zsze rozszerzone modele maszyn Turinga maj ˛a tak ˛a sam ˛a moc obliczeniow ˛a jak oryginalna maszyna Turinga:
Maszyny Turinga z wieloma niezale ˙znymi głowicami.
Maszyny Turinga z wieloma ta ´smami.
Maszyny Turinga z ta ´sm ˛a dwuwymiarow ˛a.
Niedeterministyczne maszyny Turinga.
Probabilistyczne maszyny Turinga.
Równowa ˙zno ´s´c powy˙zszych modeli stanowi argument przemawiaj ˛acy za prawdziwo ´sci ˛a hipotezy Churcha-Turinga
Maszyny Turinga z ograniczeniami
Poni˙zsze ograniczone modele maszyn Turinga maj ˛a tak ˛a sam ˛a moc obliczeniow ˛a jak oryginalna maszyna Turinga:
Maszyny Turinga z jednostronnie ograniczon ˛a ta ´sm ˛a.
Maszyny Turinga nad alfabetem binarnym.
Dwustanowe maszyny Turinga.
Maszyny Turinga, które nigdy nie nadpisuj ˛a zapisanych symboli.
Maszyny Turinga, dla których poprzedni stan mo ˙ze by´c zawsze jednoznacznie wyznaczony przez stan bie ˙z ˛acy oraz przez zawarto ´s´c ta ´smy.
Równowa ˙zno ´s´c powy˙zszych modeli stanowi kolejny argument przemawiaj ˛acy za prawdziwo ´sci ˛a hipotezy Churcha-Turinga
Inne modele oblicze ´n równowa˙zne z TM
Systemy formalne Posta (Emil Post 1920) – reguły zamiany słów zaprojektowane do dowodzenia twierdze ´n ze zbioru aksjomatów.
Funkcje ogólnie rekurencyjne (Kurt Gödel 1934).
Funkcje cz ˛e ´sciowo rekurencyjne (Alonzo Church 1932, Stephen Kleene 1935).
Algorytmy Markova (1960) – reguły zamiany słów w ustalonej kolejno ´sci.
Gramatyki nieograniczone (Noam Chomsky 1950) Logika klauzul Horna (Horn 1951) – system dowodzenia twierdze ´n stanowi ˛acy podstaw ˛e dla j ˛ezyka programowania Prolog.
J ˛ezyki programowania: C, C++, Java, Python, Ruby, Perl, Lisp, . . .