Teoria informacji/TI Wykład 14: Różnice pomiędzy wersjami
Linia 100: | Linia 100: | ||
Można to sobie wyobrazić jako ,,ruch zygzakowy'': jeśli przyjąć, że maszyny w porządku wojskowym tworzą | Można to sobie wyobrazić jako ,,ruch zygzakowy'': jeśli przyjąć, że maszyny w porządku wojskowym tworzą | ||
ciąg <math> M_0, M_1, M_2, \ldots </math>, a <math>{\cal W} (M_i) </math> oznacza | ciąg <math> M_0, M_1, M_2, \ldots </math>, a <math>{\cal W} (M_i) </math> oznacza | ||
<center> | |||
wykonaj kolejną instrukcję maszyny <math> M_i </math> lub ''skip'' jesli <math> M_i </math> już zakończyła | |||
działanie, | |||
</center> | |||
to plan działania maszyny <math> T </math> | |||
można przedstawić | można przedstawić | ||
<center><math> | <center><math> | ||
{\cal W} (M_0 ) \, {\cal W} (M_1 ) \, {\cal W} (M_0 ) \, {\cal W} (M_1 ) \, {\cal W} (M_2 ) \, | {\cal W} (M_0 ) \, {\cal W} (M_1 ) \, {\cal W} (M_0 ) \, {\cal W} (M_1 ) \, {\cal W} (M_2 ) \, | ||
Linia 108: | Linia 113: | ||
</math></center> | </math></center> | ||
W trakcie swojego obliczenia, | W trakcie swojego obliczenia, maszyna <math> T </math> utrzymuje zmienną, powiedzmy | ||
<math> {\cal S}' </math>, której aktualną wartością jest (skończony) zbiór tych maszyn | |||
<math> M', </math> dla których już udało się stwierdzić, że <math> M'(\varepsilon )\downarrow </math>. | |||
Zgodnie z powyższą oberwacją, w skończonym czasie jeden z dwóch przypadków ma miejsce. | Zgodnie z powyższą oberwacją, w skończonym czasie jeden z dwóch przypadków ma miejsce. | ||
(i) <math> T </math> stwierdza, że <math> M(\varepsilon )\downarrow </math>; wtedy daje odpowiedź | '''(i)''' <math> T </math> stwierdza, że <math> M(\varepsilon )\downarrow </math>; wtedy daje odpowiedź | ||
'''TAK'''. | '''TAK'''. | ||
'''(ii)''' <math> T </math> stwierdza, że | |||
<center><math> | |||
0. \omega_1 \omega_2 \ldots \omega_n = | |||
\sum_{M' \in {\cal S}' } 2^{ - \langle M \rangle }, | |||
</math></center> | |||
ale <math>M \not\in {\cal S}'</math>; wtedy daje odpowiedź | |||
'''NIE'''. | |||
Ad 3.}} | Ad 3.}} |
Wersja z 22:59, 23 sie 2006
Stała Chaitina
Tak jak w poprzednim wykładzie, ustalamy jakieś bezprefiksowe kodowanie maszyn Turinga (przypominamy, że przykład takiego kodowania można znaleźć w 1 wykładzie z Teorii złożoności) oraz maszynę uniwersalną . Będziemy pisać na oznaczenie własności maszyna M zatrzymuje się startując ze słowa wejściowego v.
Definicja [Stała Chaitina]
Stała Chaitina jest czasem przedstawiana jako prawdopodobieństwo, że losowo wybrany program się zatrzymuje (ma to miejsce przy pewnym wyborze kodowania i miary prawdopodobieństwa).
Oczywiście konkretna wartość zależy od wyboru kodowania i maszyny uniwersalnej, ale jej
istotne własności od tego nie zależą.
Twierdzenie
(1) .
(2) Istnieje maszyna Turinga z dodatkową taśmą nieskończoną, na której wypisane są kolejne cyfry binarnego rozwinięcia , która dla danego kodu maszyny odpowiada na pytanie, czy .
(3) Istnieje stała taka, że
Punkt (2) oznacza, że ,,znając" stałą Chaitina potrafilibyśmy rozstrzygać problem stopu, natomiast
(3) mówi nam, że z dokładnością do stałej, jest niekompresowalna.
Dowód
Ad 1. Wykażemy, że (*)
(tu sumowanie rozciąga się na wszystkie maszyny Turinga, a nie tylko te, dla których ). Istotnie, przy bezprefikowsym kodowaniu, dla każdego skończonego zbioru maszyn , odpowiedni zbiór kodów tworzy kod bezprefiksowy, a zatem z nierówności Krafta spełnia nierówność , co po przejściu do supremum daje nierówność (*). Ponieważ niewątpliwie istnieje maszyna, która nie zatrzymuje się na pustej taśmie, jest ostro mniejsza od lewej strony (*).
Ad 2. Zanim opiszemy konstrukcję maszyny , zróbmy pewne obserwacje na temat liczby . Znanym problemem w dowodach własności liczb rzeczywistych jest, że a priori liczba może mieć dwie różne reprezentacje (w szczególności binarne). Działoby się tak, gdyby liczba była dwójkowo wymierna, tzn.
(a)
(b)
Jakkolwiek w przyszłości wykluczymy taką możliwość (będzie to łatwa konsekwencja własności (3)), w tej chwili musimy jeszcze wziąć ją pod uwagę. Otóż bez zmniejszenia ogólności możemy założyć, że dana jest w postaci (a). Istotnie, gdybyśmy mieli maszynę dla tego przypadku, to łatwo moglibyśmy ją zmodyfikować do maszyny , która radziłaby sobie z przypadkiem (b). Maszyna działałaby tak samo jak maszyna , z tym że począwszy od -szej cyfry , ,,widziałaby na odwrót", tzn. 0 traktowałaby jak 1 a 1 jak 0.
NiechJeśli wybierzemy wariant (a), lub jeśli nie jest dwójkowo wymierna, to dla każdego istnieje skończony podzbiór zbioru , taki że liczba wyznaczona przez pierwszych cyfr przedstawia się
(pamiętamy, że ).
Opiszemy teraz działanie maszyny . Jak zwykle w takich przypadkach, opiszemy algorytm, pozostawiając Czytelnikowi jego formalizację w języku maszyn Turinga. Jeśli na wejściu jest słowo nie będące kodem żadnej maszyny, je odrzuca. Przypuśćmy, że na wejściu jest ; niech . Maszyna symuluje działanie na (tzn. na pustej taśmie), a także przegląda kolejne kody maszyn Turinga , powiedzmy w porządku wojskowym, i symuluje działanie na . Oczywiście każda z tych maszyn może się zapętlić, dlatego nie symuluje ich ,,po kolei"; zamiast tego wykonuje na przemian po jednej (kolejnej) instrukcji kolejnych symulowanych maszyn.
Można to sobie wyobrazić jako ,,ruch zygzakowy: jeśli przyjąć, że maszyny w porządku wojskowym tworzą ciąg , a oznacza
wykonaj kolejną instrukcję maszyny lub skip jesli już zakończyła działanie,
to plan działania maszyny można przedstawić
W trakcie swojego obliczenia, maszyna utrzymuje zmienną, powiedzmy , której aktualną wartością jest (skończony) zbiór tych maszyn dla których już udało się stwierdzić, że .
Zgodnie z powyższą oberwacją, w skończonym czasie jeden z dwóch przypadków ma miejsce.
(i) stwierdza, że ; wtedy daje odpowiedź TAK.
(ii) stwierdza, że
ale ; wtedy daje odpowiedź NIE.
Ad 3.