Języki, automaty i obliczenia/Ćwiczenia 12: Języki kontekstowe i automat liniowo ograniczony. Maszyna Turinga: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
m Zastępowanie tekstu – „ </math>” na „</math>”
m Zastępowanie tekstu – „,↵</math>” na „</math>,”
 
(Nie pokazano 2 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 5: Linia 5:
język palindromów, czyli:
język palindromów, czyli:
<center><math>
<center><math>
L=\left\{w \overleftarrow{w} \ : : \ : w\in \left\{0,1\right\}^*\right\}.
L=\left\{w \overleftarrow{w} \ : : \ : w\in \left\{0,1\right\}^*\right\}</math></center>
</math></center>


Sprawdź, że:
Sprawdź, że:
Linia 131: Linia 130:
Niech będzie dany alfabet <math>\Sigma_I =\left\{0,1,\clubsuit\right\}</math>. Zaprojektuj maszynę Turinga akceptująca język postaci:
Niech będzie dany alfabet <math>\Sigma_I =\left\{0,1,\clubsuit\right\}</math>. Zaprojektuj maszynę Turinga akceptująca język postaci:
<center><math>
<center><math>
L=\left\{u\clubsuit w\ : : \ : u,w\in \left\{0,1\right\}^*\right\}.
L=\left\{u\clubsuit w\ : : \ : u,w\in \left\{0,1\right\}^*\right\}</math></center>
</math></center>


Zaprojektuj maszynę Turinga <math>\mathcal{M}=(\Sigma _{T},S,f,s_{0},S_{F})</math>, która akceptuje język <math>L</math>. Następnie:
Zaprojektuj maszynę Turinga <math>\mathcal{M}=(\Sigma _{T},S,f,s_{0},S_{F})</math>, która akceptuje język <math>L</math>. Następnie:
Linia 222: Linia 220:
W trakcie wykładu rozważaliśmy język
W trakcie wykładu rozważaliśmy język
<center><math>
<center><math>
L=\{3^k\ : : \ : k=i\cdot j\text{ dla pewnych } i,j> 1\},
L=\{3^k\ : : \ : k=i\cdot j\text{ dla pewnych } i,j> 1\}</math>,</center>
</math></center>


wykazując, że <math>L\in</math> '''NP''' .
wykazując, że <math>L\in</math> '''NP''' .
Linia 254: Linia 251:
W oczywisty sposób otrzymujemy, że ilość wymaganych kroków czasowych maszyny jest ograniczona przez wielomian (dla dużych <math>n</math>).
W oczywisty sposób otrzymujemy, że ilość wymaganych kroków czasowych maszyny jest ograniczona przez wielomian (dla dużych <math>n</math>).
Dla małych <math>n</math> możemy zawsze rozbudować maszynę tak, aby akceptowała słowa bez żadnego testowania.
Dla małych <math>n</math> możemy zawsze rozbudować maszynę tak, aby akceptowała słowa bez żadnego testowania.
Zatem <math>L\in </math> '''P''' .
Zatem <math>L\in</math> '''P''' .
</div></div>
</div></div>


Linia 310: Linia 307:
Skonstruuj maszynę Turinga <math>\mathcal{MT}</math> akceptującą język:
Skonstruuj maszynę Turinga <math>\mathcal{MT}</math> akceptującą język:
<center><math>
<center><math>
L_1=\left\{www\ : : \ : w\in \left\{\circ,\bullet,\star\right\}^*\right\}.
L_1=\left\{www\ : : \ : w\in \left\{\circ,\bullet,\star\right\}^*\right\}</math></center>
</math></center>


}}
}}

Aktualna wersja na dzień 21:49, 11 wrz 2023

Ćwiczenia 12

Ćwiczenie 1

Rozważmy maszynę Turinga TM2 z wykładu (Przykład 1.2) akceptującą język palindromów, czyli:

L={ww :: :w{0,1}*}

Sprawdź, że:

  1. 101101L(TM2)

oraz że

  1. 1010101∉L(TM2).
Wskazówka
Rozwiązanie

Ćwiczenie 2

Niech będzie dany alfabet ΣI={0,1,}. Zaprojektuj maszynę Turinga akceptująca język postaci:

L={uw :: :u,w{0,1}*}

Zaprojektuj maszynę Turinga =(ΣT,S,f,s0,SF), która akceptuje język L. Następnie:

  1. Wypisz elementy składowe maszyny , tzn. zbiory ΣT,S,SF oraz funkcję przejścia f (zapewnij, aby s0S).
  2. Wykonaj symulację maszyny na słowie w1=110011,
  3. na słowie w2=01,
  4. oraz na słowie w3=0000110.
Wskazówka
Rozwiązanie

Ćwiczenie 3

W trakcie wykładu rozważaliśmy język

L={3k :: :k=ij dla pewnych i,j>1},

wykazując, że L NP .

Uzasadnij, że także
L P .
Wskazówka
Rozwiązanie

Ćwiczenie 4

Uzasadnij, że funkcja s(n)=3n jest konstruowalna pamięciowo.

Wskazówka
Rozwiązanie

Ćwiczenie 5

Uzasadnij, że funkcja s(n)=3n jest konstruowalna pamięciowo.

Wskazówka
Rozwiązanie
Zadania domowe

Ćwiczenie 6

Skonstruuj maszynę Turinga 𝒯 akceptującą język:

L1={www :: :w{,,}*}

Ćwiczenie 7

Uzasadnij, że język

L2={w1w1w2w2wnwn :: :wi{,}+,n>0}

jest rozpoznawany przez pewną niedeterministyczna maszynę Turinga 𝒩𝒯.

Podpowiedź: wykorzystaj konstrukcję z wyrocznią. Dla słowa wejściowego w przeprowadź weryfikację w trzech etapach: konstrukcja słów w1,,wn, gdzie n<|w| (wyrocznia), sklejanie, weryfikacja, czy w=w1w1w2w2wnwn.