Maszyna Turinga
Transkrypt
Maszyna Turinga
Maszyna Turinga podstawowy abstrakcyjny model obliczeń Pojęcia: Alfabet: skończony zbiór symboli słowo nad alfabetem: skończony ciąg symboli słowo puste (ciąg symboli długości 0) ozn. e Język: dowolny podzbiór zbioru wszystkich słów nad ustalonym alfabetem Jednotaśmowa, deterministyczna maszyna Turinga : nieskończona taśma złożona z klatek głowica czytająco-pisząca moduł sterujący zawierający program maszyny M = ( Q , S , q0 , d ) Q – skończony zbiór stanów, q0 – stan początkowy, S – alfabet symboli taśmy; zawiera wyróżniony znak pusty (blank), oznaczany przez B lub . d – podzbiór zbioru (Q ´ S) ´ (Q ´ S ´ {L,R,S}) // {L=Left, R=Right, S=Stay} stanowi program maszyny; każda piątka w zbiorze d jest instrukcją postaci (stan-1, znak-1) à (stan-2, znak-2, przesunięcie) Sytuacja początkowa: na taśmie zapisane słowo wejściowe, nie zawierające 1 B, pozostałe klatki zawierają B głowica taśmy ustawiona na pierwszym znaku słowa wejściowego maszyna w stanie q0 Działanie maszyny (wykonywanie programu) Jeśli (stan-1, litera-1) à (stan-2, znak-2, przesunięcie) jest instrukcja maszyny M, oraz M jest w stanie stan-1, głowica czyta znak-1, to M przechodzi w stan-2 znak-1 zostaje zastąpiony przez znak-2 głowica wykonuje przesunięcie Sytuacja końcowa: dla aktualnego stanu oraz czytanego znaku nie jest zdefiniowana instrukcja w programie maszyny. Def. Maszyna M = ( Q , S , q0 , d ) jest deterministyczna jeśli d jest funkcją częściową na zbiorze Q ´ S (czyli każda reguła ma inną lewą stronę). W przeciwnym przypadku (program maszyny jest "tylko" relacją) M jest niedeterministyczna. Def. Konfiguracja maszyny to trójka (stan, zawartość taśmy, położenie głowicy). Oznaczenie: X1X2 . . . Xk-1 s XkXk+1 . . . Xm , gdzie s jest aktualnym stanem, X1X2 . . . Xk-1XkXk+1 . . . Xm jest zawartością spójnego fragmentu taśmy, k=1,...,m, 2 głowica czyta klatkę zawierającą Xk pozostałe znaki na taśmie to blanki. Ex. 1. Zwiększanie liczby binarnej o 1 konfiguracja początkowa: p101011 końcowa: 101f100 Lub w takiej notacji: dane : ...101011... p^ wynik : ...101100... f^ Program M (p, (p, (p, (q, (q, (q, 0, 1, B, 1, 0, B, p, p, q, q, f, f, 0, 1, B, 0, 1, 1, (p – stan początkowy): R) R) L) L) L) S) //idź w prawo //idź w prawo //blank - zawróć //zamieniaj kończące 1 na 0 //zamień ostatnie 0 na 1,koniec //gdy na wejściu same jedynki Jak jest długość programu w maszynie zwiększającej o 1 liczbę dziesiętna? Jak wyglądałby program gdyby kodowanie było unarne – czyli liczba n zapisana za pomocą n jedynek? Ex. 2. Odwracanie kolejności znaków w słowie binarnym. Idea: kasujemy znak z lewej, "zapamiętujemy" go w "zbiorze stanów", idziemy do końca w prawo i na pierwszym pustym miejscu wpisujemy zapamiętany znak. 3 fragment programu (nie jest to jedyne rozwiązanie!): (p, (p, (q, (q, (r, (r, 0, 1, *, B, *, B, q, r, q, s, r, s, B, B, *, 0, *, 1, R) R) R) L) R) L) stany p, q pamiętają (rozróżniają) znak który jest transportowany na prawy koniec słowa. pełny program musi zawierać ponadto opisy: analogicznego transportu prawego znaku na lewy koniec stwierdzenia że wszystkie znaki już przestawione powstanie blank w środku słowa – zsunięcie znaków Maszyna Turinga jako akceptor (lub: automat do rozpoznawania języka) Wyróżniamy drugi stan: (akceptujący) qf – stan końcowy Def. Niech M będzie ustaloną deterministyczną MT M. Początkowo: na taśmie słowo w, nie zawierające symbolu pustego, nad alfabetem S, głowica czyta pierwszy symbol słowa w. Jeśli po skończonej liczbie kroków M zatrzymuje się w stanie akceptującym to mówimy że M akceptuje (rozpoznaje) słowo w. W przeciwnym przypadku (tj. gdy M zatrzymuje się w 4 innym stanie lub nie zatrzymuje się w ogóle) mówimy że M odrzuca słowo w. Def. Językiem akceptowanym przez deterministyczną MT M jest zbiór wszystkich słów akceptowanych przez M, oznaczany L(M). Def. Mówimy, że MT M akceptuje język L jeśli L(M) = L. Def. Język L jest rekurencyjnie przeliczalny := istnieje MT M akceptująca ten język Def. Język L jest rekurencyjny := istnieje MT M akceptująca ten język, zatrzymująca się na każdym słowie wejściowym (tzn. posiadająca własność stopu) Ex. Język palindromów nad alfabetem {a, b, c} | 0 1 2 3 4 5 6 7 N T --+---------------------------------------a | B1R a1R a2R a3R B7L aNS aNS a7L b | B2R b1R b2R b3R BNS B7L BNS b7L c | B3R c1R c2R c3R cNS cNS B7L c7L B | BTS B4L B5L B6L BTS BTS BTS B0R ------------------------------------------Stan N – odrzucenie (nie ma przejścia dalej) Stan T – akceptacja. Tak zdefiniowana MT M ma własność stopu, zatem: Język palindromów jest rekurencyjny. Techniki konstruowania maszyn Turinga 1. Przechowywanie informacji w sterowaniu ("w zbiorze stanów", jak powyżej) 5 2. Taśma wielościeżkowa (znak na taśmie jest k-tką). Np. 3-ścieżkowa MT do rozpoznawania liczb pierwszych. Ścieżka 1: liczba wejściowa, z ogranicznikami #, $ Ścieżka 2: kolejne liczby naturalne, w pierwszej fazie wpisywana 2. Ścieżka 3: robocza kopiujemy ś.1 na ś.3, następnie odejmujemy ś.2 od ś.3, jak długo wynik dodatni. gdy wynik 0 to koniec, odrzuć, wpp. zwiększ ś.2 o 1 jeśli ś.2 = ś.1 to koniec – akceptuj wpp. powtarzaj kopiowanie ś.1 na ś.3 itd. # 1 0 1 B B B B B 1 0 0 głowica: 1 1 1 1 0 0 1 1 1 ^ $ B B B B B B B B Badanie czy 47 jest liczbą pierwszą. Aktualnie wykonywane dzielenie przez 5. Dwukrotnie już odjęto ścieżkę 2 od ścieżki 3. 3. Odfajkowywanie symboli Na drugiej ścieżce można zaznaczać położenie do którego chcemy wrócić. Np. rozpoznawanie słów postaci ww. Albo anbn. 4. Podprogramy. Przykład – realizacja "odfajkowywania" symboli 6 odfajkować najbardziej na prawo położoną jedynkę S = { B – blank, 0 – "normalne 0" 1 – "normalne 1" % – "odfajkowane 1" } Program M (p, (p, (p, (q, (q, 0, 1, B, 0, 1, p, p, q, q, f, (p – stan początkowy): 0, 1, B, 0, %, R) R) L) L) S) // // // // // idź w prawo idź w prawo zawróć w lewo idź w lewo, omijaj zera zrobione Jeśli jest to fragment – podprogram innej maszyny, to stan p jest stanem wejściowym do podprogramu, a od stanu f kontynuuje się wykonanie pozostałej części Przykład: Konstruujemy MT M taką, że L(M) = {anbn, n³0}. 9 jest stanem akceptującym. (0, B, 9, B, S) //słowo puste jest OK (0, (1, (1, (1, //zastąp pierwsze a przez X //w prawo do pierwszego b a, a, Y, b, 1, 1, 1, 2, X, a, Y, Y, R) R) R) L) (2, Y, 2, Y, L) (2, a, 2, a, L) (2, X, 0, X, R) //zastąp b przez Y //wróć na początek //znaleziony, od początku (0, Y, 0, Y, R) //ostatnie przejście w prawo // jeśli znajdzie b to nie zaakceptuje // jeśli znajdzie B to OK 7 Def. MT M ma własność stopu, jeśli dla dowolnego słowa wejściowego w, obliczenie M na tym słowie jest skończone. Warianty modelu maszyny Turinga. 1. k taśm, k>=1, k-TM (k jest stałą, liczba taśm nie zależy od słowa wejściowego). każda taśma ma swoją głowicę. pojedynczy ruch zależy od stanu, symboli czytanych przez głowice, i dotyczy wszystkich głowic. Wygodny opis algorytmów, np. sprawdzanie czy liczba pierwsza. Operacje arytmetyczne wykonywane na osobnych taśmach, osobnymi głowicami. Fakt: Dla dowolnego języka L rozpoznawanego przez kTM istnieje 1-TM rozpoznająca ten język. Dowód: symulacja k-TM przez 1-TM, opis za pomocą 2k ścieżek. 2. Niedeterministyczna MT (NDTM) Program może zawierać więcej niż jedno możliwe przejście dla danej pary (stan, symbol). Def. NDTM M akceptuje słowo w ç è istnieje ciąg konfiguracji zgodny z funkcją przejścia maszyny M, prowadzący od konfiguracji początkowej do konfiguracji w stanie akceptującym. NDTM M odrzuca słowo w jeśli KAŻDY ciąg konfiguracji 8 zgodny z funkcją przejścia kończy się w stanie nieakceptującym albo jest nieskończony. Spostrzeżenie: Własność stopu dla NDTM nie jest istotna. Fakt: Dla dowolnego języka L rozpoznawanego przez NDTM istnieje TM rozpoznająca ten język. Dowód: przegląd drzewa możliwych konfiguracji poziomami, zaczynając od korzenia. Kodowanie maszyn Turinga Np. stan (symbol alfabetu, kierunek) o numerze i kodujemy za pomocą i zer: 00 . . . 0 (i=1, 2, ... |Q|, stan początkowy ma numer 1, końcowy-akceptujący ma numer |Q| w zapisie piątki (z funkcji przejścia) ciągi zer oddzielane jedną jedynką zapis maszyny: ciąg piątek oddzielanych dwiema jedynkami na początku ciągu piątek dowolna, >= 3 liczba jedynek na końcu ciągu 3 jedynki M – dowolna MT M można przedstawić jako liczbę (binarną) w powyższy sposób dzięki dowolnej liczbie jedynek na początku zapisu jest nieskończenie wiele liczb kodujących tę samą MT każda liczba k jest kodem pewnej MT M (umownie: jeśli k nie jest prawidłowym syntaktycznie opisem MT to k koduje MT akceptującą język pusty) 9 każda liczba jest kodem dokładnie jednej MT Uniwersalna MT: na wejściu: opis MT M oraz słowo w działanie: symulacja działania maszyny M gdy na wejściu dla M jest słowo w. Fakt: Uniwersalna MT istnieje. najmniejsza znaleziona dotychczas: 5 stanów, 7 symboli Maszyna Turinga jako model obliczania funkcji Rozważamy funkcje częściowe o argumentach i wartościach naturalnych. Dana jest TM M Na wejściu: liczba n zapisana w ustalony sposób (np. unarnie, albo binarnie), n>=0 Jeśli M zatrzymuje się z taśmą zawierającą liczbę m (zapisaną zgodnie z ustalonym sposobem zapisu liczb), to mówimy że f(n) = m Tak zdefiniowana funkcja częściowa f : N à N jest funkcją realizowaną (lub: obliczaną) przez M. Jeśli funkcja f jest obliczana przez M to mówimy że f jest funkcją częściowo rekurencyjną (właściwie: częściową rekurencyjną). Czyli, dla TM obliczającej funkcję f: 10 dla pewnych argumentów n, M może się nie zatrzymać (takie n nie należy do dziedziny funkcji) dla pewnych argumentów n, M może wypisać słowo nie będące liczbą w ustalonym sposobie zapisu liczb (takie n nie należy do dziedziny funkcji) Inne modele obliczeń: Maszyna RAM (random access machine) abstrakcyjny model komputera: taśma wejściowa (read-only) taśma wyjściowa (write-only) pamięć danych: nieskończona liczba rejestrów (słów), każdy zawiera liczbę całkowita dowolnej wielkości; adres 0 – akumulator program (poza pamięcią danych) licznik rozkazów Lista rozkazów: LOAD, STORE, ADD, SUB, MULT, DIV, READ, WRITE, JUMP, JGTZ, JZERO, HALT Tryby adresacji: natychmiastowy, bezpośredni, pośredni (jak w przykładowej maszynie cyfrowej). RAM jest zarówno modelem obliczania funkcji liczbowych jak i rozpoznawania języków. RAM jako urządzenie obliczające funkcję f : na taśmie wejściowej argument n; po zakończeniu obliczenia na taśmie wyjściowej wartość f(n); w przypadku gdy n nie należy do dziedziny maszyna 11 nie zatrzymuje się lub wypisuje wynik który nie jest liczbą RAM jako urządzenie rozpoznające język L: na taśmie wejściowej słowo wejściowe w; po zakończeniu obliczenia na taśmie wyjściowej wartość 1 wtedy i tylko wtedy gdy w Î L; w przypadku gdy w Ï L maszyna nie zatrzymuje się lub wypisuje jakikolwiek wynik różny od 1 Fakt: Maszyna Turinga oraz RAM są równoważnymi modelami obliczeń. Czyli: dla dowolnej funkcji f : N à N zachodzi: Istnieje program P na RAM obliczający f çè istnieje (równoważna) MT M obliczająca f. Analogicznie dla języków: Dla dowolnego języka L: Istnieje program P na RAM rozpoznający L çè istnieje (równoważna) MT M rozpoznająca L. Inne modele obliczeń: funkcje rekurencyjne algorytmy Markowa algorytmy Posta systemy Posta języki programowania Fakt: Wszystkie powyższe modele obliczeń są równoważne MT. 12 Czyli wystarcza używać standardowego języka opisu algorytmu. Fakt: Wszystkie znane modele obliczeń nie są mocniejsze niż MT. czyli: wszystko co można na nich rozwiązać jest rozwiązywalne również w modelu MT. Teza Churcha-Turinga. Wszystko co jest obliczalne intuicyjnie jest obliczalne na MT. Jakie problemy są rozwiązywalne, a jakie nie są ? Czy w ogóle istnieją nierozwiązywalne problemy? Ile ich jest? Dla ustalonego modelu obliczeń można ustalić alfabet jego opisu: Każdy algorytm jest zapisywalny jako skończony ciąg symboli. Np. MT zapisywana jest za pomocą skończonego ciągu piątek, w języku jak powyżej. Zakładamy że napis niezgodny z ustaloną syntaktyką oznacza maszynę akceptującą pusty język (dla urządzeń obliczających funkcje: funkcję o pustej dziedzinie). Takie opisy można ustawić w ciąg: najpierw opisy długości 1, 2, 3, itd. Dla ustalonej długości kolejność leksykograficzna. è Maszyn Turinga jest przeliczalnie wiele. 13 Ile jest języków? alfabet jest skończony, np. {0, 1, B} wszystkich słów nad alfabetem jest przeliczalnie wiele wszystkich podzbiorów zbioru słów jest nieprzeliczalnie wiele è istnieją języki których nie da się rozpoznać na MT è istnieją problemy algorytmiczne dla których nie istnieje rozwiązujący je algorytm W praktyce często posługujemy się pojęciem problemu algorytmicznego: Problem algorytmiczny (decyzyjny) Q we: instancja problemu (wystąpienie problemu) wy: TAK / NIE Np. czy dany graf można pokolorować 3 kolorami czy w danym zbiorze elementów o podanych wagach istnieje podzbiór o sumarycznej wadze równej zadanej liczbie czy w zadanej tablicy występuje zadany element czy w grafie o podanych wagach krawędzi i ustalonych wierzchołkach u, v istnieje ścieżka z u do v o długości nie przekraczającej zadanej wartości d. Problem algorytmiczny, poprzez kodowanie instancji w ustalony sposób, sprowadza się do rozpoznawania języka. Problem jest rozstrzygalny: odpowiadający mu język jest rekurencyjny 14 Problem jest nierozstrzygalny: odpowiadający mu język nie jest rekurencyjny Problem jest częściowo rozstrzygalny: odpowiadający mu język jest rekurencyjnie przeliczalny. Przykład problemu nierozstrzygalnego: Problem stopu: Wejście: MT M oraz słowo w Wyjście: "tak" wtedy i tylko wtedy gdy M zatrzymuje się jeśli na wejściu otrzyma słowo w. Fakt: Problem stopu jest częściowo rozstrzygalny Dowód: wystarcza symulować działanie M na w jeśli M się zatrzyma w stanie akceptującym to odpowiadamy "tak" jeśli M się zatrzyma w stanie nieakceptującym to odpowiadamy "nie" jeśli M się nie zatrzyma, to my też nie zatrzymamy symulacji, która będzie trwała w nieskończoność, a zatem nic nie odpowiemy Problem odpowiedniości Posta We: A=w1,...,wk, B=x1,...,xk, - listy słów nad ustalonym alfabetem Wy: "tak" wtedy i tylko wtedy gdy istnieje ciąg liczb naturalnych i(1),...,i(m), m>=1, taki, że wi(1),..., wi(m) = xi(1), ... , xi(m). Np. 15 dla list: A=1, 10111, 10, B=111, 10, 0, odpowiedź jest "tak" – rozwiązaniem jest ciąg 2,1,1,3. dla list: A=10, 011, 101, B=101, 11, 011, odpowiedź jest "nie" – w tym przypadku można to udowodnić. Fakt nierozstrzygalności mówi, że nie istnieje jednak ogólna metoda dowodzenia tej własności dla dowolnej instancji. Przykłady problemów które nie są częściowo rozstrzygalne: Dopełnienie problemu stopu: Wejście: MT M oraz słowo w Wyjście: "tak" wtedy i tylko wtedy gdy M nie zatrzymuje się jeśli na wejściu otrzyma słowo w. Pustość języka Wejście: MT M Wyjście: "tak" wtedy i tylko wtedy gdy L(M)=Æ. 16