Maszyna Turinga języki

Podobne dokumenty
Hierarchia Chomsky ego Maszyna Turinga

Języki, automaty i obliczenia

Obliczenia inspirowane Naturą

Matematyczne Podstawy Informatyki

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

Języki, automaty i obliczenia

Języki, automaty i obliczenia

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

Języki formalne i automaty Ćwiczenia 9

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}

Hierarchia Chomsky ego

Obliczenia inspirowane Naturą

Imię, nazwisko, nr indeksu

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

PROBLEMY NIEROZSTRZYGALNE

Języki i operacje na językach. Teoria automatów i języków formalnych. Definicja języka

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

Efektywność Procedur Obliczeniowych. wykład 5

Języki formalne i automaty Ćwiczenia 7

Maszyna Turinga (Algorytmy Część III)

Maszyna Turinga, ang. Turing Machine (TM)

ZLOŻONOŚĆ OBLICZENIOWA - WYK. 2

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

10110 =

Elementy Teorii Obliczeń

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

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

Turing i jego maszyny

Symbol, alfabet, łańcuch

2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego

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

Klasyczne i kwantowe podejście do teorii automatów i języków formalnych p.1/33

Rozwiązania około dwustu łatwych zadań z języków formalnych i złożoności obliczeniowej i być może jednego chyba trudnego (w trakcie tworzenia)

Teoria obliczeń czyli czego komputery zrobić nie mogą

Wprowadzenie do maszyny Turinga

Jaki język zrozumie automat?

MASZYNA TURINGA UPRASZCZANIE DANYCH

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

Języki, automaty i obliczenia

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

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

R O Z D Z I A Ł V I I I

ZADANIA Z AUTOMATU SKOŃCZONEGO SPRAWOZDANIE NR 4

JAO - Języki, Automaty i Obliczenia - Wykład 2. JAO - Języki, Automaty i Obliczenia - Wykład 2

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Niestandardowe modele obliczeń

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

Parsery LL(1) Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

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

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

Temat: Algorytm kompresji plików metodą Huffmana

TEORETYCZNE PODSTAWY INFORMATYKI

MODELOWANIE RZECZYWISTOŚCI

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

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

Wyrażenia regularne.

(j, k) jeśli k j w przeciwnym przypadku.

1 Automaty niedeterministyczne

Teoretyczne podstawy informatyki

Podstawy Informatyki Maszyna Turinga

O ALGORYTMACH I MASZYNACH TURINGA

Monoidy wolne. alfabetem. słowem długością słowa monoidem wolnym z alfabetem Twierdzenie 1.

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

Definicja: zmiennych zdaniowych spójnikach zdaniowych:

Automat Moore a. Teoria układów logicznych

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

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

Języki formalne i automaty Ćwiczenia 1

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

Matematyczne Podstawy Informatyki

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

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

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

Teoria układów logicznych

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

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

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Języki formalne i automaty Ćwiczenia 2

Maszyny Turinga i problemy nierozstrzygalne. Maszyny Turinga i problemy nierozstrzygalne

Minimalizacja automatów niedeterministycznych na słowach skończonych i nieskończonych

Informatyka. Michał Rad

Teoretyczne podstawy informatyki

Jak należy się spodziewać, mamy. Zauważmy jednak, że nie zachodzi równość

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

1. Maszyna Turinga, gramatyki formalne i ONP

Kombinowanie o nieskończoności. 3. Jak policzyć nieskończone materiały do ćwiczeń

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

Matematyczne Podstawy Informatyki

Zadanie 1. Czy prawdziwa jest następująca implikacja? Jeśli L A jest językiem regularnym, to regularnym językiem jest też. A = (A, Q, q I, F, δ)

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

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

5. Maszyna Turinga. q 1 Q. Konfiguracja: (q,α β) q stan αβ niepusta część taśmy wskazanie położenia głowicy

JAO - Wprowadzenie do Gramatyk bezkontekstowych

Definicja 2. Twierdzenie 1. Definicja 3

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

TEORIA ZŁOŻONOŚCI PROBLEMY I ALGORYTMY OGRANICZENIE DOLNE I GÓRNE PROJEKTOWANIE ALGORYTMÓW I METODY SZTUCZNEJ INTELIGENCJI

Algorytmy i struktury danych. wykład 2

Typy algorytmów losowych. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Języki programowania zasady ich tworzenia

Część wspólna (przekrój) A B składa się z wszystkich elementów, które należą jednocześnie do zbioru A i do zbioru B:

Transkrypt:

Maszyna Turinga języki Teoria automatów i języków formalnych Dr inż. Janusz Majewski Katedra Informatyki

Maszyna Turinga (1) b b b A B C B D A B C b b Q Zależnie od symbolu obserwowanego przez głowicę taśmy oraz stanu sterowania, maszyna Turinga w pojedynczym ruchu: a) zmienia stan, b) nadpisuje symbol w obserwowanej komórce taśmy, zastępując nim symbol uprzednio tam wpisany, c) przesuwa głowicę o jedną komórkę w lewo lub w prawo. Automat pracuje na NIESKOŃCZONEJ taśmie. Przyjmujemy, że cała taśma wypełniona jest symbolami pustymi ( blankami ). W momencie początkowym na środkowej części taśmy zapisane jest badane słowo i głowica ustawiona jest na pierwszym symbolu tego słowa.

Maszyna Turinga (2) b b b A B C B D A B C b b Maszynę Turinga definiujemy jako: A = <Q, q 0, F,, Σ, > A T Q skończony zbiór stanów q 0 stan początkowy F zbiór stanów końcowych skończony zbiór symboli taśmy Σ alfabet wejściowy b Σ symbol pusty (blank) : Q 2 Q {L,R} funkcja przejścia (L w lewo, R w prawo) Q

Maszyna Turinga (3) b b b A B C B D A B C b b Konfiguracja: (q, ) q stan niepusta część taśmy wskazanie położenia głowicy Przykład: Funkcja przejścia: (dla automatu deterministycznego) (q 1,C)=(q 2,D,R) (q 1,AB CABBBA) (q 2,ABD ABBBA) Q

Maszyna Turinga (4) Konfiguracja początkowa: (q 0, ), Σ* Maszyna Turinga A akceptuje język L Σ* gdy: L(A) = {x Σ* ( q F) ( y *) ((q 0, x) A * (q, y ))} przy czym: (q, y ) konfiguracja stopująca Twierdzenie: Klasa języków akceptowalnych przez maszyny Turinga L MT jest tożsama z klasą języków rekurencyjnie przeliczalnych L RP jest to klasa 0 w hierarchii Chomsky ego L MT = L RP

Równoważne wersje maszyny Turinga

Równoważne wersje maszyny Turinga

Przykład maszyny Turinga Q = { q 0, q 1, q 2, q 3, q 4 } F = { q 4 } q 0 = stan początkowy Γ = { 0, 1, X, Y, B } Σ = { 0, 1 } B - blank

Przykład maszyny Turinga

Przykład maszyny Turinga 0 0 0 1 1 1 q 0 X 0 0 1 1 1 q 1 X 0 0 1 1 1 q 1 X 0 0 1 1 1 q 1 X 0 0 Y 1 1 q 2 X 0 0 Y 1 1 q 2 X 0 0 Y 1 1 q 2 X 0 0 Y 1 1 q 0 X X 0 Y 1 1 q 1 X X 0 Y 1 1 q 1 X X 0 Y 1 1 q 1 X X 0 Y Y 1 q 2 X X 0 Y Y 1 q 2 X X 0 Y Y 1 q 2

Przykład maszyny Turinga X X 0 Y Y 1 q 0 X X X Y Y 1 q 1 X X X Y Y 1 q 1 X X X Y Y 1 q 1 X X X Y Y Y q 2 X X X Y Y Y q 2 X X X Y Y Y q 2 X X X Y Y Y q 0 X X X Y Y Y q 3 X X X Y Y Y q 3 X X X Y Y Y B q 3 X X X Y Y Y B B q 4 (akceptacja)

Deterministyczna maszyna Turinga Dla dowolnej niedeterministycznej maszyny Turinga istnieje równoważna jej maszyna deterministyczna. Maszyna deterministyczna będzie naśladować obliczenie maszyny niedeterministycznej, jednak w symulacji należy uniknąć nieskończonego obliczenia. Jeśli maszyna symulująca weszłaby w nieskończone obliczenie, to nie mogłaby sprawdzić innych możliwości obliczeń. Idea symulacji obliczeń maszyny niedeterministycznej wiąże się z przeglądaniem drzewa obliczeń maszyny niedeterministycznej wszerz.

Deterministyczna maszyna Turinga Jeśli w trakcie symulacji maszyna symulująca osiągnie konfigurację końcową akceptująca w maszynie niedeterministycznej, to maszyna symulująca zatrzyma się i zaakceptuje, w przeciwnym przypadku nastąpi przejście do kolejnego obliczenia wynikającego z przeglądania drzewa obliczeń maszyny niedeterministycznej wszerz. Zastąpienie maszyny niedeterministycznej symulującą ją maszyną deterministyczną zostaje okupione wykładniczym wzrostem złożoności obliczeń.

Niedeterministyczna maszyna Turinga

Drzewo obliczeń niedeterministycznej maszyny Turinga

Języki rozpoznawalne i rozstrzygalne w sensie Turinga Maszyna Turinga dla danego wejścia może: o zatrzymać się w stanie akceptującym akceptując wejście, o zatrzymać się w stanie nie będącym stanem akceptującym, czyli odrzucić wejście, o w ogóle nie zatrzymać się (wpaść w nieskończoną pętlę). Język akceptowany (rozpoznawany) przez maszynę Turinga jest zbiorem tych wszystkich słów, dla których maszyna zatrzymuje się w stanie akceptującym. Słowa nie należące do języka mogą zostać odrzucone (maszyna zatrzyma się w stanie nieakceptującym) lub maszyna zapetli się i w ogóle nie zatrzyma się dla takich słów. Takie języki nazywamy także językami rekurencyjnie przeliczalnymi

Języki rozpoznawalne i rozstrzygalne w sensie Turinga Maszyna Turinga dla danego wejścia może: o zatrzymać się w stanie akceptującym akceptując wejście, o zatrzymać się w stanie nie będącym stanem akceptującym, czyli odrzucić wejście, o w ogóle nie zatrzymać się (wpaść w nieskończoną pętlę). Maszyny Turinga, które zawsze się zatrzymują się na każdym wejściu nazywamy maszynami rozstrzygającymi lub maszynami z własnością stopu. Język rozstrzygalny przez maszynę Turinga jest zbiorem tych wszystkich słów, dla których rozstrzygająca maszyna Turinga (maszyna z własnością stopu) zatrzymuje się w stanie akceptującym. Takie języki nazywamy także językami rekurencyjnymi.

Rozstrzygające maszyny Turinga Maszyny Turinga, które zawsze się zatrzymują się na każdym wejściu nazywamy maszynami rozstrzygającymi lub maszynami z własnością stopu. Nie każda maszyna Turinga jest maszyną rozstrzygającą (z własnością stopu). Istnieją maszyny Turinga, które nie są maszynami rozstrzygającymi. Zbiór wszystkich rozstrzygających maszyn Turinga jest więc podzbiorem właściwym zbioru wszystkich maszyn Turinga.

Kodowanie maszyny Turinga Ograniczymy się do maszyn Turinga działających na alfabecie binarnym. Ponumerujemy stany maszyny zgodnie z ich indeksacją Symbolom alfabetu wejściowego {0,1} przypiszemy liczby 1 i 2 Symbolom alfabetu taśmy {0,1,B} przypiszemy liczby 1, 2 i 3 Symbolom kierunku ruchu {L,R} przypiszemy liczby 1 i 2 Poszczególne liczby reprezentujące symbole opisu maszyny Turinga będziemy zapisywać w postaci ciągu jedynek o długości równej wartości liczby (w systemie jedynkowym)

Kodowanie maszyny Turinga Każdy ruch określimy poprzez podanie wartości funkcji przejścia δ(q i, x)=(q k,y,a), którą będziemy kodować jako ciąg zerojedynkowy: 1 i 01 j 01 k 01 l 01 m gdzie: liczby i, j, k, l, m są kodami odpowiednio: stanu q i, symbolu taśmy X, stanu q k, symbolu taśmy Y, kierunku ruchu głowicy A

Kodowanie maszyny Turinga Maszynę Turinga M zakodujemy jako ciąg opisów poszczególnych wartości funkcji przejścia oddzielonych dwoma zerami, natomiast początek i koniec zakodowanego opisu maszyny Turinga oznaczymy potrójnymi zerami: 000 kod-ruchu-1 00 kod-ruchu-2 00 00 kod-ruchu-m 000

Problem Czy istnieją języki, które nie są rozpoznawane (akceptowane) przez żadną maszynę Turinga? Prawdopodobnie tak, bo klasa wszystkich języków jest zbiorem nieprzeliczalnym, natomiast klasa języków akceptowanych przez maszyny Turinga jest przeliczalna (maszyny Turinga można zakodować skończonymi kodami, więc jest ich tylko przeliczalnie wiele).

Język przekątniowy (diagonalizacji) L d = { w i w i nie jest akceptowane przez maszynę Turinga M i } Język przekątniowy jest zbiorem tych słów w i, dla których, jeśli indeksem słowa w porządku standardowym jest liczba i, to maszyna Turinga o numerze i nie akceptuje słowa w.

Język przekątniowy (diagonalizacji) Rozważymy dwustronnie nieskończoną tablicę o wartościach binarnych. Kolumny tej tablicy indeksowane będą kolejnymi liczbami M 1, M 2,, których binarna reprezentacja jest poprawnym kodem maszyny Turinga. Wiersze tabeli będą indeksowane kolejnymi słowami nad alfabetem binarnym ustawionymi w porządku standardowym. Wartością R ij tej tabeli będzie jedynka, gdy maszyna o numerze j będzie akceptować słowo o numerze i. W przeciwnym wypadku wartością R ij będzie zero.

Język przekątniowy

Język przekątniowy

Problem Czy istnieją języki, które są rozpoznawane (akceptowane) przez maszyny Turinga, ale nie są rozstrzygalne? Prawdopodobnie tak, bo klasa maszyn Turinga z własnością stopu (maszyn rozstrzygających) jest podklasą właściwą klasy wszystkich maszyn Turinga

Język uniwersalny L u = { <M,w> maszyna M akceptuje słowo w } Można skonstruować uniwersalną maszynę Turinga M u, która na podstawie kodu maszyny M będzie symulować jej działanie dla słowa w. Wtedy i tylko wtedy, gdy słowo w jest akceptowane przez M, to maszyna symulująca M u się zatrzyma i zaakceptuje wejście <M,w>. Jeśli M nie zatrzymuje się dla w, to M u także się nie zatrzyma. L u jest przykładem języka rozpoznawalnego, ale nie rozstrzygalnego