Języki, automaty i obliczenia/Ćwiczenia 13: Złożoność obliczeniowa.: Różnice pomiędzy wersjami
Matiunreal (dyskusja | edycje) |
Matiunreal (dyskusja | edycje) |
||
Linia 37: | Linia 37: | ||
W oczywisty sposób otrzymujemy, że ilość wymaganych kroków czasowych maszyny jest ograniczona przez wielomian (dla dużych <math>\displaystyle n</math>). | W oczywisty sposób otrzymujemy, że ilość wymaganych kroków czasowych maszyny jest ograniczona przez wielomian (dla dużych <math>\displaystyle n</math>). | ||
Dla małych <math>\displaystyle n</math> możemy zawsze rozbudować maszynę tak aby akceptowała słowa bez żadnego testowania. | Dla małych <math>\displaystyle n</math> możemy zawsze rozbudować maszynę tak aby akceptowała słowa bez żadnego testowania. | ||
Zatem <math>\displaystyle L\in | Zatem <math>\displaystyle L\in </math> '''P''' . | ||
</div></div> | </div></div> | ||
Linia 79: | Linia 79: | ||
# 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 | # {{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> potraja się) | ||
przebiegu ilość symboli na taśmie <math>\displaystyle S</math> potraja się) | # 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]]. | ||
# 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 | |||
# 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) i przechodzimy do konfiguracji końcowej <math>\displaystyle s_1\in S_F</math>. | ||
i przechodzimy do konfiguracji końcowej <math>\displaystyle s_1\in S_F</math>. | |||
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 | ||
Linia 112: | Linia 110: | ||
rozpoznawany przez automat skończenie stanowy. Zatem do akceptacji tego języka wystarczy, | rozpoznawany przez automat skończenie stanowy. Zatem do akceptacji tego języka wystarczy, | ||
aby maszyna przeszła taśmę z lewej strony do prawej według zasad: | aby maszyna przeszła taśmę z lewej strony do prawej według zasad: | ||
# Jeśli czytasz symbol <math>\displaystyle a</math> wypisz <math>\displaystyle a</math> i przejdź w prawo | # Jeśli czytasz symbol <math>\displaystyle a</math> wypisz <math>\displaystyle a</math> i przejdź w prawo powtarzając ten krok. Jeśli czytasz <math>\displaystyle b</math> przejdź w prawo i wykonaj krok następny. | ||
powtarzając ten krok. Jeśli czytasz <math>\displaystyle b</math> przejdź w prawo i wykonaj | |||
krok następny. | |||
# Jeśli jesteś na ograniczniku to akceptuj, inaczej odrzuć. | # Jeśli jesteś na ograniczniku to akceptuj, inaczej odrzuć. | ||
Linia 134: | Linia 130: | ||
Idea działania poszukiwanej maszyny (cztero taśmowej) jest | Idea działania poszukiwanej maszyny (cztero taśmowej) jest | ||
następująca: | następująca: | ||
# Sprawdź czy słowo wjeściowe <math>\displaystyle w</math> zawiera jako pierwszy symbol <math>\displaystyle a</math>. Jeśli nie | # Sprawdź czy słowo wjeściowe <math>\displaystyle w</math> zawiera jako pierwszy symbol <math>\displaystyle a</math>. Jeśli nie odrzuć. | ||
odrzuć. | # Skopiuj najdłuższy prefiks słowa wejściowego <math>\displaystyle w</math> postaci <math>\displaystyle a^k</math> na taśmę nr dwa. | ||
# Skopiuj najdłuższy prefiks słowa wejściowego <math>\displaystyle w</math> postaci <math>\displaystyle a^k</math> na | |||
taśmę nr dwa. | |||
# Korzystając z konstruowalności pamięciowej funkcji <math>\displaystyle 2k</math> oraz | # Korzystając z konstruowalności pamięciowej funkcji <math>\displaystyle 2k</math> oraz | ||
<math>\displaystyle 3k</math> wypisz słowo <math>\displaystyle b^{2k}</math> na taśmie nr <math>\displaystyle 3</math> oraz słowo <math>\displaystyle c^{3k}</math> na | <math>\displaystyle 3k</math> wypisz słowo <math>\displaystyle b^{2k}</math> na taśmie nr <math>\displaystyle 3</math> oraz słowo <math>\displaystyle c^{3k}</math> na taśmie nr <math>\displaystyle 4</math>. | ||
taśmie nr <math>\displaystyle 4</math>. | # Dopisz słowo z taśmy nr <math>\displaystyle 3</math> i <math>\displaystyle 4</math> do słowa na taśmie nr <math>\displaystyle 2</math>. W tym momencie na taśmie nr <math>\displaystyle 2</math> znajduje się słowo <math>\displaystyle a^k b^{2k} c^{3k}</math>. | ||
# Dopisz słowo z taśmy nr <math>\displaystyle 3</math> i <math>\displaystyle 4</math> do słowa na taśmie nr <math>\displaystyle 2</math>. W | # Porównaj słowo z taśmy nr <math>\displaystyle 2</math> ze słowem <math>\displaystyle w</math>. Jeśli są identyczne to akceptuj. | ||
tym momencie na taśmie nr <math>\displaystyle 2</math> znajduje się słowo <math>\displaystyle a^k b^{2k} | |||
c^{3k}</math>. | |||
# Porównaj słowo z taśmy nr <math>\displaystyle 2</math> ze słowem <math>\displaystyle w</math>. Jeśli są | |||
identyczne to akceptuj. | |||
</div></div> | </div></div> | ||
Linia 168: | Linia 158: | ||
'''(Ad. 1)''' Konstruujemy maszynę dwu-taśmową która działa | '''(Ad. 1)''' Konstruujemy maszynę dwu-taśmową która działa | ||
według zasady: | według zasady: | ||
# Kopiuj słowo wejściowe na taśmę nr 2. Symuluj kolejno jeden | # Kopiuj słowo wejściowe na taśmę nr 2. Symuluj kolejno jeden krok czasowy <math>\displaystyle TM_1</math> na taśmie <math>\displaystyle 1</math> i jeden krok <math>\displaystyle TM_2</math> na taśmie <math>\displaystyle 2</math>. | ||
krok czasowy <math>\displaystyle TM_1</math> na taśmie <math>\displaystyle 1</math> i jeden krok <math>\displaystyle TM_2</math> na taśmie <math>\displaystyle 2</math>. | |||
# Jeśli któraś z maszyn zaakceptowała to akceptuj. | # Jeśli któraś z maszyn zaakceptowała to akceptuj. | ||
Linia 273: | Linia 262: | ||
własność Posta. | własność Posta. | ||
# Jeśli lista zawiera parę <math>\displaystyle (1^k,1^k)</math> to mamy własność Posta. | # Jeśli lista zawiera parę <math>\displaystyle (1^k,1^k)</math> to mamy własność Posta. | ||
# Jeśli jedyne pary to takie w których | # Jeśli jedyne pary to takie w których <math>\displaystyle (u_i,v_i)=(1^{k_i},1^{l_i})</math> oraz <math>\displaystyle k_i>l_i</math> (lub <math>\displaystyle k_i<l_i</math>) dla | ||
<math>\displaystyle (u_i,v_i)=(1^{k_i},1^{l_i})</math> oraz <math>\displaystyle k_i>l_i</math> (lub <math>\displaystyle k_i<l_i</math>) dla | |||
<math>\displaystyle i=1,\dots,n</math> to własność posta nie jest spełniona (słowo dane przez | <math>\displaystyle i=1,\dots,n</math> to własność posta nie jest spełniona (słowo dane przez | ||
katenację dowolnych <math>\displaystyle u_i</math> zawsze zawiera więcej (odp. mniej) symboli | katenację dowolnych <math>\displaystyle u_i</math> zawsze zawiera więcej (odp. mniej) symboli | ||
niż odpowiadająca mu katenacja słow <math>\displaystyle v_i</math> ) | niż odpowiadająca mu katenacja słow <math>\displaystyle v_i</math> ) | ||
# W ostatnim przypadku istnieją indeksy <math>\displaystyle i,j</math> takie, że | # W ostatnim przypadku istnieją indeksy <math>\displaystyle i,j</math> takie, że | ||
<center><math>\displaystyle | <center><math>\displaystyle (u_i,v_i)=(1^k,1^l)\quad , \quad (u_j,v_j)=(1^p,1^q) </math></center> | ||
(u_i,v_i)=(1^k,1^l)\quad , \quad (u_j,v_j)=(1^p,1^q) | |||
</math></center> | |||
przy czym <math>\displaystyle k<l</math> i <math>\displaystyle p>q</math>. W tej sytuacji zachodzi własność Posta. | przy czym <math>\displaystyle k<l</math> i <math>\displaystyle p>q</math>. W tej sytuacji zachodzi własność Posta. |
Wersja z 08:50, 24 sie 2006
1. ĆWICZENIA 13
Ćwiczenie 1.1
W trakcie wykładu rozważaliśmy język
wykazując, że NP .
Uzasadnij, że takżeĆwiczenie 1.2
Uzasadnij że funkcja jest konstruowalna pamięciowo.
Ćwiczenie 1.3
Uzasadnij że funkcja jest konstruowalna pamięciowo.
Ćwiczenie 1.4
Skonstruuj maszynę Turinga rozpoznającą język zadany gramatyką:
Ćwiczenie 1.5
Przedstaw ideę działania maszyny Turinga rozpoznającej język
Ćwiczenie 1.6
W trakcie wykładu rozważaliśmy zamkniętość klas języków w klasyfikacji Chomsky'ego ze względu na różne działania. Podaj uzasadnienie (ideę konstrukcji) następującego faktu:
Dla dowolnych maszyn Turinga , istnieje maszyna o własności:
Ćwiczenie 1.7
Czy któraś z poniższych list słów ma własność Posta?
Ćwiczenie 1.8
W definicji problemu Posta zakłada się, że alfabet zawiera co najmniej dwa elementy. Wykaż, że gdy to założenie nie jest spełnione (tzn. ) problem Posta jest problemem rozstrzygalnym.
2. Zadania domowe
Ćwiczenie 2.1
Zadanie domowe 2.1 do wykładu 12 polegało na konstrukcji maszyny Turinga akceptującej język:
Zmodyfikuj, ewentualnie, tę konstrukcję aby udowodnić P .
Ćwiczenie 2.2
Zadanie domowe 2.2 do wykładu 12 polegało na konstrukcji niedeterministycznej maszyny Turinga akceptującej język:
Zmodyfikuj, ewentualnie, tę konstrukcję aby udowodnić, że
NP .
Podpowiedź: wykorzystaj konstrukcję z wyrocznią. Dla słowa wejściowego przeprowadź weryfikację w trzech etapach: konstrukcja słów gdzie (wyrocznia), sklejanie, weryfikacja czy .
Ćwiczenie 2.3
Uzasadnij, że jeśli funkcja jest konstruowalna pamięciowo to obliczenie z definicji
konstruowalności pamięciowej (tzn. ,
) następuję w conajwyżej krokach gdzie jest pewną
stałą niezależną od .
Podpowiedź: przeanalizuj ilość możliwych konfiguracji.
Ćwiczenie 2.4
Uzasadnij że funkcja jest konstruowalna pamięciowo.
Ćwiczenie 2.5
Skonstruuj maszynę Turinga akceptującą słowo w dokładnie krokach. Jak zmodyfikować konstrukcję maszyny aby akceptowała słowo dokładnie w krokach?
Ćwiczenie 2.6
Wypisz dokładnie wszystkie elementy składowe maszyn Turinga rozpoznających języki zadane gramatykami:
- , ,
Ćwiczenie 2.7
Wykaż (podając ideę kontrukcji) że dla maszyn Turinga , istnieje maszyna Turinga rozpoznająca język:
Ćwiczenie 2.8
Czy któraś z poniższych list słów ma własność Posta?
Ćwiczenie 2.9
Udowodnij Twierdzenie 2.1 z wykładu:
Twierdzenie. Dla każdej gramatyki istnieje równoważna gramatyka tego samego typu taka, że każda produkcja, w której występuje symbol terminalny , jest postaci .