Teoria informacji/TI Wykład 14: Różnice pomiędzy wersjami
Nie podano opisu zmian |
|||
Linia 34: | Linia 34: | ||
Punkt (2) oznacza, ż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, | (3) mówi nam, że z dokładnością do stałej, <math>\Omega </math> jest niekompresowalna. | ||
{{dowod||| | {{dowod||| | ||
Linia 67: | Linia 67: | ||
to łatwo moglibyśmy ją zmodyfikować do maszyny <math> T' </math>, która radziłaby sobie z przypadkiem (b). | to łatwo moglibyśmy ją zmodyfikować do maszyny <math> T' </math>, która radziłaby sobie z przypadkiem (b). | ||
Maszyna <math> T' </math> działałaby tak samo jak maszyna <math> T </math>, z tym że począwszy od | Maszyna <math> T' </math> działałaby tak samo jak maszyna <math> T </math>, z tym że począwszy od | ||
<math>k+1 </math>-szej cyfry <math> \Omega </math>, | <math>k+1 </math>-szej cyfry <math> \Omega </math>, "widziałaby na odwrót", tzn. 0 traktowałaby jak 1 a | ||
1 jak 0. | 1 jak 0. | ||
Linia 95: | Linia 95: | ||
symuluje działanie <math> M' </math> na <math> \varepsilon </math>. | symuluje działanie <math> M' </math> na <math> \varepsilon </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 | 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 | 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: | ||
wykonaj kolejną instrukcję maszyny <math> M_i </math> lub ''skip'' | wykonaj kolejną instrukcję maszyny <math> M_i </math> lub ''skip'' jeśli <math> M_i </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ć | ||
Linia 127: | Linia 127: | ||
'''NIE'''. | '''NIE'''. | ||
Zauważmy, że w tej chwili możemy już wykluczyć możliwość, że <math> \Omega </math> jest | |||
liczbą dwójkowo wymierną. Istotnie, Czytelnik pamięta zapewne doskonale, że problem stopu | 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 | jest nierozstrzygalny, tzn. nie istnieje maszyna ''bez dodatkowej taśmy'', realizująca postulat | ||
z warunku (2). Gdyby jednak <math> \Omega </math> była dwójkowo wymierna, to opisaną wyżej | z warunku (2). Gdyby jednak <math> \Omega </math> była dwójkowo wymierna, to opisaną wyżej | ||
konstrukcję maszyny <math> T </math> można przeprowadzić bez reprezentowania liczby <math> \Omega </math>; | konstrukcję maszyny <math> T </math> można przeprowadzić bez reprezentowania liczby <math> \Omega </math>; | ||
zamiast pobierać bity liczby <math> \Omega </math> z dodatkowej nieskończonej taśmy, maszyna | zamiast pobierać bity liczby <math> \Omega </math> z dodatkowej nieskończonej taśmy, maszyna | ||
<math> T </math> mogłaby je sobie łatwo obliczyć. Podobny argument pokazuje znacznie więcej: | <math> T </math> mogłaby je sobie łatwo obliczyć. Podobny argument pokazuje znacznie więcej: | ||
<math> \Omega </math> nie jest liczba wymierną ani algebraiczną, ani w ogole | <math> \Omega </math> nie jest liczba wymierną ani algebraiczną, ani w ogole "obliczalną" | ||
(zobacz | (zobacz Ćwiczenie). | ||
Wersja z 12:30, 20 wrz 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 [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. 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ść, 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 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 kodów 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.
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
dla pewnego . 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 maszyny i symuluje ich działanie na , gromadząc w zmiennej kody tych maszyn, 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łą.
