Odmiany maszyny Turinga 1
Uniwersalna maszyna Turinga Uniwersalna maszyna U nad alfabetem A k jest to maszyna definiująca funkcje: f U, n+1 = {((w(i 1, I 2,..., I n )),y) w - opis maszyny T za pomocą słowa, zaś ((I 1, I 2,..., I n ),y) f T, n } - argument w odpowiada programowi - krotka I 1, I 2,..., I n odpowiada danym wejściowym programu 2
Przykład: A 3 = {0, 1, B} słowo w jest opisem maszyny definiującej f T, 1 = E T= {q 0,q 1 }, A 3, B, {q 0 0BRq 0, q 0 1BRq 0, q 0 BBRq 1 }, q 0 wprowadzamy porządek P na zbiorze stanów P: Q N P(q 0 ) = 1, P(q 1 ) = 2 niech S A 3 ; instrukcję qaa Dq wyrażamy: S P(q) aa D S P(q ) 3
Przykład c.d. kodujemy instrukcje T nad A 3 {S, L, R}: S0BRSS1BRSSBBRSS niech P 1 będzie porządkiem określonym dla A 3, zaś P 2 niech będzie porządkiem nad A 3 {S, L, R} P2 = P1 {(S, 4), (L, 5), (R, 6)} rozważamy funkcję K: (A k {S, L, R})* (A k )* skonstruowaną z wykorzystaniem numeracji elementów dziedziny i przeciwdziedziny 4
Przykład c.d. niech N 1 : (A 3 {S, L, R})* N oraz N 1 (S0BRSS1BRSSBBRSS)=n 1 niech N 2 : (A 3 )* N wybieramy słowo e A 3 *, którego numer porządkowy w numeracji N 2 równy jest n 1, słowo e jest kodem słowa w: K(w) = e 5
Niedeterministyczna maszyna Turinga NDTM = Q, A k, B, δ, q 0 δ: Q I A k 2 Q I A k I {L, R} Deterministyczną maszynę Turinga z dwoma stanami końcowymi q n i q y wyposażamy w moduł generujący słowa należące do A k*. 6
Niedeterministyczna maszyna Turinga Maszyna NDTM działa w dwóch etapach: 1. moduł generujący generuje słowo s A k * i umieszcza je w lewej części taśmy, począwszy od komórki -1 2. następuje sprawdzenie, czy słowo s spełnia warunki określone w postawionym pytaniu 7
Niedeterministyczna maszyna Turinga NDTM rozwiązuje problem decyzyjny π, jeżeli dla każdej instancji tego problemu wygenerowany łańcuch s powoduje, że po wykonaniu programu NDTM są spełnione warunki: jeżeli odpowiedź brzmi tak, to maszyna zatrzymuje się w stanie końcowym q y, jeżeli odpowiedź brzmi nie, to maszyna osiąga stan q n albo faza sprawdzania nie zakończy się w skończonym czasie. 8
Wielotaśmowa maszyna Turinga k-dtm = Q, Z 1, Z 2,... Z k, B, δ, q 0 δ: Q I Z 1 I Z 2 I...I Z k Q I Z 1 I Z 2 I...I Z k I {L, R} k k-ndtm = Q, Z 1, Z 2,... Z k, B, δ, q 0 δ: Q I Z 1 I Z 2 I...I Z k 2 Q I Z 1 I Z 2 I...I Z k I {L, R}k 9
Odmiany pojęcia maszyny Turinga Twierdzenie 1 Każda k-taśmowa maszyna Turinga może być symulowana przez jednotaśmową maszynę Turinga. Twierdzenie 2 Każda NDTM może być symulowana przez 3-DTM. Wniosek Każda NDTM może być symulowana przez DTM. 10
Maszyna Turinga z wyrocznią OTM = Q, A k, Σ, B, δ, q 0, q h, q c, q r A k - skończony, niepusty zbiór symboli taśmy pierwotnej Σ - skończony, niepusty zbiór symboli taśmy wyroczni δ: Q {q c, q h } I A k I Σ Q I A k I Σ I {L, R} I {L, R} q h - wyróżniony stan końcowy q c - wyróżniony stan konsultacji z wyrocznią q r - wyróżniony stan wznowienia obliczeń (po konsultacji) 11
Maszyna Turinga z wyrocznią 0 0 0 1 0 1 1 0 0 0 taśma wyroczni sterowanie 0 0 0 1 0 1 1 0 0 taśma pierwotna 12
Zasada działania maszyny Turinga z wyrocznią w stanie q 0 na taśmie pierwotnej zapisane jest słowo wejściowe, taśma wyroczni jest pusta, maszyna OTM rozpoczyna pracę jak DTM; jeśli sterowanie przejdzie do stanu q n, to obliczenia kończą się, a wynik znajduje się na taśmie pierwotnej; jeśli OTM znajduje się w stanie q Q - {q n, q 0 }, to maszyna wykonuje czynności zgodnie z δ (jak zwykła 2-DTM); 13
Zasada działania maszyny Turinga z wyrocznią jeśli OTM znajdzie się w stanie q c, to obliczana jest wartość funkcji wyroczni g: Σ* Σ*, dla słowa y zapisanego na taśmie wyroczni; niech g(y) = z, wtedy w jednym kroku następuje zmiana zawartości taśmy wyroczni na słowo z, zapisane w komórkach 1 do z, głowica przesuwa się nad komórką 1, a maszyna przechodzi do stanu q r, taśma pierwotna nie ulega zmianie. 14
Złożoność maszyny Turinga Definicja wg C. E. Shanona Miarą złożoności maszyny Turinga jest iloczyn liczby stanów przez liczbę symboli alfabetu. Q k 15
Twierdzenie Shanona * Każda maszyna Turinga P o n stanach zdefiniowana nad alfabetem o m symbolach może być symulowana przez maszynę R o dwóch stanach i alfabecie zawierającym 4nm + m symboli. Każda maszyna Turinga P o n stanach zdefiniowana nad alfabetem o m symbolach może być symulowana przez maszynę R o liczbie stanów mniejszej od 8mn i alfabecie zawierającym dwa symbole. *) Dowód można znaleźć w: Brady J. M., Informatyka teoretyczna w ujęciu programistycznym, WNT 1983. 16
Istnieje przeliczalna liczba maszyn Turinga. Niech f: N {zbiór maszyn Turinga} gdzie f(n) jest maszyną T nad A 2 = {1, B} piszącą na taśmie n jedynek istnieją również inne maszyny Turinga, więc ℵ 0 liczba maszyn Turigna (1) 17
Istnieje przeliczalna liczba maszyn Turinga. T: Q I A 2 Q I A 2 I{L, R} czyli {zbiór maszyn Turinga} = U{ T T : QxA QxA x{ L, } Q card{zbiór maszyn Turinga} = card Q card U Q { T T : QxA QxA x{ L, } 2 2 R ({ T T : QxA QxA x{ L, }) 2 2 R ( ) ( ( )) ( ) 2 2 R = 4card Q = 4n = ℵ0 (2) Q 2card Q n N 2n Q - skończony segment N 18
Problem stopu maszyny Turinga Czy w ogólnym przypadku można rozstrzygnąć, czy f T, 1 (I) dla I A k-1 jest określone? Czy funkcja H(I, y) (gdzie I jest opisem maszyny, słowo y jest argumentem f T, 1, a wartość H(I,y) = a1 jeśli f T, 1 (y) jest określone i H(I, y) = ε, gdy f T, 1 (y) jest nieokreślone) jest obliczalna? 19
Funkcje nieobliczalne Twierdzenie Istnieją funkcje nieobliczalne według Turinga. 20
Przykład funkcji nieobliczalnej Zdefiniujmy funkcję S: N N, taką, że S(n) oznacza maksymalną liczbę jedynek napisanych przez maszynę Turinga o n stanach. Maszyna zatrzymuje się po napisaniu tych jedynek. S(1) = 1 S(2) = 4 S(3) = 6 S(4) = 13 S(5) 17 S(6) 35 S(7) 22961 S(8) 8 10 44 21
Szkic dowodu (nie wprost) Załóżmy, że S(I) jest funkcją obliczalną. Zatem istnieje k-stanowa maszyna Turinga M S(I) obliczająca S(I). Jeżeli S(I) jest obliczalna, to istnieje k stanową M S(S(I)) obliczająca S(S(I)). Zdefiniujmy teraz M*, która: zapisuje słowo I na taśmie (I stanów) głowica wraca na początek słowa I (c stanów) działa jak maszyna M S(S(I)) dla słowa I. Widać, że M* posiada I + c + k stanów 22
Szkic dowodu (nie wprost) Z definicji S(I) wynika, że S(I + c + k ) S(S(I)) (bo M S(S(I)) ma tylko k stanów). Jest to jednak niemożliwe, bo dla dostatecznie dużych I na podstawie monotoniczności funkcji S(I) mamy: S(I) > I + c + k. 23
Funkcje pierwotnie rekurencyjne Za pomocą trzech schematów określamy zbiór słowowych funkcji bazowych: Funkcja ścierająca E(x) = ε, dla wszystkich x A * k Funkcja j-tego następnika, 1 j k S j (x) = x a j, dla wszystkich x A * k Rodzina funkcji projekcji P jn (x 1, x 2,...x j,..., x n ) = x j, 1 j n dla wszystkich x 1, x 2,...x j,..., x n A * k 24
Reguły tworzenia funkcji złożonych Podstawienie f(x 1, x 2,..., x n ) = g(h 1 (x 1, x 2,..., x n ), h 2 (x 1, x 2,..., x n ),..., h m (x 1, x 2,..., x n )) dla wszystkich x 1, x 2,..., x n A * k Rekursja prosta f(ε, x 2,..., x n ) = g(x 2,..., x n ) f(s 1 (x 1 ), x 2,..., x n ) = h 1 (x 1, f(x 1, x 2,..., x n ), x 2,..., x n ) f(s 2 (x 1 ), x 2,..., x n ) = h 2 (x 1, f(x 1, x 2,..., x n ), x 2,..., x n )... f(s k (x 1 ), x 2,..., x n ) = h k (x 1, f(x 1, x 2,..., x n ), x 2,..., x n ) dla dr hab. wszystkixh inż. Joanna Józefowska, x 1, x 2, prof...., PPx n A * k 25
Definicja FPR Funkcja f jest pierwotnie rekurencyjna (FPR), jeżeli można ją uzyskać z funkcji bazowych przez skończoną liczbę zastosowań schematów podstawienia i rekursji prostej. 26
Minimizacja Funkcje n-argumentową uzyskuje się z funkcji (n+1) argumentowej Ψ przez minimizację nad (a j )*, jeśli dla wszystkich x 1, x 2,..., x n A k* : Φ(x 1, x 2,..., x n ) jest określone wtedy i tylko wtedy, gdy istnieje m N, takie że dla każdego 0 p m, Ψ(a jp, x 1, x 2,..., x n ) jest określone i Ψ(a jp, x 1, x 2,..., x n ) = ε. Gdy Φ(x 1, x 2,..., x n ) jest określone (istnieje takie m), wtedy Φ(x 1, x 2,..., x n ) = a jq, gdzie q jest najmniejszym takim m. Φ(x 1, x 2,..., x n ) = min j y [Ψ(x 1, x 2,..., x n ) = ε] 27
Definicja FCR Funkcje nazywamy funkcją rekurencyjna częściową (FCR), jeśli można ją otrzymać z funkcji bazowych przez skończoną liczbę zastosowań operacji podstawienia, rekursji prostej i minimizacji. 28
Maszyna RAM (Random Access Machine) Maszyna RAM jest to wyidealizowany komputer ze swobodnym dostępem do pamięci. Ustalamy alfabet A k. Pamięć maszyny RAM składa się z nieskończonego zbioru rejestrów R1, R2,... Każdy z rejestrów może pamiętać dowolne słowo ze zbioru A k*. Maszyna RAM jest programowalna. Każdy program maszyny RAM wykorzystuje tylko skończony zbiór rejestrów. 29
Instrukcje maszyny RAM Oznaczenia: E etykieta instrukcji E zmodyfikowana postać etykiety (Ea lub Eb) Y, Z nazwy rejestrów 30
Instrukcje maszyny RAM Typ 1j. 2. 3. 4. 5. 6j. 7. Instrukcja E addj Y E del Y E clr Y E Y Z E jmp E E Y jmpj E E continue Opis działania dodanie litery a j na prawym końcu słowa w rejestrze Y usunięcie jednej litery z lewego końca słowa w rejestrze Y wymazanie zawartości rejestru Y (wpisanie ε) skopiowanie słowa z rejestru Z do Y skok do najblizszej instrukcji etykietowanej: E a (w górę) E b (w dół) skok do E, o ile słowo w rejestrze Y rozpoczyna się literą a j instrukcja pusta 31
Program maszyny RAM program maszyny RAM jest skończonym ciągiem instrukcji, w którym dla każdego skoku istnieje miejsce, do którego można skoczyć i w którym ostatnią instrukcją jest continue program zatrzymuje się, jeżeli wykonanie dochodzi do ostatniej instrukcji continue 32
Program maszyny RAM program P oblicza funkcję rekurencyjną częściową ϕ(i 1, I 2,..., I n ), o ile działanie programu rozpoczyna się od stanu, w którym zawartością rejestrów R 1, R 2,..., R n są odpowiednio słowa: I 1, I 2,..., I n, a pozostałe rejestry sa puste, program P zatrzymuje się tylko wtedy, gdy wartość ϕ(i 1, I 2,..., I n ) jest określona, jeśli P się zatrzyma, to końcową zawartością rejestru R1 jest ϕ(i 1, I 2,..., I n ). 33
Własności maszyny RAM Lemat Wszystkie funkcje podstawowe klasy funkcji pierwotnie rekurencyjnych są RAM-obliczalne. clr R 1 continue add j R 1 continue R 1 R i continue funkcja ścierająca funkcja nastepnika S j funkcja projekcji P i n 34
Własności maszyny RAM Twierdzenie Każda częściowa funkcja rekurencyjna jest RAM-obliczalna. Ponadto dla dowolnej zdefiniowanej częściowej funkcji rekurencyjnej zbudowanej z funkcji podstawowych można w sposób efektywny (stosując podstawienie, rekursję i minimalizację) podać program maszyny RAM obliczający tę funkcję. 35
Przykład programu maszyny RAM con 2 (I 1, I 2 ) = I 1 I 2, dla I 1, I 2 A k * A R 2 jmp j N jb 1 j k jmp B b N j add j R 1 del R 2 jmp A a B continue 36
Zadanie domowe Podać program maszyny RAM obliczający funkcję dell(i)=(i z opuszczoną ostatnią literą), I A k *. Program ma usuwać ostatnią literę z dowolnego słowa nad alfabetem A k. 37
Zadanie domowe Jaki jest wynik działania następującej maszyny Turinga dla ciągu wejściowego: 11110111? Jaki algorytm realizuje ta maszyna? T = (Q, A 2, 0, I, q 0 ) A 2 = {0, 1} Q = {q 0, q 1, q 10, q 11, q 100, q 101, q 110, q 111, q 1000, q 1001, q 1010 } I = {q 0 00Rq 0, q 0 11Lq 1, q 1 01Rq 10, q 1 11Lq 1, q 10 00Rq 1010, q 10 10Rq 11, q 11 00Rq 100, q 11 11Rq 11, q 100 00Rq 100, q 100 10Rq 101, q 101 00Lq 111, q 101 11Lq 110, q 110 00Lq 110, q 110 11Lq 1, q 111 00Lq 111, q 111 11Lq 1000, q 1000 00Lq 1001, q 1000 11Lq 1000, q 1001 00Rq 10, q 1001 11Lq 1, q 1010 00STOPq 0, q 1010 11Rq 1010 } 38