Teoria informacji/TI Wykład 14: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Niwinski (dyskusja | edycje)
Dorota (dyskusja | edycje)
Nie podano opisu zmian
Linia 34: Linia 34:




Punkt (2) oznacza, że ,,znając" stałą Chaitina potrafilibyśmy rozstrzygać problem stopu, natomiast
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, <math>\Omega </math> jest niekompresowalna.
(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>, ,,widziałaby na odwrót", tzn. 0 traktowałaby jak 1 a  
<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  ,,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 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:
wykonaj kolejną instrukcję maszyny <math> M_i </math> lub ''skip'' jesli <math> M_i </math> już zakończyła
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'''.


Zuważmy, że w tej chwili możemy już wykluczyć możliwość, że <math> \Omega  </math> jest
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 ,,obliczalną"
<math> \Omega  </math> nie jest liczba wymierną ani algebraiczną, ani w ogole "obliczalną"
(zobacz Cwiczenie).
(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ą U. Będziemy pisać M(v) na oznaczenie własności maszyna M zatrzymuje się startując ze słowa wejściowego v.

Definicja [Stała Chaitina]

Stałą Chaitina określamy jako sumę szeregu
Ω=U(v)2|v|=M(ε)2|M|


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 Ω]

Stała Chaitina ma następujące własności.

(1) Ω<1.

(2) Istnieje maszyna Turinga T z dodatkową taśmą nieskończoną, na której wypisane są kolejne cyfry binarnego rozwinięcia Ω, która dla danego kodu M maszyny M odpowiada na pytanie, czy M(ε).

(3) Istnieje stała c taka, że

KU(ω1ωn)nc,
gdzie ω1ωn oznacza pierwszych n bitów liczby Ω.


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 (*)

M2|M|1

(tu sumowanie rozciąga się na wszystkie maszyny Turinga, a nie tylko te, dla których M(ε)). 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ść M2|M|1, 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 T, 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) Ω=0.ω1ω2ωk0111

(b) Ω=0.ω1ω2ωk1000

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ę T dla tego przypadku, to łatwo moglibyśmy ją zmodyfikować do maszyny T, która radziłaby sobie z przypadkiem (b). Maszyna T działałaby tak samo jak maszyna T, z tym że począwszy od k+1-szej cyfry Ω, "widziałaby na odwrót", tzn. 0 traktowałaby jak 1 a 1 jak 0.

Niech
𝒮={M:M(ε)}.

Jeśli wybierzemy wariant (a), lub jeśli Ω nie jest dwójkowo wymierna, to dla każdego n istnieje skończony podzbiór 𝒮n zbioru 𝒮, taki że liczba wyznaczona przez pierwszych n cyfr Ω przedstawia się

0.ω1ω2ωn=M𝒮n2M

(pamiętamy, że i=n+12i=12n).

Opiszemy teraz działanie maszyny T. 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, T je odrzuca. Przypuśćmy, że na wejściu jest M; niech n=|M|. Maszyna T symuluje działanie M na ε (tzn. na pustej taśmie), a także przegląda kolejne kody maszyn Turinga M, powiedzmy w porządku wojskowym, i symuluje działanie M na ε. Oczywiście każda z tych maszyn może się zapętlić, dlatego T 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 M0,M1,M2,, a 𝒲(Mi) oznacza: wykonaj kolejną instrukcję maszyny Mi lub skip jeśli Mi już zakończyła działanie, to plan działania maszyny T można przedstawić

𝒲(M0)𝒲(M1)𝒲(M0)𝒲(M1)𝒲(M2)𝒲(M0)𝒲(M1)𝒲(M2)𝒲(M3)𝒲(M0)

W trakcie swojego obliczenia, maszyna T utrzymuje zmienną, powiedzmy 𝒮', której aktualną wartością jest (skończony) zbiór kodów tych maszyn M, dla których już udało się stwierdzić, że M(ε).

Zgodnie z powyższą oberwacją, w skończonym czasie jeden z dwóch przypadków ma miejsce.

(i) T stwierdza, że M(ε); wtedy daje odpowiedź TAK.

(ii) T stwierdza, że

0.ω1ω2ωn=M𝒮2|M|,

ale M∉𝒮; 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 T można przeprowadzić bez reprezentowania liczby Ω; zamiast pobierać bity liczby Ω z dodatkowej nieskończonej taśmy, maszyna T 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 R. Na słowie wejściowym x, R najpierw symuluje działanie maszyny uniwersalnej U na słowie x. Dalszy opis prowadzimy przy założeniu, że obliczenie się zakończyło z wynikiem U(x) i co więcej

U(x)=Ωn=0.ω1ω2ωn,

dla pewnego n. Oczywiście, dla wielu x nie będzie to prawdą; wtedy maszyna R zgodnie z naszym opisem będzie wykonywać jakieś działania, których wynik nas nie interesuje. Ważne jest jednak, że dla pewnego x istotnie zajdzie U(x)=Ωn (z własności maszyny uniwersalnej).

Z kolei, podobnie jak maszyna T w dowodzie punktu (2), maszyna R ruchem zygzakowym przegląda kolejne maszyny M 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 M𝒮, R zapamiętuje M(ε). Pamiętamy, że wykluczyliśmy już możliwość podwójnej reprezentacji Ω. Dlatego też, po pewnym skończonym czasie R stwierdzi, że

M𝒮2|M|=Ωn.

Niech v będzie pierwszym w porządku wojskowym słowem takim, że vM(ε), dla każdego M𝒮. Zauważmy, że KU(v)n (z definicji Ω). Wtedy wreszcie nasza maszyna R zatrzymuje się z wynikiem R(x)=v.

Zgodnie z Faktem z poprzedniego wykładu, istnieje stała cUR, że

KU(v)KR(v)+cUR.

Ale KR(v)|x| (skoro R wygenerowała v z wejścia x). To daje nam

nKU(v)KR(v)+cUR|x|+cUR

i nierówność ta zachodzi dla każdego x, takiego że U(x)=Ωn. A zatem

nKU(Ωn)+cUR

dla każdego n, tak więc c=cUR może być żądaną stałą.