Języki, automaty i obliczenia/Ćwiczenia 12: Języki kontekstowe i automat liniowo ograniczony. Maszyna Turinga: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
{ | {Języki kontekstowe i automat liniowo ograniczony. Maszyna Turinga} | ||
==ĆWICZENIA | ==ĆWICZENIA 12== | ||
{{cwiczenie||| | |||
Rozważmy maszynę Turinga <math>\displaystyle TM_2</math> z wykładu (Przykład 1.2) akceptującą | |||
język palindromów, czyli: | |||
<center><math>\displaystyle | |||
L=\left\{w \overleftarrow{w} \: : \: w\in \left\{0,1\right\}^*\right\} | |||
</math></center> | |||
Sprawdź, że | |||
# <math>\displaystyle 101101\in L(TM_2)</math> oraz, że | |||
# <math>\displaystyle 1010101\not\in L(TM_2)</math>. | |||
}} | |||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | |||
Aby wykonać (1) rozpocznij od konfiguracji <math>\displaystyle \sharp \: s_0 1 \: 01101 | |||
\sharp</math> a następnie wykonuj przejścia zgodnie z diagramem przejść | |||
maszyny <math>\displaystyle TM_2</math> z wykładu. | |||
</div></div> | |||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"> | |||
'''(Ad. 1)''' Wykonujemy symulację maszyny <math>\displaystyle TM_2</math> na pierwszym ze | |||
słów: | |||
<center><math>\displaystyle | |||
\begin{array} {c c c c c c c c} | |||
&\sharp \:s_0 1\: 01101 \sharp & \mapsto & \sharp \sharp \: r_1 0\: | |||
1101 \sharp &\mapsto & \sharp \sharp 0 \: r_1' 1\: 101 \sharp | |||
&\mapsto & \sharp \sharp 01 \: r_1' 1\: 01 \sharp | |||
\\ | |||
\mapsto & \sharp \sharp 011 \: r_1' 0\: 1 \sharp & \mapsto & \sharp | |||
\sharp 0110 \: r_1' 1 \: \sharp &\mapsto & \sharp \sharp 0110 1 \: | |||
r_1' \sharp &\mapsto & \sharp 0110 | |||
\: q_1 1\: \sharp | |||
\\ | |||
\mapsto & \sharp \sharp 011 \: l 0\: \sharp \sharp & \mapsto & | |||
\sharp \sharp 01 \: l 1\: 0 \sharp \sharp &\mapsto & \sharp \sharp 0 | |||
\: l 1\: 10 \sharp \sharp &\mapsto & \sharp \sharp \: l 0\: 110 | |||
\sharp \sharp | |||
\\ | |||
\mapsto & \sharp \: l \sharp\: 0110 \sharp \sharp & \mapsto & | |||
\sharp\sharp \: s_0 0\: 110 \sharp\sharp &\mapsto & | |||
\sharp\sharp\sharp \: r_0 1\: 10 \sharp\sharp &\mapsto & | |||
\sharp\sharp\sharp 1 \: r_0' 1\: 0 \sharp\sharp | |||
\\ | |||
\mapsto & \sharp\sharp\sharp 11 \: r_0' 0\: \sharp\sharp & \mapsto | |||
& \sharp\sharp\sharp 110 \: r_0' \sharp\: \sharp &\mapsto & | |||
\sharp\sharp\sharp 11 \: q_0 0\: \sharp\sharp &\mapsto & | |||
\sharp\sharp\sharp 1 \: l 1\: \sharp\sharp\sharp | |||
\\ | |||
\mapsto & \sharp\sharp\sharp \: l 1\: 1\sharp\sharp\sharp & \mapsto | |||
& \sharp\sharp \: l \sharp \: 1 1\sharp\sharp\sharp &\mapsto & | |||
\sharp\sharp\sharp \: s_0 1\: 1\sharp\sharp\sharp &\mapsto & | |||
\sharp\sharp\sharp\sharp \: r_1 1\: \sharp\sharp\sharp | |||
\\ | |||
\mapsto & \sharp\sharp\sharp\sharp 1 \: r_1' \sharp\: \sharp\sharp & | |||
\mapsto & \sharp\sharp\sharp\sharp \: q_1 1\: \sharp\sharp\sharp | |||
&\mapsto & \sharp\sharp\sharp \: l \sharp \: | |||
\sharp\sharp\sharp\sharp &\mapsto & \sharp\sharp\sharp\sharp \: s_0 | |||
\sharp\: \sharp\sharp\sharp | |||
\\ | |||
\mapsto & \sharp\sharp\sharp\sharp \: s_A \sharp\: | |||
\sharp\sharp\sharp & \circlearrowleft& | |||
\end{array} | |||
</math></center> | |||
Wykazaliśmy, że <math>\displaystyle \sharp \:s_0 1\: 01101 \sharp \mapsto^* | |||
\sharp\sharp\sharp\sharp \: s_A \sharp\: \sharp\sharp\sharp</math>. Stan | |||
<math>\displaystyle s_A\in S_F</math> zatem wprost z definicji <math>\displaystyle 101101\in L(TM_2)</math>. | |||
'''(Ad. 2)''' Wykonujemy identyczną symulację na drugim ze słów: | |||
<center><math>\displaystyle | |||
\begin{array} {c c c c c c c c c} | |||
&\sharp \:s_0 1\: 010101 \sharp & \mapsto & \sharp \sharp \: r_1 | |||
0\: 10101 \sharp &\mapsto & \sharp \sharp 0 \: r_1' 1\: 0101 \sharp | |||
&\mapsto & \sharp \sharp 01 \: r_1' 0\: 101 \sharp | |||
&\\ | |||
\mapsto & \sharp \sharp 010 \: r_1' 1\: 01 \sharp & \mapsto & | |||
\sharp \sharp 0101 \: r_1' 0\: 1 \sharp & \mapsto & \sharp \sharp | |||
01010 \: r_1' 1 \: \sharp &\mapsto & \sharp \sharp 01010 1 \: r_1' | |||
\sharp | |||
&\\ | |||
\mapsto & \sharp 01010 \: q_1 1\: \sharp& \mapsto & \sharp \sharp | |||
0101 \: l 0\: \sharp \sharp & \mapsto & \sharp \sharp 010 \: l 1\: 0 | |||
\sharp \sharp &\mapsto & \sharp \sharp 0 1\: l 0\: 10 \sharp | |||
\sharp | |||
&\\ | |||
\mapsto & \sharp \sharp 0 \: l 1\: 010 \sharp \sharp& \mapsto & | |||
\sharp \sharp \: l 0\: 1010 \sharp \sharp& \mapsto & \sharp \: l | |||
\sharp\: 01010 \sharp \sharp & \mapsto & \sharp\sharp \: s_0 0\: 1010 | |||
\sharp\sharp | |||
&\\ | |||
\mapsto & \sharp\sharp\sharp \: r_0 1\: 010 \sharp\sharp & \mapsto & | |||
\sharp\sharp\sharp 1 \: r_0' 0\: 10 \sharp\sharp & \mapsto & | |||
\sharp\sharp\sharp 10 \: r_0' 1\: 0 \sharp\sharp & \mapsto & | |||
\sharp\sharp\sharp 101 \: r_0' 0\: \sharp\sharp | |||
&\\ | |||
\mapsto & | |||
\sharp\sharp\sharp 1010 \: r_0' \sharp\: \sharp & | |||
\mapsto & \sharp\sharp\sharp 101 \: q_0 0\: \sharp\sharp & \mapsto & | |||
\sharp\sharp\sharp 10 \: l 1\: \sharp\sharp\sharp & \mapsto & | |||
\sharp\sharp\sharp \: 1 l 0\: 1\sharp\sharp\sharp | |||
&\\ | |||
\mapsto & | |||
\sharp\sharp\sharp \: l 1\: 01\sharp\sharp\sharp & | |||
\mapsto & \sharp\sharp \: l \sharp \: 101\sharp\sharp\sharp & | |||
\mapsto & \sharp\sharp\sharp \: s_0 1\: 01\sharp\sharp\sharp & | |||
\mapsto & \sharp\sharp\sharp\sharp \: r_1 0\: 1 \sharp\sharp\sharp | |||
&\\ | |||
\mapsto & \sharp\sharp\sharp\sharp 0 \: r_1 1\: \sharp\sharp\sharp & | |||
\mapsto & \sharp\sharp\sharp\sharp 01 \: r_1' \sharp\: \sharp\sharp & | |||
\mapsto & \sharp\sharp\sharp\sharp 0\: q_1 1\: \sharp\sharp\sharp & | |||
\mapsto & \sharp\sharp\sharp\sharp \: l 0\: \sharp \sharp\sharp\sharp | |||
&\\ | |||
\mapsto & \sharp\sharp\sharp \: l \sharp \: 0 \sharp\sharp\sharp\sharp & | |||
\mapsto & \sharp\sharp\sharp\sharp \: s_0 0 \: \sharp | |||
\sharp\sharp\sharp & | |||
\mapsto & \sharp\sharp\sharp\sharp \sharp \: r_0 \sharp \: \sharp\sharp\sharp & \mapsto& | |||
\sharp\sharp\sharp\sharp \sharp \: s_R \sharp \: \sharp\sharp\sharp& \circlearrowleft\\ | |||
\end{array} | |||
</math></center> | |||
Na ostatniej otrzymanej konfiguracji maszyna się zatrzymuje (następne konfiguracje są identyczne). | |||
Zatem konfiguracja początkowa <math>\displaystyle \sharp \:s_0 1\: 010101 \sharp</math> prowadzić może poprzez relację <math>\displaystyle \mapsto^*</math> tylko do | |||
konfiguracji (obliczeń wykonanych) wypisanych powyżej. Żadna z otrzymanych konfiguracji pośrednich | |||
nie zawiera stanu ze zbioru <math>\displaystyle S_F</math>. To z kolei oznacza, że <math>\displaystyle 1010101\not\in L(TM_2)</math>. | |||
</div></div> | |||
{{cwiczenie||| | |||
Niech będzie dany alfabet <math>\displaystyle \Sigma_I =\left\{0,1,\clubsuit\right\}</math>. Zaprojektuj maszynę Turinga akceptująca język postaci: | |||
<center><math>\displaystyle | |||
L=\left\{u\clubsuit w\: : \: u,w\in \left\{0,1\right\}^*\right\} | |||
</math></center> | |||
Zaprojektuj maszynę Turinga <math>\displaystyle \mathcal{M}=(\Sigma _{T},S,f,s_{0},S_{F})</math> która akceptuje język <math>\displaystyle L</math>. Następnie: | |||
# Wypisz elementy składowe maszyny <math>\displaystyle \mathcal{M}</math>, tzn. zbiory <math>\displaystyle \Sigma_T,S,S_{F}</math> oraz funkcję przejścia <math>\displaystyle f</math> | |||
(zapewnij aby <math>\displaystyle s_0\in S</math>). | |||
# Wykonaj symulację maszyny <math>\displaystyle \mathcal{M}</math> na słowie <math>\displaystyle w_1=1100\clubsuit 11</math> | |||
# słowie <math>\displaystyle w_2=\clubsuit 01 \clubsuit</math> | |||
# oraz słowie <math>\displaystyle w_3=0000110</math>. | |||
}} | |||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | |||
Projektowana maszyna może działać według schematu: | |||
# Przejdź słowo wejściowe od lewego do prawego ogranicznika. | |||
# Jeśli napotkasz symbol <math>\displaystyle \clubsuit</math> oznacz to w stanach maszyny. | |||
# Jeśli napotkasz symbol <math>\displaystyle \clubsuit</math> ponownie to odrzuć. | |||
# Gdy dotarłeś do prawego ogranicznika i nie napotkałeś <math>\displaystyle \clubsuit</math> to odrzuć, w przeciwnym przypadku akceptuj. | |||
</div></div> | |||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"> | |||
'''(Ad. 1)''' Wypiszemy maszynę <math>\displaystyle \mathcal{M}=(\Sigma _{T},S,f,s_{0},S_{F})</math> działającą według zaproponowanego we wskazówce schematu. | |||
Zbiór <math>\displaystyle \Sigma_I</math> oraz stan początkowy <math>\displaystyle s_0</math> zostały narzucone treścią zadania. Oznaczamy kolejno | |||
<center><math>\displaystyle | |||
\Sigma_T=\left\{0,1,\clubsuit,\sharp\right\}\quad,\quad S=\left\{s_0,s_1,s_R,s_A\right\}\quad,\quad S_F=\left\{s_A\right\} | |||
</math></center> | |||
oraz definiujemy funkcję przejścia według tabeli: | |||
{| border=1 | |||
|+ <span style="font-variant:small-caps">Uzupelnij tytul</span> | |||
|- | |||
| | |||
<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,\sharp)\mapsto (s_R,\sharp,0)</math> | |||
|- | |||
| | |||
<math>\displaystyle (s_1,0)\mapsto (s_1,0,1)</math> || <math>\displaystyle (s_1,1)\mapsto (s_1,1,1)</math> || <math>\displaystyle (s_1,\clubsuit)\mapsto (s_R,\clubsuit,0)</math> || | |||
<math>\displaystyle (s_1,\sharp)\mapsto (s_A,\sharp,0)</math> | |||
|- | |||
| | |||
|| || <math>\displaystyle (s_R,\clubsuit)\mapsto (s_R,\clubsuit,0)</math> || <math>\displaystyle (s_R,\sharp)\mapsto (s_R,\sharp,0)</math> | |||
|- | |||
| | |||
|| || || <math>\displaystyle (s_A,\sharp)\mapsto (s_A,\sharp,0)</math> | |||
|- | |||
| | |||
|} | |||
Wykonujemy kolejno symulację maszyny Turinga <math>\displaystyle \mathcal{M}</math> na słowach:<br> | |||
'''(Ad. 2)''' <math>\displaystyle w_1=1100\clubsuit 11</math><br> | |||
<center><math>\displaystyle | |||
\begin{array} {c c c c c c c c} | |||
&\sharp s_0 1100\clubsuit 11\sharp & \mapsto & \sharp 1 s_0 100\clubsuit 11\sharp &\mapsto & | |||
\sharp 11 s_0 00\clubsuit 11\sharp &\mapsto & \sharp 110 s_0 0\clubsuit 11\sharp | |||
\\ | |||
\mapsto & \sharp 1100 s_0 \clubsuit 11\sharp & \mapsto & \sharp 1100\clubsuit s_1 11\sharp &\mapsto & | |||
\sharp 1100\clubsuit 1 s_1 1\sharp &\mapsto & \sharp 1100\clubsuit 11 s_1 \sharp | |||
\\ | |||
\mapsto & \sharp 1100\clubsuit 11 s_A \sharp & \circlearrowleft | |||
\end{array} | |||
</math></center> | |||
Konfiguracja końcowa jest akceptująca, zatem rzeczywiście <math>\displaystyle w_1\in L(\mathcal{M})</math>. | |||
<br> | |||
'''(Ad. 3)''' <math>\displaystyle w_2=\clubsuit 01 \clubsuit</math><br> | |||
<center><math>\displaystyle | |||
\begin{array} {c c c c c c c c} | |||
& \sharp s_0 \clubsuit 01 \clubsuit \sharp & \mapsto & \sharp\clubsuit s_1 01 \clubsuit\sharp &\mapsto & | |||
\sharp\clubsuit 0 s_1 1 \clubsuit\sharp &\mapsto & \sharp\clubsuit 01 s_1 \clubsuit\sharp | |||
\\ | |||
\mapsto & \sharp\clubsuit 01 s_R \clubsuit\sharp & \circlearrowleft | |||
\end{array} | |||
</math></center> | |||
Żadna z otrzymanych konfiguracji nie była akceptująca, zatem <math>\displaystyle w_2\not\in L(\mathcal{M})</math>. | |||
<br> | |||
'''(Ad. 4)''' <math>\displaystyle w_3=0000110</math><br> | |||
<center><math>\displaystyle | |||
\begin{array} {c c c c c c c c} | |||
& \sharp s_0 0000110 \sharp & \mapsto & \sharp 0 s_0 000110 \sharp &\mapsto & \sharp 00 s_0 00110 \sharp &\mapsto & | |||
\sharp 000 s_0 0110 \sharp | |||
\\ | |||
\mapsto & \sharp 0000 s_0 110 \sharp & \mapsto & \sharp 00001 s_0 10 \sharp &\mapsto & \sharp 000011 s_0 0 \sharp &\mapsto & | |||
\sharp 0000110 s_0 \sharp | |||
\\ | |||
\mapsto & \sharp 0000110 s_R \sharp & \circlearrowleft | |||
\end{array} | |||
</math></center> | |||
Tak jak w poprzednim przypadku <math>\displaystyle w_3\not\in L(\mathcal{M})</math>. | |||
</div></div> | |||
{{cwiczenie||| | {{cwiczenie||| | ||
Linia 80: | Linia 306: | ||
Wykorzystujemy trzy taśmy (<math>\displaystyle I</math>, <math>\displaystyle C</math>, <math>\displaystyle S</math>) oraz maszynę <math>\displaystyle \mathcal{M}</math> konstruującą pamięciowo funkcję <math>\displaystyle g(n)=3n</math>. | Wykorzystujemy trzy taśmy (<math>\displaystyle I</math>, <math>\displaystyle C</math>, <math>\displaystyle S</math>) oraz maszynę <math>\displaystyle \mathcal{M}</math> konstruującą pamięciowo funkcję <math>\displaystyle g(n)=3n</math>. | ||
Docelowa maszyna <math>\displaystyle \mathcal{N}</math> działa według schematu. | Docelowa maszyna <math>\displaystyle \mathcal{N}</math> działa według schematu. | ||
# Jeśli słowo początkowe jest puste wypisz <math>\displaystyle 1</math> i zatrzymaj się. | # Jeśli słowo początkowe jest puste wypisz <math>\displaystyle 1</math> i zatrzymaj się. W przeciwnym wypadku | ||
wykonaj następny krok. | |||
# 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 | # Wykonaj symulację maszyny <math>\displaystyle \mathcal{M}</math> na taśmie <math>\displaystyle S</math> oraz dopisz symbol <math>\displaystyle 1</math> do | ||
przebiegu ilość symboli na taśmie <math>\displaystyle S</math> | 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 [[##step4|Uzupelnic step4|]]. | # 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 [[##step4|Uzupelnic step4|]]. | ||
# 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. | ||
Linia 92: | Linia 319: | ||
Po zakończeniu cyklu doszliśmy do konfiguracji <math>\displaystyle \sharp s_1 1^{3^n} \sharp</math> co było wymagane w definicji konstruowalności | Po zakończeniu cyklu doszliśmy do konfiguracji <math>\displaystyle \sharp s_1 1^{3^n} \sharp</math> co było wymagane w definicji konstruowalności | ||
pamięciowej. | pamięciowej. | ||
</div></div> | </div></div> | ||
Linia 323: | Linia 324: | ||
{{cwiczenie||| | {{cwiczenie||| | ||
Skonstruuj maszynę Turinga <math>\displaystyle \mathcal{MT}</math> akceptującą język: | |||
<math>\displaystyle \mathcal{MT}</math> | |||
<center><math>\displaystyle | <center><math>\displaystyle | ||
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> | ||
}} | }} | ||
{{cwiczenie||| | {{cwiczenie||| | ||
Uzasadnij, że język | |||
<center><math>\displaystyle | <center><math>\displaystyle | ||
L_2=\left\{w_1 w_1 w_2 w_2 \dots w_n w_n \: : \: w_i \in \left\{\circ,\bullet\right\}^+, n>0 \right\} | L_2=\left\{w_1 w_1 w_2 w_2 \dots w_n w_n \: : \: w_i \in \left\{\circ,\bullet\right\}^+, n>0 \right\} | ||
</math></center> | </math></center> | ||
jest rozpoznawany przez pewną niedeterministyczna maszynę Turinga <math>\displaystyle \mathcal{NMT}</math>. <br> | |||
< | |||
''' | ''Podpowiedź:'' wykorzystaj konstrukcję z wyrocznią. Dla słowa wejściowego <math>\displaystyle w</math> przeprowadź weryfikację w trzech | ||
etapach: konstrukcja słów <math>\displaystyle w_1, \dots ,w_n</math> gdzie <math>\displaystyle n< |w|</math> (wyrocznia), sklejanie, weryfikacja czy <math>\displaystyle w=w_1w_1 w_2 w_2 \dots w_n w_n</math>. | |||
}} | }} |
Wersja z 18:33, 22 sie 2006
{Języki kontekstowe i automat liniowo ograniczony. Maszyna Turinga}
ĆWICZENIA 12
Ćwiczenie
Rozważmy maszynę Turinga z wykładu (Przykład 1.2) akceptującą język palindromów, czyli:
Sprawdź, że
- oraz, że
- .
Ćwiczenie
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
W trakcie wykładu rozważaliśmy język
wykazując, że NP .
Uzasadnij, że takżeĆwiczenie
Uzasadnij że funkcja jest konstruowalna pamięciowo.
Ćwiczenie
Uzasadnij że funkcja jest konstruowalna pamięciowo.
Zadania domowe
Ćwiczenie
Skonstruuj maszynę Turinga akceptującą język:
Ćwiczenie
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 .