Teoria informacji/TI Wykład 14: Różnice pomiędzy wersjami
Nie podano opisu zmian |
|||
Linia 3: | Linia 3: | ||
Tak jak w poprzednim wykładzie, ustalamy jakieś bezprefiksowe | Tak jak w poprzednim wykładzie, ustalamy jakieś bezprefiksowe | ||
kodowanie maszyn Turinga (przypominamy, że przykład takiego kodowania można znaleźć | kodowanie maszyn Turinga (przypominamy, że przykład takiego kodowania można znaleźć | ||
w 1 wykładzie z Teorii złożoności) oraz | w 1 wykładzie z Teorii złożoności) oraz bezprefiksową | ||
[[Teoria informacji/TI Wykład 13#universe|maszynę uniwersalną]] <math>U</math>. | [[Teoria informacji/TI Wykład 13#universe|maszynę uniwersalną]] <math>U</math>. | ||
Będziemy pisać <math>M(v) \downarrow </math> na oznaczenie własności | Będziemy pisać <math>M(v) \downarrow </math> na oznaczenie własności | ||
Linia 11: | Linia 11: | ||
<center><math> | <center><math> | ||
\Omega = \sum_{U(v)\downarrow } 2^{ - |v | \Omega = \sum_{U(v)\downarrow } 2^{ - |v|} | ||
</math></center>}} | </math></center>}} | ||
Linia 21: | Linia 21: | ||
{{twierdzenie|[Własności <math> \Omega </math>]|Chaitin_property|Stała Chaitina ma następujące własności. | {{twierdzenie|[Własności <math> \Omega </math>]|Chaitin_property|Stała Chaitina ma następujące własności. | ||
(1) <math> \Omega | (1) <math> \Omega \leq 1</math>. | ||
(2) Istnieje maszyna Turinga <math> T</math> z dodatkową taśmą nieskończoną, na której wypisane są kolejne | (2) Istnieje maszyna Turinga <math> T</math> z dodatkową taśmą nieskończoną, na której wypisane są kolejne | ||
Linia 38: | Linia 38: | ||
{{dowod||| | {{dowod||| | ||
Ad 1. | Ad 1. Ponieważ zbiór | ||
<center><math> | <center><math> | ||
\ | L(U) = \{ w : U(w) \downarrow \} | ||
</math></center> | </math></center> | ||
jest bezprefiksowy, | |||
każdy skończony podzbiór | |||
<math>{\cal S} \subseteq L(U) </math>, | |||
tworzy [[Teoria informacji/TI Wykład 1#kod|kod bezprefiksowy]], a zatem z | |||
[[Teoria informacji/TI Wykład 1#kraft| nierówności Krafta]] spełnia nierówność | [[Teoria informacji/TI Wykład 1#kraft| nierówności Krafta]] spełnia nierówność | ||
<math> | <math> | ||
\sum_{ | \sum_{x \in {\cal S}} 2^{ - | x |} \leq 1 | ||
</math>, | </math>, | ||
co po przejściu do supremum daje nierówność | co po przejściu do supremum daje żądaną nierówność. | ||
Ad 2. Zanim opiszemy konstrukcję maszyny <math> T </math>, zróbmy pewne obserwacje na temat liczby | Ad 2. Zanim opiszemy konstrukcję maszyny <math> T </math>, zróbmy pewne obserwacje na temat liczby | ||
Linia 70: | Linia 69: | ||
1 jak 0. | 1 jak 0. | ||
Jeśli wybierzemy wariant (a), lub jeśli <math> \Omega </math> nie jest dwójkowo wymierna, to dla każdego | Jeśli wybierzemy wariant (a), lub jeśli <math> \Omega </math> nie jest dwójkowo wymierna, to dla każdego | ||
<math> n </math> istnieje '''skończony''' podzbiór <math> {\cal S}_n | <math> n </math> istnieje '''skończony''' podzbiór <math> {\cal S}_n \subseteq L(U)</math>, | ||
taki że liczba wyznaczona przez pierwszych <math> n </math> cyfr <math> \Omega </math> | taki że liczba wyznaczona przez pierwszych <math> n </math> cyfr <math> \Omega </math> spełnia | ||
<center><math> | <center><math> | ||
0. \omega_1 \omega_2 \ldots \omega_n | 0. \omega_1 \omega_2 \ldots \omega_n \leq | ||
\sum_{ | \sum_{x \in {\cal S}_n } 2^{ - |x| } | ||
</math></center> | </math></center> | ||
(pamiętamy, że <math> \sum_{i = n+1}^{\infty } 2^{-i} = \frac{1}{2^n} </math>). | (pamiętamy, że <math> \sum_{i = n+1}^{\infty } 2^{-i} = \frac{1}{2^n} </math>). | ||
Linia 87: | Linia 83: | ||
Opiszemy teraz działanie maszyny <math> T </math>. Jak zwykle w takich przypadkach, opiszemy | Opiszemy teraz działanie maszyny <math> T </math>. Jak zwykle w takich przypadkach, opiszemy | ||
algorytm, pozostawiając Czytelnikowi jego formalizację w języku maszyn Turinga. | algorytm, pozostawiając Czytelnikowi jego formalizację w języku maszyn Turinga. | ||
Jeśli na wejściu jest słowo | Jeśli na wejściu jest słowo <math> w </math>, <math> |w| = n </math>, | ||
maszyna <math> T </math> symuluje działanie <math> U </math> na <math> w </math>, | |||
a także przegląda kolejne słowa | |||
<math>v </math>, powiedzmy w porządku wojskowym, i | |||
symuluje działanie <math> U </math> na <math> v </math>. | |||
<math> | |||
symuluje działanie <math> | |||
Oczywiście każda z tych maszyn może się zapętlić, dlatego <math> T </math> | Oczywiście każda z tych maszyn może się zapętlić, dlatego <math> T </math> | ||
nie symuluje ich "po kolei"; zamiast tego wykonuje na przemian po jednej (kolejnej) instrukcji | nie symuluje ich "po kolei"; zamiast tego wykonuje na przemian po jednej (kolejnej) instrukcji | ||
kolejnych symulowanych maszyn. | kolejnych symulowanych maszyn. | ||
Można to sobie wyobrazić jako "ruch zygzakowy". Jeśli przyjąć, że | Można to sobie wyobrazić jako "ruch zygzakowy". Jeśli przyjąć, że słowa w porządku wojskowym tworzą | ||
ciąg <math> | ciąg <math> v_0, v_1, v_2, \ldots </math>, a <math>{\cal W} (u_i) </math> oznacza: | ||
wykonaj | wykonaj kolejny krok działania maszyny <math> U </math> na wejściu <math> v_i</math> lub ''skip'' jeśli | ||
<math> U </math> już zakończyła | |||
działanie, | działanie, | ||
to plan działania maszyny <math> T </math> można przedstawić | to plan działania maszyny <math> T </math> można przedstawić | ||
<center><math> | <center><math> | ||
{\cal W} ( | {\cal W} (v_0 ) \, {\cal W} (v_1 ) \, {\cal W} (v_0 ) \, {\cal W} (v_1 ) \, {\cal W} (v_2 ) \, | ||
\, {\cal W} ( | \, {\cal W} (v_0 ) \, {\cal W} (v_1 ) \, {\cal W} (v_2 ) \, | ||
{\cal W} ( | {\cal W} (v_3) \, {\cal W} (v_0 ) \dots | ||
</math></center> | </math></center> | ||
W trakcie swojego obliczenia, maszyna <math> T </math> utrzymuje zmienną, powiedzmy | 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 | <math> {\cal S}' </math>, której aktualną wartością jest (skończony) zbiór tych słów | ||
<math> | <math> v, </math> dla których już udało się stwierdzić, że <math> U(v )\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> | '''(i)''' <math> T </math> stwierdza, że <math> U (w )\downarrow </math>; wtedy daje odpowiedź | ||
'''TAK'''. | '''TAK'''. | ||
'''(ii)''' <math> T </math> stwierdza, że | '''(ii)''' <math> T </math> stwierdza, że | ||
<center><math> | <center><math> | ||
0. \omega_1 \omega_2 \ldots \omega_n | 0. \omega_1 \omega_2 \ldots \omega_n \leq | ||
\sum_{ | \sum_{v \in {\cal S}' } 2^{ - |v | }, | ||
</math></center> | </math></center> | ||
ale <math> | ale <math>w \not\in {\cal S}'</math>; wtedy daje odpowiedź | ||
'''NIE'''. | '''NIE'''. | ||
Linia 143: | Linia 138: | ||
z wynikiem <math> U(x) </math> i co więcej | z wynikiem <math> U(x) </math> i co więcej | ||
<center><math> | <center><math> | ||
U(x) = | U(x) = \omega_1 \omega_2 \ldots \omega_n , | ||
</math></center> | </math></center> | ||
dla pewnego <math> n </math>. | stanowi pierwsze <math> n </math> cyfr rozwinięcia binarnego <math> \Omega </math>, | ||
dla pewnego <math> n </math>. Niech | |||
<center> <math> \Omega_n = \omega_1 \omega_2 \ldots \omega_n . </math></center> | |||
Oczywiście, dla wielu <math> x </math> nie będzie to prawdą; wtedy maszyna <math> R </math> zgodnie | Oczywiście, dla wielu <math> x </math> nie będzie to prawdą; wtedy maszyna <math> R </math> zgodnie | ||
z naszym opisem będzie wykonywać jakieś działania, których wynik nas nie interesuje. Ważne jest | z naszym opisem będzie wykonywać jakieś działania, których wynik nas nie interesuje. Ważne jest | ||
Linia 152: | Linia 150: | ||
Z kolei, podobnie jak maszyna <math> T </math> w dowodzie punktu (2), maszyna <math> R </math> ruchem zygzakowym | Z kolei, podobnie jak maszyna <math> T </math> w dowodzie punktu (2), maszyna <math> R </math> ruchem zygzakowym | ||
przegląda kolejne | przegląda kolejne słowa <math> y </math> i symuluje | ||
działanie na <math> U </math> na <math> y </math>, gromadząc w zmiennej <math> {\cal S}' </math> | |||
te słowa <math> y </math>, dla których obliczenie już się zakończyło. Dodatkowo, dla każdego | |||
<math> | <math> y \in {\cal S}' </math>, <math> R </math> zapamiętuje | ||
<math> | <math> U(y) </math>. | ||
Pamiętamy, że wykluczyliśmy już możliwość podwójnej reprezentacji <math> \Omega</math>. Dlatego też, | Pamiętamy, że wykluczyliśmy już możliwość podwójnej reprezentacji <math> \Omega</math>. Dlatego też, | ||
po pewnym skończonym czasie <math> R </math> stwierdzi, że | po pewnym skończonym czasie <math> R </math> stwierdzi, że | ||
<center><math> | <center><math> | ||
\sum_{ | \sum_{y \in {\cal S}' } 2^{ - |y | } \geq \Omega_n . | ||
</math></center> | </math></center> | ||
Niech <math> v </math> będzie pierwszym w porządku wojskowym słowem takim, że | Niech <math> v </math> będzie pierwszym w porządku wojskowym słowem takim, że | ||
<math> v \neq | <math> v \neq U(y) </math>, dla każdego <math> y \in {\cal S}' </math>. | ||
Zauważmy, że <math> K_U ( v ) \geq n </math> (z definicji <math> \Omega</math>). | Zauważmy, że <math> K_U ( v ) \geq n </math> (z definicji <math> \Omega</math>). | ||
Wtedy wreszcie nasza maszyna <math> R </math> zatrzymuje się z wynikiem <math> R (x) = v</math>. | Wtedy wreszcie nasza maszyna <math> R </math> zatrzymuje się z wynikiem <math> R (x) = v</math>. |
Wersja z 23:32, 8 sty 2007
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 bezprefiksową 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 [Własności ]
(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. Ponieważ zbiór
jest bezprefiksowy, każdy skończony podzbiór , tworzy kod bezprefiksowy, a zatem z nierówności Krafta spełnia nierówność , co po przejściu do supremum daje żądaną nierówność.
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ść, 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.
Jeśli wybierzemy wariant (a), lub jeśli nie jest dwójkowo wymierna, to dla każdego istnieje skończony podzbiór , taki że liczba wyznaczona przez pierwszych cyfr spełnia
(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 , , maszyna symuluje działanie na , a także przegląda kolejne słowa , 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 słowa w porządku wojskowym tworzą ciąg , a oznacza: wykonaj kolejny krok działania maszyny na wejściu lub skip jeśli 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 słów 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.
Zauważmy, że w tej chwili możemy już wykluczyć możliwość, że jest liczbą dwójkowo wymierną. Istotnie, Czytelnik pamięta zapewne doskonale, że problem stopu jest nierozstrzygalny, tzn. nie istnieje maszyna bez dodatkowej taśmy, realizująca postulat z warunku (2). Gdyby jednak była dwójkowo wymierna, to opisaną wyżej konstrukcję maszyny można przeprowadzić bez reprezentowania liczby ; zamiast pobierać bity liczby z dodatkowej nieskończonej taśmy, maszyna mogłaby je sobie łatwo obliczyć. Podobny argument pokazuje znacznie więcej: nie jest liczba wymierną ani algebraiczną, ani w ogole "obliczalną" (zobacz Ćwiczenie).
Ad 3. Opiszemy działanie pewnej maszyny . Na słowie wejściowym ,
najpierw symuluje działanie maszyny uniwersalnej na
słowie . Dalszy opis prowadzimy przy założeniu, że obliczenie się zakończyło
z wynikiem i co więcej
stanowi pierwsze cyfr rozwinięcia binarnego , dla pewnego . Niech
Oczywiście, dla wielu nie będzie to prawdą; wtedy maszyna zgodnie z naszym opisem będzie wykonywać jakieś działania, których wynik nas nie interesuje. Ważne jest jednak, że dla pewnego istotnie zajdzie (z własności maszyny uniwersalnej).
Z kolei, podobnie jak maszyna w dowodzie punktu (2), maszyna ruchem zygzakowym przegląda kolejne słowa i symuluje działanie na na , gromadząc w zmiennej te słowa , dla których obliczenie już się zakończyło. Dodatkowo, dla każdego , zapamiętuje . Pamiętamy, że wykluczyliśmy już możliwość podwójnej reprezentacji . Dlatego też, po pewnym skończonym czasie stwierdzi, że
Niech będzie pierwszym w porządku wojskowym słowem takim, że , dla każdego . Zauważmy, że (z definicji ). Wtedy wreszcie nasza maszyna zatrzymuje się z wynikiem .
Zgodnie z Faktem z poprzedniego wykładu, istnieje stała , że
Ale (skoro wygenerowała z wejścia ). To daje nam
i nierówność ta zachodzi dla każdego , takiego że . A zatem
dla każdego , tak więc może być żądaną stałą.
