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

Podobne dokumenty
Matematyczna wieża Babel. 3. Gramatyki o językach bezkontekstowych materiały do ćwiczeń

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

Języki formalne i automaty Ćwiczenia 1

Hierarchia Chomsky ego

Matematyczne Podstawy Informatyki

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

Języki formalne i automaty Ćwiczenia 9

Języki formalne i automaty Ćwiczenia 7

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}

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, δ)

Hierarchia Chomsky ego Maszyna Turinga

JAO - Wprowadzenie do Gramatyk bezkontekstowych

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

Imię, nazwisko, nr indeksu

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:

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

Jaki język zrozumie automat?

Języki formalne i automaty Ćwiczenia 3

Symbol, alfabet, łańcuch

Maszyna Turinga języki

MODELOWANIE RZECZYWISTOŚCI

Języki formalne i automaty Ćwiczenia 2

Turing i jego maszyny

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)

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

2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego

Języki, automaty i obliczenia

Definicja 2. Twierdzenie 1. Definicja 3

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

Języki formalne i automaty Ćwiczenia 4

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

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

Elementy Teorii Obliczeń

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

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

Matematyczne Podstawy Informatyki

Wprowadzenie do maszyny Turinga

1 Automaty niedeterministyczne

Języki, automaty i obliczenia

Algorytmy stochastyczne, wykład 05 Systemy Liendenmayera, modelowanie roślin

WYRAŻENIA ALGEBRAICZNE

Matematyczny świat języków. Wprowadzenie i języki regularne materiały do ćwiczeń

Wprowadzenie do programowania języki i gramatyki formalne. dr hab. inż. Mikołaj Morzy

Efektywna analiza składniowa GBK

Matematyczna wieża Babel. 6. Nieskończoność i myślaki materiały do ćwiczeń

Teoria układów logicznych

Zamiana ułamków na procenty oraz procentów na ułamki

Obliczenia inspirowane Naturą

Maszyna Turinga (Algorytmy Część III)

Definiowanie języka przez wyrażenie regularne(wr)

Indukcja matematyczna

Języki i gramatyki formalne

A i. i=1. i=1. i=1. i=1. W dalszej części skryptu będziemy mieli najczęściej do czynienia z miarami określonymi na rodzinach, które są σ - algebrami.

W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora.

Zajęcia nr. 3 notatki

JAO - lematy o pompowaniu dla jezykow bezkontekstowy

W. Guzicki Zadanie 41 z Informatora Maturalnego poziom podstawowy 1

Języki, automaty i obliczenia

1. Wykład NWD, NWW i algorytm Euklidesa.

JĘZYKI FORMALNE I METODY KOMPILACJI

Celem ćwiczenia jest zapoznanie się z podstawowymi możliwościami języka Prolog w zakresie definiowania faktów i reguł oraz wykonywania zapytań.

Języki formalne i automaty Ćwiczenia 5

Języki formalne i automaty Ćwiczenia 6

3.4. Przekształcenia gramatyk bezkontekstowych

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

Efektywność Procedur Obliczeniowych. wykład 5

Metody Kompilacji Wykład 3

Wprowadzenie do analizy składniowej. Bartosz Bogacki.

10110 =

Automat Moore a. Teoria układów logicznych

Jarosław Wróblewski Analiza Matematyczna 1A, zima 2012/13

7. Pętle for. Przykłady

Języki, automaty i obliczenia

ZADANIA Z AUTOMATU SKOŃCZONEGO SPRAWOZDANIE NR 4

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

RACHUNEK ZDAŃ 7. Dla każdej tautologii w formie implikacji, której poprzednik również jest tautologią, następnik także jest tautologią.

R O Z D Z I A Ł V I I

LXI Olimpiada Matematyczna

Podstawą w systemie dwójkowym jest liczba 2 a w systemie dziesiętnym liczba 10.

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

GRAMATYKI BEZKONTEKSTOWE

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Matematyka Dyskretna Zestaw 2

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

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykład 9. Koniunkcyjne postacie normalne i rezolucja w KRZ

zaznaczymy na osi liczbowej w ten sposób:

LX Olimpiada Matematyczna

Jȩzyki, automaty, zlożoność obliczeniowa

Maszyna Turinga, ang. Turing Machine (TM)

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

FUNKCJE. (odwzorowania) Funkcje 1

JĘZYKIFORMALNE IMETODYKOMPILACJI

W. Guzicki Próbna matura, grudzień 2014 r. poziom rozszerzony 1

Odwrotna Notacja Polska

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

MASZYNA TURINGA UPRASZCZANIE DANYCH

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

1. Maszyna Turinga, gramatyki formalne i ONP

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

Transkrypt:

Matematyczna wieża Babel. 4. Ograniczone maszyny Turinga o językach kontekstowych materiały do ćwiczeń Projekt Matematyka dla ciekawych świata spisał: Michał Korch 4 kwietnia 2019 1 Dodajmy kontekst! Rozważaliśmy ostatnio gramatyki bezkontekstowe, które zawierały reguły w stylu: A aab Oznaczało to, że zawsze, gdy wystąpi symbol A, możemy go zamienić na aab. Wzbogaćmy naszą gramatykę w taki sposób, żeby móc opisywać kiedy można zastosować daną regułę. Nasze nowe reguły będą zawierały dodatkową rzecz, czyli kontekst. Na przykład: aaa aaaba Ta reguła oznacza, że owszem symbol A można zamienić na aab, ale tylko jeśli stoi pomiędzy dwoma literami a. Z przyczyn technicznych wprowadźmy jeszcze dwa ograniczenia: reguła w stylu S może wystąpić tylko w przypadku symbolu początkowego oraz symbolu początkowego nie wolno generować żadną regułą. Rozważmy teraz następującą gramatykę: S T T at BC abc CB P B P B P C P C BC bb bb bc bc cc cc W tej gramatyce można wygenerować na przykład słowo aabbcc. W następujący sposób: S T at BC aabcbc aabp BC aabp CC aabbcc aabbcc aabbcc aabbcc Zaznaczone są fragmenty słowa odpowiadające stosowanym regułom. 1

Zadanie 1 Pokażcie, jak w tej gramatyce wygenerować słowo aaaabbbbcccc. Zadanie 2 Oczywiście ta gramatyka opisuje język słów w których kolejno występują najpierw a, potem b, a na końcu c i liczba każdej z tych liter jest taka sama. Dlaczego tak jest? Zauważ też, że blok CB P B P B P C P C BC sprowadza się do zamienienia miejscami symbolu B i C. Od tej pory zatem dla dwóch symboli roboczych X i Y, dla uproszczenia będziemy po prostu dopuszczać regułę Zadanie 3 XY Y X. Zmodyfikujcie powyższą gramatykę w taki sposób, aby rozpoznawała język słów, w których występują najpierw a, potem b, a na końcu c oraz liczba liter b jest sumą liczby liter a i c. Zadanie 4 Skonstruujcie gramatykę kontekstową generującą język wszystkich słów nad alfabetem {a, b} postaci wvw, gdzie w jest pewnym słowem, a v jest słowem w napisanym od końca. 2 Gramatyki rosnące Jest jeszcze jeden typ gramatyki, z jeszcze mniejszą liczbą ograniczeń. Są to gramatyki rosnące. Najważniejsza zasada jest po prostu taka, że w każdej regule przed strzałką jest nie więcej symboli i liter niż za strzałką. Jedynym dopuszczalnym wyjątkiem jest reguła S, z tym że symbolu S nie wolno generować. Oto przykład gramatyki rosnącej Zadanie 5 S abc at Bc T at Bc abc cb Bc bb bb Pokażcie przykłady trzech słów, które można wygenerować przy pomocy tej gramatyki. 2

Zadanie 6 Zaprojektujcie gramatykę rosnącą, która generuje język wszystkich słów nad alfabetem a, które są długości będącej potęgą 2. Wskazówka: Wskazówki do tego zadania umieszczamy na końcu skryptu! Okazuje się, że dla każdej gramatyki rosnącej można stworzyć gramatykę kontekstową, która jest równoważna! Zadanie 7 Zastanówcie się jak to zrobić i napiszcie gramatykę kontekstową, która jest równoważna gramatyce napisanej na początku tego rozdziału. Zadanie 8 Spróbujcie zrobić to samo z gramatyką wymyśloną w zadaniu 6. Wskazówka: Wskazówki do tego zadania umieszczamy na końcu skryptu! Ograniczone maszyny Turinga Okazuje się, że wszystko, co można wygenerować za pomocą gramatyki kontekstowej, można też rozpoznać za pomocą dość złożonego automatu nazywanego (ograniczoną) maszyną Turinga. Maszyna Turinga, podobnie jak automat, ma pewną skończoną liczbę stanów oraz przejścia pomiędzy nimi. Ma też (podobnie jak automat ze stosem) pamięć, ale tym razem nie będzie to stos, a taśma. Nie jest więc tak, że można odczytać tylko najświeższy zapisany symbol (tak było ze stosem). Po prostu będziemy sobie wyobrażać, że maszyna Turinga ma głowicę, która wskazuje pewne pole na taśmie. Głowica ta może przesuwać się w prawo lub w lewo. Nie będzie nam potrzebne w rozważaniach osobne słowo, które maszyna ma zaakceptować lub odrzucić, po prostu uznajmy, że jest ono zapisane na taśmie. Umówmy się też, że przed i za tym słowem na taśmie stoją symbole # (żeby można było łatwo sprawdzić, że słowo się skończyło). Przymiotnik ograniczony w nazwie ograniczona maszyna Turinga, oznacza, że taśma jest ograniczona powiedzmy, że po prostu się kończy przed początkowym znakiem # i za końcowym #. W przyszłości będziemy rozważać maszyny Turinga, których taśmy są nieograniczone (a więc, które mają nieograniczenie wiele miejsca na dodatkowe robocze notatki ). Przejścia pomiędzy stanami będą więc opisane na przykład tak: a < b co oznacza, że maszyna może wykonać dane przejście, o ile na taśmie (w miejscu głowicy) widzi literę a. Zapisuje wtedy na to miejsce literę b i przesuwa głowicę o jeden w lewo. Przejście opisane jako c > c może być wykonane tylko jeśli na taśmie w miejscu głowicy jest symbol c. Maszyna wykonując to przejście pozostawia c na taśmie i przesuwa głowicę o jeden w prawo. Zatem to jest przykład maszyny Turinga. 3

Prześledźmy działanie tej maszyny dla słowa aa. To oznacza, że początkowy stan taśmy to #āa# (kreską na górze będziemy oznaczać, gdzie jest głowica). Działanie maszyny przebiega tak: 1. Stan P, przejście a > X do stanu A, więc na taśmie mamy #Xā#. 2. Stan A, przejście a > a do stanu A, więc na taśmie mamy #Xa #. 3. Stan A, przejście # < # do stanu KA, więc na taśmie mamy #Xā#. 4. Stan KA, przejście a < X do stanu OK, więc na taśmie mamy # XX#. 5. Stan OK, przejście X > X do stanu P, więc na taśmie mamy #X X#. 6. Stan P, przejście X < X do stanu K i zaakceptowanie. Zadanie 9 Prześledźcie działanie tej maszyny Turinga krok po kroku dla słów bab, ab oraz abaaba. Które z nich zostaną zaakceptowane? Zadanie 10 Jaki język akceptuje ta maszyna Turinga? Dlaczego? Zadanie 11 Zmodyfikujcie rozpatrywaną maszynę Turinga tak, aby akceptowała tylko te słowa, które są akceptowane przez oryginalną maszynę oraz mają parzystą liczbę liter a. 4

Zadanie 12 Stwórzcie ograniczoną maszynę Turinga, która akceptuje język nad alfabetem {a, b} złożony ze słów jąkających się, czyli postaci ww, gdzie w jest dowolnym niepustym słowem. Wskazówka: Wskazówka do tego zadania znajduje się na końcu skryptu. 3 Zadania dodatkowe Zadanie 13 Rozważcie gramatykę S aa bb ay T bzt T AY T BZT Aa Bb Y A AY Y B BY ZA AZ ZB BZ aa aa ab ab ba ba bb bb Y a aa Y b ab Za ba Zb bb W jaki sposób w tej gramatyce wygenerować słowo aabaaaba? Zadanie 14 Powyższa gramatyka generuje wszystkie słowa będące konkatenacją dwóch takich samych słów. Przeróbcie ją w taki sposób, żeby generowała słowa będące konkatenacją trzech takich samych słów. Wskazówka: Bądźcie bardzo ostrożni przy ostatecznym zamienianiu symboli roboczych na litery. Musicie nie dopuścić do tego, żeby mogły się zamienić zanim ustawią się w dobrej kolejności! Zadanie 15 Sprawdźcie, że wymyślona wyżej gramatyka rzeczywiście działa. To znaczy, że nie uda się wygenerować słowa nie spełniającego założonych warunków. 5

Zadanie 16 Wymyślcie i opiszcie ogólną procedurę pozwalającą zamienić dowolną gramatykę rosnącą na gramatykę bezkontekstową. Zadanie 17 Prześledźcie działanie maszyny Turinga skonstruowanej w zadaniu 12 dla słów aa, aba oraz abab. Zadanie 18 Udowodnijcie, że jeśli istnieje maszyna Turinga, która zawsze kończy działanie i akceptuje pewien język L nad alfabetem A, to również istnieje maszyna Turinga, która akceptuje język nad alfabetem A złożony ze wszystkich słów, które nie są w L. 4 Zadania domowe Zadanie 19 (1 punkt) Przekształć gramatykę, z pierwszej strony tego skryptu w taki sposób, aby generowała słowa, w których litery a i b mogą być dowolnie wymieszane, ale występują przed blokiem wszystkich liter c oraz liter a jest tyle samo co liter b oraz tyle samo, co liter c. Następnie przedstaw jak w tej gramatyce wygenerować słowo abbacc. Zadanie 20 (2 punkty) Znajdź gramatykę rosnącą która generuje język wszystkich słów nad alfabetem {a} które mają długość 2 i 3 j dla pewnych i, j N. Wskazówka: Dobrym punktem wyjścia jest gramatyka stworzona w zadaniu 6. Zadanie 21 (3 punkty) Skonstruuj maszynę Turinga, która akceptuje język słów postaci a... a długości będącej liczbą pierwszą. Wskazówki Zadanie 6 Wskazówka: Użyjcie specjalnych symboli na oznaczenie początku i końca słowa, a następnie zróbcie parę symboli, które będą podróżować pomiędzy nimi w tę i z powrotem (jeden idzie w prawo, zmienia się na drugi i wraca i znów zamienia się w ten pierwszy), i idąc w prawo podwaja każdą literę. Trzeba jeszcze odpowiednio dopracować zakończenie tej procedury. 6

Zadanie 8 Wskazówka: Problematyczne są: oraz XK ZAAA P Z AAA Trzeba je rozbić na kilka prostszych kontekstowych przejść z użyciem dodatkowych specjalnie wprowadzonych symboli. Zadanie 12 Wskazówka: Najpierw znajdźcie środek słowa zapisanego na taśmie i oznaczcie go specjalnym symbolem (np. X lub Y w zależności od tego, czy to litera a, czy b). Środek ten natomiast możecie znaleźć stosując nieco modyfikowaną procedurę w porównaniu z tą, którą zastosowaliśmy w palindromach. 7