Języki, automaty i obliczenia/Ćwiczenia 12: Języki kontekstowe i automat liniowo ograniczony. Maszyna Turinga: Różnice pomiędzy wersjami
Matiunreal (dyskusja | edycje) Nie podano opisu zmian |
Matiunreal (dyskusja | edycje) Nie podano opisu zmian |
||
Linia 160: | Linia 160: | ||
{| border=1 | {| border=1 | ||
|- | |- | ||
| <math>\displaystyle (s_0,0)\mapsto (s_0,0,1)</math> || <math>\displaystyle (s_0,1)\mapsto (s_0,1,1)</math> || <math>\displaystyle (s_0,\clubsuit)\mapsto (s_1,\clubsuit,1)</math> | | <math>\displaystyle (s_0,0)\mapsto (s_0,0,1)</math> || <math>\displaystyle (s_0,1)\mapsto (s_0,1,1)</math> || <math>\displaystyle (s_0,\clubsuit)\mapsto (s_1,\clubsuit,1)</math> | ||
Linia 243: | Linia 242: | ||
# Taśma nr <math>\displaystyle 1</math> jest tylko do odczytu. Mamy na niej słowo <math>\displaystyle 3^k</math>. | # Taśma nr <math>\displaystyle 1</math> jest tylko do odczytu. Mamy na niej słowo <math>\displaystyle 3^k</math>. | ||
# Rozpocznij od zapisania słowa <math>\displaystyle 11</math> na taśmie nr <math>\displaystyle 2</math> i słowa <math>\displaystyle 22</math> na taśmie nr <math>\displaystyle 3</math> | # Rozpocznij od zapisania słowa <math>\displaystyle 11</math> na taśmie nr <math>\displaystyle 2</math> i słowa <math>\displaystyle 22</math> na taśmie nr <math>\displaystyle 3</math> | ||
# Przepisz słowa na taśmę nr <math>\displaystyle 4</math> według kolejności taśm <math>\displaystyle 2,3,1</math>. | # {{kotwica|prz.3|}}Przepisz słowa na taśmę nr <math>\displaystyle 4</math> według kolejności taśm <math>\displaystyle 2,3,1</math>. | ||
# Sprawdź na taśmie nr <math>\displaystyle 4</math> czy <math>\displaystyle k=i\cdot j</math>. Jeśli tak to akceptuj. Inaczej krok następny. | # Sprawdź na taśmie nr <math>\displaystyle 4</math> czy <math>\displaystyle k=i\cdot j</math>. Jeśli tak to akceptuj. Inaczej krok następny. | ||
# Dopisz symbol <math>\displaystyle 1</math> na taśmie nr <math>\displaystyle 2</math>. Gdy powstało słowo dłuższe niż <math>\displaystyle k</math> dopisz symbol <math>\displaystyle 2</math> na taśmie nr <math>\displaystyle 3</math> a słowo na taśmie nr <math>\displaystyle 2</math> usuń i zapisz na niej słowo <math>\displaystyle 11</math>. | # Dopisz symbol <math>\displaystyle 1</math> na taśmie nr <math>\displaystyle 2</math>. Gdy powstało słowo dłuższe niż <math>\displaystyle k</math> dopisz symbol <math>\displaystyle 2</math> na taśmie nr <math>\displaystyle 3</math> a słowo na taśmie nr <math>\displaystyle 2</math> usuń i zapisz na niej słowo <math>\displaystyle 11</math>. | ||
# Jeśli słowo na taśmie nr <math>\displaystyle 3</math> jest dłuższe niż <math>\displaystyle k</math> to odrzuć. W przeciwnym przypadku przejdź do kroku [[# | # Jeśli słowo na taśmie nr <math>\displaystyle 3</math> jest dłuższe niż <math>\displaystyle k</math> to odrzuć. W przeciwnym przypadku przejdź do kroku [[#prz.3|3]]. | ||
Idea tej maszyny jest bardzo prosta. Wykorzystaj taśmy nr <math>\displaystyle 2</math> (licznik 1) i <math>\displaystyle 3</math> (licznik 2) jako liczniki a na taśmie <math>\displaystyle 4</math> wykonuj symulacje. | Idea tej maszyny jest bardzo prosta. Wykorzystaj taśmy nr <math>\displaystyle 2</math> (licznik 1) i <math>\displaystyle 3</math> (licznik 2) jako liczniki a na taśmie <math>\displaystyle 4</math> wykonuj symulacje. | ||
Linia 296: | Linia 295: | ||
# Jeśli słowo wejściowe jest inne niż <math>\displaystyle 1^n</math> to odrzuć. | # Jeśli słowo wejściowe jest inne niż <math>\displaystyle 1^n</math> to odrzuć. | ||
# Na taśmie <math>\displaystyle I</math> wypisz słowo wejściowe, na taśmach <math>\displaystyle C</math> i <math>\displaystyle S</math> wypisz słowo <math>\displaystyle 1</math>. | # Na taśmie <math>\displaystyle I</math> wypisz słowo wejściowe, na taśmach <math>\displaystyle C</math> i <math>\displaystyle S</math> wypisz słowo <math>\displaystyle 1</math>. | ||
# Wykonaj symulację maszyny <math>\displaystyle \mathcal{M}</math> na taśmie <math>\displaystyle S</math> oraz dopisz symbol <math>\displaystyle 1</math> do taśmy <math>\displaystyle C</math> (po jednym przebiegu ilość symboli na taśmie <math>\displaystyle S</math> wzrasta trzykrotnie) | # {{kotwica|prz.4|}}Wykonaj symulację maszyny <math>\displaystyle \mathcal{M}</math> na taśmie <math>\displaystyle S</math> oraz dopisz symbol <math>\displaystyle 1</math> do taśmy <math>\displaystyle C</math> (po jednym przebiegu ilość symboli na taśmie <math>\displaystyle S</math> wzrasta trzykrotnie) | ||
# Jeśli słowo na taśmie <math>\displaystyle C</math> jest krótsze niż słowo na taśmie <math>\displaystyle I</math> wykonaj ponownie krok | # Jeśli słowo na taśmie <math>\displaystyle C</math> jest krótsze niż słowo na taśmie <math>\displaystyle I</math> wykonaj ponownie krok [[#prz.4|4]]. | ||
# W tym momencie na taśmie <math>\displaystyle S</math> zostało zaznaczone <math>\displaystyle 3^n</math> komórek. | # W tym momencie na taśmie <math>\displaystyle S</math> zostało zaznaczone <math>\displaystyle 3^n</math> komórek. | ||
Zamieniamy wypisane symbole na <math>\displaystyle 1</math> (zapominamy o symulacji taśm), wracamy nad pierwszy symbol (przed lewym markerem) | Zamieniamy wypisane symbole na <math>\displaystyle 1</math> (zapominamy o symulacji taśm), wracamy nad pierwszy symbol (przed lewym markerem) |
Wersja z 10:21, 25 sie 2006
1. ĆWICZENIA 12
Ćwiczenie 1
Rozważmy maszynę Turinga z wykładu (Przykład 1.2) akceptującą język palindromów, czyli:
Sprawdź, że
- oraz, że
- .
Ćwiczenie 2
Niech będzie dany alfabet . Zaprojektuj maszynę Turinga akceptująca język postaci:
Zaprojektuj maszynę Turinga która akceptuje język . Następnie:
- Wypisz elementy składowe maszyny , tzn. zbiory oraz funkcję przejścia (zapewnij aby ).
- Wykonaj symulację maszyny na słowie
- słowie
- oraz słowie .
Ćwiczenie 3
W trakcie wykładu rozważaliśmy język
wykazując, że NP .
Uzasadnij, że takżeĆwiczenie 4
Uzasadnij że funkcja jest konstruowalna pamięciowo.
Ćwiczenie 5
Uzasadnij że funkcja jest konstruowalna pamięciowo.
2. Zadania domowe
Ćwiczenie 1
Skonstruuj maszynę Turinga akceptującą język:
Ćwiczenie 2
Uzasadnij, że język
jest rozpoznawany przez pewną niedeterministyczna maszynę Turinga .
Podpowiedź: wykorzystaj konstrukcję z wyrocznią. Dla słowa wejściowego przeprowadź weryfikację w trzech etapach: konstrukcja słów gdzie (wyrocznia), sklejanie, weryfikacja czy .