Maszyna Turinga, ang. Turing Machine (TM)

Podobne dokumenty
Hierarchia Chomsky ego Maszyna Turinga

Matematyczne Podstawy Informatyki

Języki, automaty i obliczenia

Maszyna Turinga języki

Elementy Teorii Obliczeń

Obliczenia inspirowane Naturą

Efektywność Procedur Obliczeniowych. wykład 5

PROBLEMY NIEROZSTRZYGALNE

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

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

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

Maszyna Turinga (Algorytmy Część III)

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

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

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

Obliczenia inspirowane Naturą

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

Języki formalne i automaty Ćwiczenia 9

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

Automat ze stosem. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra 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}

Imię, nazwisko, nr indeksu

1 Maszyny Turinga. stan 1 litera 1 litera 2 ruch stan 2. Matematycznie P S (Q {B}) (Q {B}) {L, R, } S

O ALGORYTMACH I MASZYNACH TURINGA

MODELOWANIE RZECZYWISTOŚCI

Języki, automaty i obliczenia

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

Języki, automaty i obliczenia

MASZYNA TURINGA UPRASZCZANIE DANYCH

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

2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego

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

Języki regularne, rozpoznawanie wzorców regularnych, automaty skończone, wyrażenia regularne

Turing i jego maszyny

Podstawy Informatyki Maszyna Turinga

Maszyna Turinga Złożoność obliczeniowa

Języki formalne i automaty Ćwiczenia 7

JAO - Wprowadzenie do Gramatyk bezkontekstowych

M T E O T D O ZI Z E E A LG L O G R O Y R TM

Wprowadzenie: języki, symbole, alfabety, łańcuchy Języki formalne i automaty. Literatura

Wprowadzenie do maszyny Turinga

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

ZADANIA Z AUTOMATU SKOŃCZONEGO SPRAWOZDANIE NR 4

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

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

ZLOŻONOŚĆ OBLICZENIOWA - WYK. 2

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

O LICZBACH NIEOBLICZALNYCH I ICH ZWIĄZKACH Z INFORMATYKĄ

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

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

Języki formalne i automaty Ćwiczenia 1

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

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

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Algorytm. a programowanie -

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

Wstęp do programowania

Matematyczne Podstawy Informatyki

Definicje. Algorytm to:

Efektywna analiza składniowa GBK

Hierarchia Chomsky ego

Matematyczne Podstawy Informatyki

Teoretyczne podstawy informatyki

1 Automaty niedeterministyczne

Wprowadzenie do złożoności obliczeniowej

Teoria układów logicznych

Jaki język zrozumie automat?

Języki programowania zasady ich tworzenia

Wykład5,str.1. Maszyny ze stosem ... 1,0 λ r. λ,z λ

Teoretyczne podstawy informatyki

OBLICZALNOŚĆ I NIEOBLICZALNOŚĆ

O ISTOTNYCH OGRANICZENIACH METODY

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

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

Algorytm. Krótka historia algorytmów

10110 =

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

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

Wyrażenia regularne.

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

KONKURS MATEMATYCZNY KOMA 2018

TEORETYCZNE PODSTAWY INFORMATYKI

Teoria obliczeń czyli czego komputery zrobić nie mogą

Informatyka. Michał Rad

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Języki formalne i automaty Ćwiczenia 3

Algorytmy sztucznej inteligencji

Lista 0. Kamil Matuszewski 1 marca 2016

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

iks plus trzy dzielone na dwa iks razy iks plus pięć

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

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

Dowód pierwszego twierdzenia Gödela o. Kołmogorowa

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Maszyny Turinga i problemy nierozstrzygalne. Maszyny Turinga i problemy nierozstrzygalne

Odwrotna Notacja Polska

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

TEORETYCZNE PODSTAWY INFORMATYKI

Transkrypt:

Maszyna Turinga, ang. Turing Machine (TM) Alan Turing wybitny angielski matematyk, logik i kryptolog, jeden z najważniejszych twórców informatyki teoretycznej, któremu zawdzięczamy pojęcie maszyny Turinga i rozważania na temat nierozstrzygalności problemów obliczeniowych. Głównym modelem wykorzystywanym w opracowanej przez Turinga teorii informatyki był abstrakcyjny, prosty matematyczny model obliczeniowy, analog komputera, nazwany potem na cześć jego wynalazcy Maszyną Turinga (MT). Maszyna Turinga jest pierwszą historycznie, szeroko rozważaną formalizacją komputera, jako urządzenia realizującego algorytmy. Innymi słowy, jeżeli jesteśmy w stanie podać efektywną procedurę realizacji jakichkolwiek obliczeń, to jest to równoważne możliwości podania Maszyny Turinga wykonującej te same obliczenia. Maszyna Turinga MT składa się ze skończonego zbioru stanów i skończonego zbioru przejść między tymi stanami Działanie MT opisuje funkcja przejścia, którą można reprezentować w postaci tabeli przejść lub w sposób graficzny za pomocą diagramu przejść (grafu skierowanego) MT pobiera kolejne symbole z ciągu wejściowego (taśmy) MT rozpoczyna działanie od stanu początkowego i odczytania pierwszego symbolu z ciągu wejściowego Po przeczytaniu każdego kolejnego symbolu z taśmy, MT przechodzi do innego stanu lub pozostaje w tym samym stanie Po odczytaniu znaku z taśmy MT na podstawie tego znaku i swojego bieżącego stanu (dwie informacje), zastępuje ten znak innym, zmienia swój stan na inny bądź ten sam i przesuwa głowicę o jedną pozycję w prawo lub w lewo (trzy informacje). Takie działanie opisuje właśnie funkcja przejścia. Taśma MT zawierająca ciąg danych wejściowych jest obustronnie nieskończona. W trakcie działania MT realizuje algorytm MT może znajdować się w jednym z m stanów, a każda komórka taśmy może zawierać jeden z k symboli. Gdyby liczba komórek taśmy była skończona (n), to MT miałaby skończoną liczbę konfiguracji (nazywanych opisem chwilowym) i wynosiłaby ona mk n. Ponieważ liczba komórek jest nieskończona to liczba różnych konfiguracji MT jest także nieskończona. MT można traktować jako komputer, na którym uruchomiono jeden, konkretny program (algorytm) opisany diagramem przejść. Praktyczną realizacją jednej Maszyny Turinga jest program komputerowy, a zbioru Maszyn Turinga komputer.

W informatyce teoretycznej MT wykorzystuje się do udowadniania nierozstrzygalności, bądź niepodatności różnych problemów. Zapotrzebowanie na czas i pamięć wykorzystywane podczas obliczeń przez Maszynę Turinga nie różnią się zasadniczo od zapotrzebowania jakie posiadają rzeczywiste realne komputery. Formalna definicja Maszyny Turinga Maszyna Turniga jest uporządkowaną siódemką (Q,,,,q 0,B,F) gdzie: Q jest skończonym zbiorem stanów jest skończonym zbiorem symboli wejściowych jest skończonym zbiorem dopuszczalnych symboli taśmowych q 0 jest stanem początkowym (q 0 Q) B jest symbolem pustym F jest zbiorem stanów akceptujących (FQ) jest funkcją przejścia odwzorowującą Qx w Qx x{l,p} Funkcja przejścia ma postać: (q,x) = (p,y,k) gdzie q,pq X,Y K{L,P} W pojedynczym ruchu MT odczytuje kolejny symbol z alfabetu znajdujący się na taśmie w pozycji wskazywanej przez głowicę czytająco-zapisującą, zmienia swój stan zgodnie z opisem zawartym w diagramie przejść, zapisuje nowy symbol na aktualnej pozycji na taśmie (nadpisując poprzedni), i przesuwa głowicę o jedną pozycję w prawo lub w lewo. MT rozpoczyna działanie dla głowicy znajdującej się nad pierwszym symbolem z lewej strony taśmy różnym od symbolu pustego B. Przykłady: 1) MT sprawdzająca czy dany ciąg binarny jest palindromem, tzn. akceptująca język: L={w(0 1 ε)w R ; w= *, ={0,1}} M=({q 0,q 1,q 2,q 3,q 4,q 5,q 6,q 7 },{0,1},{0,1,B},,q 0,B,{q 3 })

2) MT akceptująca język: L={0 n 1 n ; n 1} M=({q 0,q 1,q 2,q 3,q 4,q 5 },{0,1},{0,1,X,Y,B},,q 0,B,{q 4 }) Druga MT akceptująca ten sam język: M=({q 0,q 1,q 2,q 3,q 4,q 5,q 6,q 7,q 8,q 9 },{0,1},{0,1,B},,q 0,B,{q 8 }) Opis chwilowy MT Jeden ruch MT oznaczamy symbolem Jeżeli (q,x i ) = (p,y,l) to ruch głowicy w lewo X 1 X 2 X 3 X i-1 qx i X i+1 X n-2 X n-1 X n X 1 X 2 X 3 X i-2 px i-1 YX i+1 X n-2 X n-1 X n Jeżeli (q,x i ) = (p,y,p) to ruch głowicy w prawo X 1 X 2 X 3 X i-1 qx i X i+1 X n-2 X n-1 X n X 1 X 2 X 3 X i-1 YpX i+1 X n-2 X n-1 X n Dla oznaczenia jednego lub więcej ruchów MT używamy symbolu Opis chwilowy MT dla przykładu 1: q 0 0110 Bq 1 110 B1q 1 10 B11q 1 0 B110q 1 B B11q 2 0B B1q 5 1BB czyli q 0 0110 Bq 3 BBB

Definicja języka maszyny Turinga języka rekurencyjnie przeliczalnego (JRP) Jeżeli M = (Q,,,,q 0,B,F) jest maszyną Turinga to język tej maszyny oznaczamy jako L(M) i definiujemy następująco: L(M) = {w * ; q 0 w p, pf,, * } Języki rekurencyjnie przeliczalne (JRP) języki, które są akceptowane przez maszynę Turinga, przy założeniu, że MT zatrzymuje się, gdy znajdzie się w stanie akceptującym, natomiast nie musi się wcale zatrzymywać, gdy nie akceptuje. Języki rekurencyjne (JR) języki takich MT, które się w końcu zatrzymują bez względu na to czy akceptują ciąg wejściowy, czy nie. MT, które zawsze się zatrzymują stanowią poprawny model algorytmu. Oznacza to, że postawiony problem posiada rozwiązujący go zawsze algorytm, a więc problem taki to problem rozstrzygalny. Dowolny możliwy do opracowania algorytm obliczeniowy ma zawsze swoją reprezentację w postaci Maszyna Turinga. Teza Churcha-Turinga (Alonzo Church amerykański logik i matematyk) Maszyna Turinga potrafi rozwiązać każdy efektywnie rozwiązywalny problem algorytmiczny, dla którego możemy znaleźć algorytm dający się opisać w pewnym dowolnym języku programowania (nawet takim, którego jeszcze nie wymyślono), wykonujący się na pewnym, dowolnym komputerze (nawet na takim jakiego jeszcze nie skonstruowano, ale w przyszłości można skonstruować). rozwiązywalny przez MT = efektywnie rozwiązywalny Inne sformułowanie tezy Churcha-Turinga Każde praktycznie stosowane techniki obliczeniowe mogą być przetłumaczone na równoważne im obliczenia realizowane na MT. Oznacza to, że wszystkie podane poniżej modele obliczeniowe są sobie równoważne: 1) Maszyna Turinga 2) Gramatyka kombinatoryczna (gramatyka klasy 0) 3) Maszyna typu RAM (rejestry, pamięć, instrukcja warunkowa i skoku) 4) Języki programowania z instrukcjami iteracyjnymi (instrukcje podstawienia, warunkowe, pętle, struktury danych, tablice) 5) Rachunek funkcji rekurencyjnych Teza Churcha-Turinga jest tezą a nie twierdzeniem, dlatego nie można przeprowadzić dla niej dowodu matematycznego wykazującego jej poprawność.

Co wynika z tezy Church-Turinga? Każdy rzeczywisty komputer od najprostszego do najbardziej skomplikowanego, a także każdy inny teoretyczny model komputera potrafi obliczyć dokładnie to samo co MT. Co jeszcze wynika z tezy Churcha-Turinga? Czy istnieje równoważność pod względem obliczeniowym MT i dowolnego komputera? Maszyna Turinga i dowolne urządzenie obliczeniowe (komputer) są wielomianowo równoważne Oznacza to, że klasa problemów mających rozsądne czasowo rozwiązanie (problemy podatne wykonywane w czasie wielomianowym) jest taka sama dla obu modeli. Rozwiązując wybrany problem algorytmiczny MT może potrzebować na jego wykonanie dwa razy, sto razy, n razy, n 2 razy a nawet n 10 razy więcej czasu niż potrzebuje komputer, lecz nigdy wykładniczo więcej (2 n razy, 10 n razy, n! razy). Zmienna n oznacza rozmiar problemu (danych wejściowych). Dlatego jeżeli jakiś komputer rozwiązuje problem algorytmiczny w czasie O(f(n)), to MT rozwiązuje ten sam problem w czasie O(p(f(n))), gdzie p jest funkcją wielomianową. W rzeczywistości większość redukcji złożoności obliczeniowej algorytmów wykonywanych na komputerach w stosowanych aktualnie językach programowania do poziomu MT wiąże się z wielomianami względnie niskiego rzędu, na ogół nie większego niż n 5. Niedeterministyczna Maszyna Turinga (NMT) W NMT istnieją stany (co najmniej jeden), w których co najmniej dwa przejścia opisane są tym samym symbolem X. W NMT funkcja przejścia ma postać: (q,x) = {(q 1,Y 1,K 1 ), (q 2,Y 2,K 2 ),, (q n,y n,k n )}; gdzie nn q,q 1,q 2,, q n Q X,Y 1,Y 2,, Y n, K 1, K 2,, K n {L,P} Oznacza to, że istnieją rozwidlenia działania algorytmu na kilka możliwych ścieżek jego realizacji. NMT poprawnie wykonuje algorytm, gdy podczas jego wykonywania możliwe są takie kolejne wybory niedeterministyczne, które na co najmniej jednej ze ścieżek doprowadzą nas do poprawnego zrealizowania tego algorytmu. NMT nie realizuje poprawnie algorytmu, gdy żadna z możliwych ścieżek działania nie zapewni nam poprawnego jego wykonania. Działanie NMT można interpretować jako tworzenie wielu kopii Maszyny Turinga dla każdego z możliwych wariantów, lub zdolność zgadywania, które przejście należy wybrać aby rozwiązać problem algorytmiczny.

Rozszerzone i ograniczone wersje Maszyny Turinga oraz języki akceptowane przez te maszyny 1) Wielotaśmowa MT Wielotaśmowa MT korzysta z więcej niż jednej taśmy. W każdym ruchu głowica może wykonać jedną z trzech czynności (a nie dwóch jak w klasycznej MT): L ruch w lewo o jedna pozycję, P ruch w prawo o jedna pozycję, S głowica nie przesuwa się w żadnym kierunku. Na początku realizacji algorytmu dane wejściowe znajdują się tylko na taśmie pierwszej, a pozostałe są puste. Funkcja przejścia uzależnia kolejny ruch od symboli znajdujących się na wszystkich taśmach, w miejscach wskazywanych przez wszystkie głowice. Funkcja przejścia wielotaśmowej MT o n taśmach ma postać: (q,x 1,X 2,, X n ) = (p,y 1,K 1,Y 2,K 2,, Y n,k n ) K{L,P,S} Wielotaśmowe MT akceptują te same języki co jednotaśmowe MT czyli JRP. Tw: Jednotaśmowa MT symuluje n ruchów k-taśmowej MT w O(n 2 ) ruchach. 2) MT o taśmie tylko jednostronnie nieograniczonej MT o taśmie jednostronnie nieograniczonej akceptuje te same języki co klasyczna MT o taśmie obustronnie nieograniczonej, czyli JRP.

3) Maszyna dwustosowa Maszyna dwustosowa akceptuje te same języki co MT, czyli JRP. Dwa stosy mogą symulować jedną taśmę maszyny Turinga. Jeden stos przechowuje komórki znajdujące się na lewo od głowicy, a drugi stos na prawo. 4) Maszyna dwulicznikowa Liczniki mogą zawierać dowolną liczbę naturalną lub zero, ale ML przy wykonywaniu kolejnego ruchu może wykonywać tylko test polegający na sprawdzaniu tylko czy licznik zawiera liczbę większą od zera, czy równą zero. W jednym ruchu ML zmienia stan lub pozostaje w tym samym, zwiększa lub zmniejsza o jeden wartość jednego z dwóch liczników, ew. pozostawia go bez zmian (liczniki zawierają wartości dodatnie, a dekrementacja wartości 0 pozostawia ją bez zmian). Maszyna licznikowa może być uważana za ograniczoną maszyną wielostosową z dwoma symbolami stosowymi: Z 0 (znacznik spodu stosu) i X. Maszyna dwulicznikowa akceptuje te same języki co MT JRP. Maszyna jednolicznikowa akceptuje te same języki co automat ze stosem (AZS), czyli języki bezkontekstowe (JBK).

Uniwersalna Maszyna Turinga Tak jak Maszyna Turinga jest reprezentacją jednego konkretnego algorytmu, tak Uniwersalna Maszyna Turinga jest równoważna komputerowi, który może realizować różnorodne algorytmy. UMT = (M,w) gdzie M jest słowem kodującym funkcję przejścia danej MT, a w jest słowem analizowanym przez tą MT. Przykładowe kodowanie MT na taśmie czytanej przez UMT MT = (Q,,,,q 0,B,F) = {0,1}, = {0,1,B} kolejne elementy definiujące MT oddzielamy $ kolejne przejścia funkcji oddzielamy # Funkcję przejścia opisujemy następującymi łańcuchami tekstowymi: (q i,x j ) = (q k, X l, K m ) K m = {L,P} i * X j * k * X l * K m pięć elementów opisujących jedno przejście w funkcji oddzielamy * czyli dla przykładowej MT:

uzyskujemy następujące kodowanie tej maszyny na taśmie: (q 0,1) = (q 2,0,P) (q 2,0) = (q 0,1,P) (q 2,1) = (q 1,0,P) (q 2,B) = (q 2,1,L) 0*1*2*0*P# 2*0*0*1*P# 2*1*1*0*P# 2*B*2*1*L 3$01$01B$ $0$B$1 czyli powyższą MT reprezentuje następujący łańcuch tekstowy: k 1 k n = 3$01$01B$0*1*2*0*P#2*0*0*1*P#2*1*1*0*P#2*B*2*1*L$0$B$1 Przykład Rozważmy problem polegający na rozstrzyganiu czy dany ciąg wejściowy składa się z ciągu liter a o długości m, po którym jest drugi ciąg składający się z takiej samej ilości liter b. Problem ten można inaczej sformułować jako pytanie czy słowo w wczytywane w ciągu wejściowym należy do języka L = {a m b m, m1}. Chcemy wyznaczyć pesymistyczną złożoność obliczeniową algorytmu rozstrzygającego, czy dane słowo w należy do języka L. Instrukcją podstawową jest jeden ruch głowicy, rozmiarem danych wejściowych długość n badanego słowa. a) Algorytm 1 Maszyna Turinga 1 Opis działania MT rozstrzygającej przynależność w do języka L 1. Sprawdź czy słowo składa się z ciągu symboli a po którym jest ciąg symboli b (a ab b) 2. Dopóki na taśmie są symbole a i b, wykreślaj parami po jednym symbolu a i b 3. Jeżeli na taśmie nie ma ani jednego symbolu a i ani jednego symbolu b to zaakceptuj, w przeciwnym razie odrzuć Rozwiązanie (omawiane wcześniej, tylko dla innego alfabetu) M=({q 0,q 1,q 2,q 3,q 4,q 5,q 6,q 7,q 8,q 9 },{a,b},{a,b,b},,q 0,B,{q 8 })

Analiza złożoności obliczeniowej: w kroku 1 MT przechodzi przez taśmę w n ruchach głowicy (n długość słowa) w kroku 2 MT przesuwa głowicę od jednego końca do drugiego i z powrotem, usuwając po jednym skrajnym symbolu najpierw b, a potem a; w każdym kolejnym wykonaniu kroku 2 słowo jest krótsze o dwa symbole Złożoność pesymistyczna wynosi: W(n) = n + (n+1 + n) + (n-1 + n-2) + (n-3 + n-4) + (3 + 2) + 1 = n + i = 1 5 n n 1 2 2 i1 Złożoność oczekiwana: A(n) = O(n 2 ), LTime(n 2 ) b) Algorytm 2 szybszy Maszyna Turinga 2 Opis działania MT rozstrzygającej przynależność w do języka L 1. Sprawdź czy słowo składa się z ciągu symboli a po którym jest ciąg symboli b (a ab b) 2. Dopóki na taśmie są symbole a i b: a. Sprawdź czy sumaryczna ilość symboli a i b jest nieparzysta. Jeżeli tak to odrzuć b. Zamień co drugi symbol a na inny (np. X) i co drugi symbol b na inny (np. Y) 3. Jeżeli na taśmie nie ma ani jednego symbolu a i ani jednego symbolu b to zaakceptuj, w przeciwnym razie odrzuć Rozwiązanie (fragment Maszyny Turinga z początkowymi ruchami głowicy) M=({q 0,q 1, },{a,b},{a,b,x,y,b},,q 0,B,{ }) n 1 2 Analiza złożoności obliczeniowej: w kroku 1 MT przechodzi przez taśmę w n ruchach głowicy w krokach 2a i 2b MT przesuwa głowicę od jednego końca do drugiego i z powrotem w 2(n+1) ruchach. Kroki te wykonuje w najgorszym przypadku log 2 (n) razy w kroku 3 MT w n+2 ruchach sprawdza, czy na taśmie nie ma już żadnych symboli a ani b

Złożoność pesymistyczna wynosi: W(n) = n + 2(n+1) log 2 (n) + n+2 = 2(n+1)(1+log 2 (n)) Złożoność oczekiwana: A(n) = O(nlog(n)), LTime(nlog(n)) c) Algorytm 3 najszybszy Dwutaśmowa Maszyna Turinga 3 Opis działania MT rozstrzygającej przynależność w do języka L 1. Dla każdego symbolu a na taśmie 1 zapisz symbol a na taśmie 2 2. Dla każdego symbolu b na taśmie 1 sprawdzaj czy na taśmie 2 jest odpowiadający mu symbol a 3. Jeżeli na taśmie 1 skończyły się symbole b, a na taśmie 2 odpowiadające im symbole a to zaakceptuj, w przeciwnym razie odrzuć Rozwiązanie (fragment Maszyny Turinga z prawie wszystkimi ruchami głowicy) M=({q 0,q 1, },{a,b},{a,b,b},,q 0,B,{ }) Analiza złożoności obliczeniowej: w kroku 1 MT przechodzi przez taśmę w k ruchach (k jest ilością symboli a) w kroku 2 MT przechodzi przez taśmę w k+1 ruchach Złożoność pesymistyczna wynosi: W(n) = k+k+1 = n+1 Złożoność oczekiwana: A(n) = O(n), LTime(n) d) A teraz dowolny język programowania - Algorytm 4 Opis działania algorytmu rozstrzygającego przynależność w do języka L 1. Przeglądaj tablicę zliczając najpierw symbole a, potem symbole b 2. Porównaj oba liczniki, jeżeli zawierają taką samą wartość to zaakceptuj, w przeciwnym razie odrzuć Analiza złożoności obliczeniowej: Instrukcją podstawową jest inkrementacja licznika. Złożoność pesymistyczna wynosi: Złożoność oczekiwana: W(n) = n A(n) = O(n), LTime(n)