MASZYNA TURINGA UPRASZCZANIE DANYCH



Podobne dokumenty
Podstawy Informatyki Maszyna Turinga

PROBLEMY NIEROZSTRZYGALNE

Maszyna Turinga (Algorytmy Część III)

Hierarchia Chomsky ego Maszyna Turinga

Elementy Teorii Obliczeń

Maszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu

Języki, automaty i obliczenia

Maszyna Turinga języki

Wprowadzenie do maszyny Turinga

Turing i jego maszyny

InŜynieria oprogramowania. Język UML

Matematyczne Podstawy Informatyki

Przykład: Σ = {0, 1} Σ - zbiór wszystkich skończonych ciagów binarnych. L 1 = {0, 00, 000,...,1, 11, 111,... } L 2 = {01, 1010, 001, 11}

Maszyna Turinga Złożoność obliczeniowa

Języki formalne i automaty Ćwiczenia 9

MODELOWANIE RZECZYWISTOŚCI

O ALGORYTMACH I MASZYNACH TURINGA

Maszyna Turinga, ang. Turing Machine (TM)

Matematyczna wieża Babel. 4. Ograniczone maszyny Turinga o językach kontekstowych materiały do ćwiczeń

Algorytmy sztucznej inteligencji

Obliczenia inspirowane Naturą

Efektywność Procedur Obliczeniowych. wykład 5

Informatyka. Michał Rad

Złożoność obliczeniowa zadania, zestaw 2

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

Języki formalne i automaty Ćwiczenia 1

1 Automaty niedeterministyczne

Alan M. TURING. Matematyk u progu współczesnej informatyki

Obliczanie. dr hab. inż. Joanna Józefowska, prof. PP 1

Języki formalne i automaty Ćwiczenia 4

Instrukcje dla zawodników

AUTOMATY SKOŃCZONE. Automat skończony przedstawiamy formalnie jako uporządkowaną piątkę:

Wyrażenie nawiasowe. Wyrażenie puste jest poprawnym wyrażeniem nawiasowym.

Scenariusz zajęć z matematyki dla klasy I gimnazjum z wykorzystaniem programu edurom Matematyka G1

Definicje. Algorytm to:

Informatyka 1. Złożoność obliczeniowa

O LICZBACH NIEOBLICZALNYCH I ICH ZWIĄZKACH Z INFORMATYKĄ

Obliczenia inspirowane Naturą

Arytmetyka liczb binarnych

Algorytmy i struktury danych. wykład 2

Niestandardowe modele obliczeń

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

EGZAMIN MATURALNY Z INFORMATYKI

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Odmiany maszyny Turinga. dr hab. inż. Joanna Józefowska, prof. PP 1

Algorytm. Krótka historia algorytmów

Struktura danych. Sposób uporządkowania informacji w komputerze.

Imię, nazwisko, nr indeksu

KATEDRA INFORMATYKI TECHNICZNEJ. Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych. ćwiczenie 204

wagi cyfry pozycje

1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie

Hierarchia Chomsky ego

Uniwersytet Kazimierza Wielkiego w Bydgoszczy Zespół Szkół nr 5 Mistrzostwa Sportowego XV Liceum Ogólnokształcące w Bydgoszczy

1. Operacje logiczne A B A OR B

Temat: Zastosowanie wyrażeń regularnych do syntezy i analizy automatów skończonych

Automat ze stosem. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Pomorski Czarodziej 2016 Zadania. Kategoria C

Zadanie 1. (6 punktów) Słowo w nazwiemy anagramem słowa v jeśli w można otrzymać z v poprzez zamianę kolejności liter. Niech

Struktury danych i złożoność obliczeniowa Wykład 6. Prof. dr hab. inż. Jan Magott

Rozdział 9 PROGRAMOWANIE DYNAMICZNE

LOGIKA I TEORIA ZBIORÓW

ZADANIA Z AUTOMATU SKOŃCZONEGO SPRAWOZDANIE NR 4

Wyrażenia regularne.

Złożoność obliczeniowa. wykład 1

Dopełnienie to można wyrazić w następujący sposób:

Algorytmy Równoległe i Rozproszone Część X - Algorytmy samostabilizujące.

Temat: Algorytm kompresji plików metodą Huffmana

Technologia informacyjna Algorytm Janusz Uriasz

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

Języki, automaty i obliczenia

Złożoność informacyjna Kołmogorowa. Paweł Parys

Ekonometria - ćwiczenia 10

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Poprawność semantyczna

Tajna wiadomość. Scenariusz lekcji

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

KONKURS MATEMATYCZNY KOMA 2018

Polcode Code Contest PHP-10.09

Modele Obliczeń. Wykład 1 - Wprowadzenie. Marcin Szczuka. Instytut Matematyki, Uniwersytet Warszawski

Podstawy Programowania. Złożoność obliczeniowa

Zmiany. Initial Step krok inicjujący sekwenser

Teoretyczne podstawy informatyki

Maszyny Turinga. Jerzy Pogonowski. Funkcje rekurencyjne. Zakład Logiki Stosowanej UAM

Algorytm. Krótka historia algorytmów

Spacery losowe generowanie realizacji procesu losowego

FUNKCJE. Kurs ZDAJ MATURĘ Z MATEMATYKI MODUŁ 5 Teoria funkcje cz.1. Definicja funkcji i wiadomości podstawowe

B.B. 2. Sumowanie rozpoczynamy od ostatniej kolumny. Sumujemy cyfry w kolumnie zgodnie z podaną tabelką zapisując wynik pod kreską:

Automaty Büchi ego i równoważne modele obliczeń

Języki formalne i automaty Ćwiczenia 2

Poprawność algorytmów

5c. Sieci i przepływy

Operacje arytmetyczne

Rozdział 1 PROGRAMOWANIE LINIOWE

złożony ze słów zerojedynkowych o długości co najmniej 3, w których druga i trzecia litera od końca sa

Maszyna Turinga Złożoność obliczeniowa

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

Temat 20. Techniki algorytmiczne

========================= Zapisujemy naszą funkcję kwadratową w postaci kanonicznej: 2

13. Równania różniczkowe - portrety fazowe

Transkrypt:

MASZYNA TURINGA Maszyna Turinga jest prostym urządzeniem algorytmicznym, uderzająco prymitywnym w porównaniu z dzisiejszymi komputerami i językami programowania, a jednak na tyle silnym, że pozwala na wykonanie nawet najbardziej złożonych algorytmów. Maszyna Turinga jest mechanizmem powstałym w wyniku ciągu uproszczeń: danych, sterowania nimi oraz uproszczeń podstawowych operacji. Maszynę tą wymyślił w roku 1936 brytyjski matematyk Alan M.Turing UPRASZCZANIE DANYCH Każdy element danych używany w algorytmie, czy to będą dane wejściowe, wyjściowe czy wartości pośrednie, można traktować jako ciąg symboli, czyli napis. Liczba całkowita nie jest niczym innym, jak ciągiem cyfr, liczba ułamkowa zaś ciągiem cyfr, który może zawierać kropkę. Prostej linearyzacji mogą podlegać zarówno słowa jak i teksty, które są ciągiem symboli składającym się z liter, znaków przestankowych i odstępów. Wszystkie obiekty a nawet najbardziej skomplikowane struktury danych możemy łatwo zakodować, traktując je cały czas symbolicznie, jako liczby, słowa lub teksty. Liczba różnych symboli jest skończona i ustala się ją zawczasu. Każdą interesującą nas jednostkę danych możemy więc zapisać na jednowymiarowej taśmie o nieograniczonej długości składającej się z ciągu kwadratów, z których każdy zawiera pojedynczy symbol z pewnego skończonego alfabetu. Alfabet składa się z rzeczywistych symboli, które same tworzą jednostki danych, oraz specjalny symbol pusty wskazujący brak informacji. Taśma zawsze będzie zawierać skończoną znaczącą porcję danych, otoczoną z każdej strony nieskończonym ciągiem symboli pustych. UPRASZCZANIE STEROWANIA Jedną z najważniejszych rzeczy dla uproszczenia sterowania jest skończoność tekstu algorytmu. Procesor może znajdować się tylko w jednym ze skończonej liczby miejsc w tym tekście. Wystarczy użyć więc prymitywnego mechanizmu zawierającego pewien rodzaj skrzyni biegów, mającej skończenie wiele stanów. Stany skrzyni biegów będziemy traktować jako służące do kodowania miejsc w algorytmie, więc poruszanie się w nim modelujemy zmianą stanu. W każdym punkcie wykonywania algorytmu miejsce, które ma być odwiedzone jako następne, zależy od miejsca, w którym się znajdujemy, tak więc następny stan skrzyni biegów zależy od jego bieżącego stanu. Zmiana stanu zależy od danych oraz od bieżącego stanu. W danej chwili czasu może być czytany tylko pojedynczy symbol, więc dopuszcza się badanie tylko jednego kwadratu na raz. Mechanizm "zmienia bieg" w zależności od wartości czytanego symbolu i swojego stanu bieżącego, przechodząc do nowego stanu. Mechanizm porusza się po taśmie przesuwając się wzdłuż nie po jednym kwadracie a kierunek ruchu zależy od bieżącego stanu skrzyni biegów i bieżącego symbolu. Te ograniczenia upraszczają sterowanie w algorytmie. Powstały mechanizm jest prostym mechanizmem mogącym być w jednym ze skończonej liczby stanów, poruszając się wzdłuż taśmy po jednym kwadracie. Mechanizm ten działa wyznaczając nowe stany i kierunki jako funkcje stanu bieżącego i bieżącego symbolu. 1

UPRASZCZANIE PODSTAWOWYCH OPERACJI Poprawność działania algorytmów zależy od poprawnego manipulowania danymi, przekształcania ich, wymazywania, czytania lub zapisywania, stosowania do nich operacji arytmetycznych lub tekstowych. Do zmiany stanu i poruszania się o jeden kwadrat w lewo lub w prawo omawiany mechanizm jest wyposażony w możliwości przekształcania w określonym stanie pewnego widzianego symbolu w jeden ze skończonej liczby dostępnych symboli. Maszyna Turinga jest prostym modelem matematycznym komputera. Podstawowy model przedstawiony na rysunku 1 ma skończone sterowanie, taśmę wejściową podzieloną na komórki (kwadraty) oraz głowicę taśmy, mogącą obserwować w dowolnej chwili tylko jedna komórkę taśmy. Taśma ma komórkę położoną najbardziej na lewo, ale jest prawostronnie nieskończona. Każda z komórek taśmy może zawierać dokładnie jeden symbol z skończonego alfabetu symboli. Przyjmuje się umownie, że ciąg symboli wejściowych umieszczony jest na taśmie począwszy od lewej, pozostałe komórki ( na prawo od symboli wejściowych) są wypełnione specjalnym symbolem taśmowym noszącym nazwę symbolu pustego. Maszyna Turinga składa się z następujących elementów:» skończonego alfabetu symboli;» skończonego zbioru stanów;» nieskończonej taśmy z zaznaczonymi kwadratami, z których każdy może zawierać pojedynczy symbol;» ruchomej głowicy odczytująco - zapisującej, która może wędrować wzdłuż taśmy przesuwając się na raz o jeden kwadrat» diagramu przejść między stanami, zawierającego instrukcje, które powodują, że zmiany następują przy każdym zatrzymaniu się. Rysunek 1. Podstawowy model maszyny Turinga W zależności od obserwowanego symbolu przez głowicę taśmy oraz stanu sterowania skończonego, maszyna Turinga w pojedynczym ruchu: 2

» zmienia stan,» wpisuje symbol w obserwowanej komórce taśmy, zastępując symbol tam wpisany,» przesuwa głowicę o jedną komórkę w prawo lub w lewo. Formalnie maszynę Turinga (MT) nazywamy: M = <Q,, Γ, ð,, B, F > gdzie: Q- jest skończonym zbiorem stanów, Γ - skończony zbiór dopuszczalnych symboli taśmowych, B- symbol pusty należący do Γ, - podzbiór Γ nie zawierający B, zwany zbiorem symboli wejściowych, ð - funkcja następnego ruchu, będąca odwzorowaniem Q x Γ w Q x Γ x { L, P } gdzie: L- oznacza ruch w lewo P- ruch w prawo, - stan początkowy, F Q - zbiór stanów końcowych Działanie maszyny Turinga przedstawia się jako diagram przejść między stanami lub jako tabelę stanów, które to pojęcia zostały omówione poniżej. Diagram przejść między stanami zawiera instrukcje, które powodują, że zmiany następują po każdym zatrzymaniu się. Diagram przejść jest grafem skierowanym, którego wierzchołki reprezentują stany. Krawędź prowadząca ze stanu s do stanu t nazywa się przejściem i etykietuje się ją kodem postaci (a/b, kierunek) gdzie a i b są symbolami, a kierunek określa ruch głowicy w prawo bądź w lewo. Część a etykiety jest wyzwalaczem przejścia, a część <b, kierunek> akcją: 3

W czasie swego działania maszyna Turinga, kiedy znajdzie się w stanie s i odczytywanym symbolem będzie a to nastąpi wpisanie w to miejsce b i przesunięcie o jedno pole w kierunku kierunek. Fragment przykładowego diagramu przejść przedstawia rysunek 2. Rysunek 2. Fragment grafu przejść między stanami dla maszyny Turinga Aby zapobiec niejednoznaczności, co do następnego ruchu maszyny (tj. aby jej zachowanie było deterministyczne), z jednego stanu nie wychodzą dwa przejścia z tym samym wyzwalaczem. Jeden ze stanów w diagramie jest zaznaczony skierowaną do niego strzałką opatrzoną etykietą start i jest nazywany stanem początkowym. Podobnie stany z których nie wychodzą już żadne przejścia, nazywa się stanami końcowymi. Tabela stanów - która również obrazuje przejścia między stanami maszyny Turinga zawiera wszystkie symbole z skończonego alfabetu wejściowego jak również wszystkie stany w których może znaleźć się maszyna Turinga. Każde pole tabeli określa: 1. dla danego stanu q i kolejny stan q i+1 2. symbol, który ma być zapisany na taśmie 3. kierunek (L / P) dla ruchu głowicy 4

Rysunek 4. Fragment stanów maszyny Turinga Zarówno dla tabeli stanów jak i grafu przejść wyróżnia się specyficzne stany będące odpowiednio stanem początkowym i stanem (bądź stanami ) końcowym, zwane też stanami biernymi. Zakłada się, że maszyna rozpoczyna swoje działanie od swego stanu początkowego na pierwszym od lewej niepustym kwadracie taśmy i postępuje krok po kroku zgodnie z narzuconym ruchem, zaś kończy działanie po osiągnięciu stanu końcowego. TEZA CHURCHA - TURINGA Różnorodność zadań stawianych przed maszyną Turinga postawiło pytanie: Jakie problemy można rozwiązać odpowiednio zaprogramowaną maszyną Turinga (oczywiście pomijając czas)? Otóż okazuje się że: Maszyny Turinga potrafią rozwiązać każdy efektywnie rozwiązywalny problem algorytmiczny. Mówiąc inaczej, każdy problem algorytmiczny dla którego możemy znaleźć algorytm dający się zaprogramować w pewnym dowolnym języku, wykonujący się na pewnym dowolnym komputerze, nawet na takim, którego jeszcze nie zbudowano, ale można zbudować, i nawet na takim, który wymaga nieograniczonej ilości czasu i pamięci dla coraz większych danych, jest także rozwiązywalny przez maszynę Turinga. To stwierdzenie jest jedną z wersji tzw. tezy Churcha-Turinga (Alonz Church, Alan M. Turing), którzy doszli do niej niezależnie w połowie lat trzydziestych. Istotną sprawą jest aby uświadomić sobie, że teza Churcha-Turinga jest tezą a nie twierdzeniem, zatem nie może być dowiedziona w matematycznym tego słowa znaczeniu. Jedno z pojęć, do której się odwołuje, jest bowiem nieformalnym i nieprecyzyjnym, pojęciem efektywnej obliczalności. Dlaczego jednak powinniśmy wierzyć tej tezie, szczególnie, jeśli nie można jej udowodnić? Już od wczesnych lat trzydziestych badacze proponowali różne modele komputera absolutnego, wszechpotężnego, lub uniwersalnego. Chciano bowiem sprecyzować ulotne pojęcie efektywnej obliczalności. Na długo 5

przedtem nim wymyślono pierwszy komputer, Turing zaproponował swoją maszynę, a Church wymyślił matematyczny formalizm funkcji zwany rachunkiem lambda (jako podstawa języka programowania Lisp). Mniej więcej w tym samym czasie Emil Post zdefiniował pewien typ systemu produkcji do manipulowania symbolami, a Stephen Kleene zdefiniował klasę obiektów zwanych funkcjami rekurencyjnymi. Wszyscy oni próbowali użyć tych modeli do rozwiązania wielu problemów algorytmicznych, do których znane były efektywnie wykonalne algorytmy. Przełomowym zdarzeniem istotnym dla wszystkich tych modeli stało się udowodnienie, iż są one równoważne w kategoriach problemów algorytmicznych, które rozwiązują. I ten fakt jest dziś nadal prawdziwy nawet dla najsilniejszych modeli, jakie można sobie wyobrazić. Z tezy Churcha-Turinga wynika, że najpotężniejszy superkomputer z wieloma najwymyślniejszymi językami programowania, interpretatorami, kompilatorami i wszelkimi zachciankami, nie jest potężniejszy od domowego komputera z jego uproszczonym językiem programowania. Mając ograniczoną ilość czasu i pamięci mogą obydwa rozwiązać te same problemy algorytmiczne, jak również żaden z nich nie może rozwiązać problemów nierozstrzygalnych (nieobliczalnych). Schematycznie rozstrzygalność problemów przedstawia poniższy rysunek: Sfera problemów algorytmicznych. Problem algorytmiczny, do którego nie ma żadnego algorytmu jest nazywany nieobliczalnym; jeśli to problem decyzyjny nazywa się nierozstrzygalnym. Dla problemów tego typu w żaden sposób nie można skonstruować algorytmu, wykonywanego na dowolnym 6

komputerze, bez względu na ilość wymaganego czasu i pamięci, który mógłby je rozstrzygnąć. ODMIANY MODELU MASZYNY TURINGA Działanie maszyny Turinga można ograniczyć na wiele sposobów nie zmniejszając jednak klasy problemów, które rozwiązuje. Można na przykład żądać, żeby dane wejściowe pozostały nienaruszone i żeby przy zatrzymaniu taśma zawierała tylko dane i wyniki otoczone symbolami pustymi. Można zdefiniować maszynę Turinga z taśmą, która jest nieskończona tylko z prawej strony, a dane są zapisywane na taśmie od lewego skraju. Obie odmiany maszyny mogą rozwiązywać dokładnie te same problemy co model podstawowy i wobec tego nie są od niego słabsze. Podobnie dodanie maszynom dowolnie silnej własności nie powoduje żadnego rozszerzenia klasy rozwiązywalnych problemów. W żadnym z rozszerzeń nie da się rozwiązać problemu nie rozwiązywalnego. Maszyna, która może symulować działanie dowolnej maszyny Turinga na dowolnych danych nazywa się uniwersalną maszyną Turinga. Uniwersalna maszyna Turinga U akceptuje jako dane opis dowolnej maszyny Turinga M, po którym jest umieszczony skończony ciąg X traktowany jako dane dla maszyny M. Następnie symuluje ona akcje maszyny M na taśmie, na której znajdują się dane X otoczone symbolami pustymi. Jeśli maszyna M nie może zatrzymać się na taśmie, to także nie może zatrzymać się maszyna U, jeśli maszyna M zatrzyma się to zatrzyma się również maszyna U. Obie taśmy będą wyglądać dokładnie tak samo po zakończeniu działania. Ograniczenia narzucone na maszyny Turinga nie pomniejszają uniwersalności modelu. Oczywiście nie wszystkie ograniczenia mają tę właściwość. Maszyny, od których wymaga się, aby zatrzymywały się zaraz po uruchomieniu lub nie zatrzymywały się w ogóle, nie dokonają wiele. Istnieje również inny sposób ograniczenia modelu maszyny Turinga. Wiąże się on z ograniczeniem samego mechanizmu maszyny. Jedną z najbardziej interesujących degeneracji otrzymuje się ograniczając poruszanie się maszyny Turinga na taśmie tylko do jednego kierunku (jednokierunkowa maszyna Turinga), np. w prawo. Wynikiem jest urządzenie zwane automatem skończenie stanowym lub automatem skończonym. Automat skończony rozwiązujący problem decyzyjny działa następująco. Przechodzi wzdłuż podanej sekwencji symbol po symbolu zmieniając stan w wyniku stanu bieżącego i nowego symbolu z taśmy. Po osiągnięciu końca sekwencji zatrzymuje się, a odpowiedź zależy od tego, czy automat zatrzymał się w stanie TAK czy NIE. Automat skończony można przedstawić jako diagram przejść między stanami, tak jak dla maszyny Turinga, teraz jednak baz części <b, kierunek> w etykiecie; przejście jest etykietowane symbolem, który je wyzwala. PRZYKŁADY MASZYNY TURINGA Przykład 1: Maszyna Turinga podwajająca symbole w słowie. W celu zobrazowania konstrukcji tabeli stanów przeanalizujmy maszynę Turinga, która dla alfabetu wejściowego ={a, b} podwaja symbole w słowie. 7

={a, b} Γ = { ø, a, b} Przed wypisaniem tabeli stanów przeanalizujmy jak podana maszyna Turinga ma działać. Dla słowa: ab otrzymujemy aabb aba otrzymujemy aabbaa Słowo na taśmie zapisane jest jako ciąg symboli postaci na przykład ø ø ø a b ø ø ø. Analiy cigu rozpocznmz od pierwszego symbolu na tamie Na początku w kolumnie wypisujemy wszystkie symbole Γ = { ø, a, b} i stan początkowy ø a b jeżeli będąc w stanie odczytanym symbolem będzie ø to pozostajemy nadal w tym stanie i wykonujemy ruch o jedno pole w prawo ø a b jeżeli będąc w stanie odczytanym symbolem będzie a to wpisujemy w jego miejsce ø i przechodzimy w prawo do stanu Będąc w stanie musimy iść tak długo w prawo aż pominiemy wszystkie symbole łącznie z pierwszym symbolem ø. Wtedy w miejsce drugiego ø (może się ono znajdować po kilku symbolach z alfabetu wejściowego) wpisujemy a i przechodzimy do stanu. Jedynym słusznym symbolem napotkanym w tym stanie jest ø, w miejsce którego wpisujemy drugie a i przechodzimy do stanu (stan powrotu). Jeżeli będąc w tym stanie przejdziemy nad wszystkimi symbolami i napotkamy symbol ø, to sprawdzamy, czy są jeszcze jakieś symbole wejściowe na taśmie. Jeżeli tak to zaczynamy algorytm od początku, w przeciwnym razie przechodzimy do stanu końcowego q 5. 8

q 2 q 5 ø q 5 ø, - q 2 a, L a q 2 q 5 a, L Dla symbolu b pola w tabeli stanów będą tworzone analogicznie. Ostateczny wygląd tabeli stanów przedstawia tabela 1. q 2 q 5 q 7 q 8 ø ø, - q 2 a, L q 5 q 7 q 8 b, L a q 2 a, L q 5 a, L q 7 b q 2 b, L q 5 b, L q 7 Tabela 1. Tabela stanów maszyny Turinga podwajająca symbole w słowie dla alfabetu wejściowego ={a, b} Przeanalizujmy kilka początkowych taktów pracy powyższej maszyny Turinga dla ciągu wejściowego: a b ø ø ø a b ø ø ø ø... / ø ø ø ø b ø ø ø ø... / Ciąg ten jest na taśmie w postaci ø ø ø a b ø ø ø ø... ustawiamy głowicę na pierwszym symbolu z lewej strony ciągu - symbol a zczytujemy a, wpisujemy ø i przechodzimy w prawo do stanu ø ø ø ø b ø ø ø ø... / pozostajemy nadal w stanie aż dojdziemy do pierwszego znaku ø ø ø ø ø b ø ø ø ø... / po napotkaniu pierwszego ø przechodzimy w prawo do stanu q 2 ø ø ø ø b ø a ø ø... / po napotkaniu ø wpisujemy a i przechodzimy do stanu ø ø ø ø b ø a a ø... / w stanie wpisujemy drugie a i przechodzimy do stanu, który to stan powoduje powrót na początek słowa i rozpoczęcie pracy od nowa o ile są jeszcze na taśmie symbole wejściowe Po przeanalizowaniu wszystkich symboli wejściowych przechodzimy do stanu, który to stan jest stanem końcowym (stan bierny). 9

Dla rozpatrywanego ciągu wejściowego można określić trzy elementy w tabeli stanów: stan warunkowy - który powoduje przejście do określonej sekcji manipulowania danym symbolem, sekcja manipulowania - stany odpowiadające za przepisywanie symboli, powrót- stan powodujący przejście do początku i rozpoczęcie pracy od nowa Jak zostało wcześniej wspomniane, alternatywne do tabeli stanów stosuje się graf przejść między stanami. Konstrukcję przykładowego grafu ilustruje kolejny przykład. Przykład 2: Inkrementacja liczby binarnej bez znaku. Maszyna Turinga dodającą 1 do danej liczby w zapisie dwójkowym. Analizę liczby rozpoczynamy z prawej strony. ø 0 1, - 1, - 1 0, L Maszyny Turinga z przykładów: 1 i 2 rozwiązują problemy algorytmiczne związane z manipulacją danych wejściowych. Odmianę stanowią maszyny Turinga rozwiązujące problemy decyzyjne - przykład 3. 10

Przykład 3: Maszyna Turinga bada czy dane słowo jest palindromem. Maszyna Turinga badająca czy dane słowo z alfabetu wejściowego ={a, b, c} jest palindromem (to znaczy słowem, które czyta się tak samo z obu stron). Dodatkowo przyjmuje się, że pojedynczy symbol jest palindromem. Wprowadza się dodatkowo 2 stany akceptacji SA i nieakceptacji SN. Przejście do stanu akceptacji oznacza, że dane słowo jest palindromem, zaś przejście do stanu nieakceptacji oznacza, że słowo nie jest palindromem. Tabela przejść miedzy stanami wygląda następująco: q 2 q 5 q 7 q 8 ø q 2 q 8 q 5 q 8 q 7 q 8 SA SN a a, L SA SN b b, L SA SN c c, P c, P c, L c, P c, P c, P SA SN Symulacja akcji maszyny Turinga dla taśmy zawierającej słowo abba (otoczone nieskończenie wieloma symbolami pustymi z obu stron). Głowica maszyny umieszczona jest na kwadracie zawierającym a znajdujące się najbardziej na lewo. Maszyna "pamięta" pierwszy przeczytany symbol, po czym wymazuje go zastępując symbolem pustym i przechodzi w prawo, aż do osiągnięcia pierwszego symbolu pustego. (etap 1-5) Maszyna przesuwa się o jeden symbol w lewo, zatrzymuje się więc na najbardziej prawym symbolu (etap 6), w omawianym przypadku jest to symbol a. Gdyby odczytany symbol był różny od zapamiętanego, to maszyna przeszłaby do stanu nieakceptacji. W przypadku gdy napotkany symbol byłby symbolem ø, to maszyna przeszłaby do stanu akceptacji. Maszyna wymazuje odczytany najbardziej prawy symbol a i przechodzi do stanu, który doprowadza ją do pierwszego symbolu pustego po lewej stronie słowa. (etap 10) Maszyna przesuwa się o jeden kwadrat w prawo i zapamiętuje przeczytany symbol, drugi symbol słowa - symbol b. Ruszając się w prawo maszyna porówna zapamiętany symbol z przedostatnim symbolem słowa. (etap 13)Porównanie kończy się sukcesem i maszyna wymazuje symbol b. 11

Maszyna rusza w lewo w poszukiwaniu dalszych symboli. Nie znajdując żadnego i nie osiągając stanu nieakceptacji przechodzi do stanu akceptacji. (etap 14-16) Całą symulację krok po kroku, z bieżącym położeniem głowicy przedstawia rys.5. 1... ø ø a b b a ø ø... 2... ø ø ø b b a ø ø... 3... ø ø ø b b a ø ø... 4... ø ø ø b b a ø ø... 5... ø ø ø b b a ø ø... 6... ø ø ø b b a ø ø... 7... ø ø ø b b ø ø ø... 8... ø ø ø b b ø ø ø... 9... ø ø ø b b ø ø ø... 10... ø ø ø b b ø ø ø... 11... ø ø ø ø b ø ø ø... 12... ø ø ø ø b ø ø ø... 13... ø ø ø ø b ø ø ø... 14... ø ø ø ø ø ø ø ø... 15... ø ø ø ø ø ø ø ø... 16... ø ø ø ø ø ø ø ø... Rysunek 5. Symulacja akcji maszyny Turinga dla taśmy zawierającej słowo abba. 12