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