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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Niwinski (dyskusja | edycje)
Niwinski (dyskusja | edycje)
Linia 14: Linia 14:


Dokładniej, rozważmy zbiór nieskończonych ciągów zero-jedynkowych,
Dokładniej, rozważmy zbiór nieskończonych ciągów zero-jedynkowych,
<math> \{ 0,1 \}^{\omega }</math>. Dla <math> w_1 \ldots w_n \{ 0,1 \}^{n}</math>, określamy
<math> \{ 0,1 \}^{\omega }</math>. Dla <math> w_1 \ldots w_n \{ 0,1 \}^{n}</math>, określamy
<center><math>
<center><math>
p ( w_1 \ldots w_n \{ 0,1 \}^{\omega } ) = \frac{1}{2^n},
p ( w_1 \ldots w_n \{ 0,1 \}^{\omega } ) = \frac{1}{2^n},
Linia 20: Linia 20:
w szczególności <math>p (\{ 0,1 \}^{\omega } ) = 1</math>. Funkcję  <math> p</math>
w szczególności <math>p (\{ 0,1 \}^{\omega } ) = 1</math>. Funkcję  <math> p</math>
można rozszerzyć na Borelowskie podzbiory <math> \{ 0,1 \}^{\omega }</math> tak, by stanowiła  
można rozszerzyć na Borelowskie podzbiory <math> \{ 0,1 \}^{\omega }</math> tak, by stanowiła  
prawdopodobieństwo. W szczególności <math>\Omega </math> stanowi prawdopodobieństwo zdarzenia,
prawdopodobieństwo. Prawdopodobieśtwo to możemy też określić patrząc na ciąg
że ciąg ze zbioru <math> \{ 0,1 \}^{\omega }</math> zawiera prefiks <math> v</math>, dla którego
<math>x \in  \{ 0,1 \}^{\omega }</math> jak na wynik nieskończonego procesu Bernoulliego
<math>U ( v) \downarrow </math>.
<math>X_1, X_2, \ldots </math>, gdzie <math> p (X_i  = 0) = p (X_i  = 1) = \frac{1}{2}</math>.
 


W szczególności <math>\Omega </math> stanowi prawdopodobieństwo zdarzenia,
że ciąg  <math>x \in  \{ 0,1 \}^{\omega }</math> zawiera prefiks <math> v</math>, dla którego
<math>U ( v) \downarrow </math> (z bezprefiksowości wynika, że jest co najwyżej jeden taki prefiks).
Oczywiście konkretna wartość <math>\Omega </math> zależy od wyboru kodowania i maszyny uniwersalnej, ale jej  
Oczywiście konkretna wartość <math>\Omega </math> zależy od wyboru kodowania i maszyny uniwersalnej, ale jej  
istotne własności od tego nie zależą.
istotne własności od tego nie zależą.
Linia 94: Linia 96:
Jeśli na wejściu jest słowo <math> w </math>,  <math> |w| = n </math>,  
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>,
maszyna <math> T </math> symuluje działanie <math> U </math> na <math> w </math>,
a także przegląda kolejne słowa  
a równolegle przegląda kolejne słowa z <math>\{ 0,1 \}^* </math>,  
<math>v </math>, powiedzmy w porządku wojskowym, i
<math>v </math>, powiedzmy w porządku wojskowym: <math> \varepsilon = v_0, v_1, v_2, \ldots </math>
symuluje działanie <math> U </math> na <math> v </math>.
i  symuluje działanie <math> U </math> na <math> v_i </math> ruchem zygzakowym, podobnie jak
Oczywiście każda z tych maszyn może się zapętlić, dlatego <math> T </math>
w dowodzie Faktu.
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 <math> v_0, v_1, v_2, \ldots </math>, a <math>{\cal W} (u_i) </math> oznacza:
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,
to plan działania maszyny <math> T </math> można przedstawić


<center><math>
{\cal W} (v_0 ) \, {\cal W} (v_1 ) \, {\cal W} (v_0 ) \, {\cal W} (v_1 ) \, {\cal W} (v_2 ) \,
\, {\cal W} (v_0 ) \, {\cal W} (v_1 ) \, {\cal W} (v_2 ) \,
{\cal W} (v_3) \, {\cal W} (v_0 ) \dots
</math></center>


W trakcie swojego obliczenia, maszyna <math> T </math> utrzymuje zmienną, powiedzmy
W trakcie swojego obliczenia, maszyna <math> T </math> utrzymuje zmienną, powiedzmy

Wersja z 18:55, 22 sty 2007

Stała Chaitina

Tak jak w poprzednim wykładzie, ustalamy jakieś bezprefiksowe kodowanie maszyn Turinga oraz bezprefiksową maszynę uniwersalną U.

Definicja [Stała Chaitina]

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


Stałą Chaitina można interpretować jako prawdopodobieństwo, że losowo wybrane dane dla maszyny U spowodują jej zatrzymanie; innymi słowy, że losowo wybrany program (z danymi) się zatrzymuje.

Dokładniej, rozważmy zbiór nieskończonych ciągów zero-jedynkowych, {0,1}ω. Dla w1wn{0,1}n, określamy

p(w1wn{0,1}ω)=12n,

w szczególności p({0,1}ω)=1. Funkcję p można rozszerzyć na Borelowskie podzbiory {0,1}ω tak, by stanowiła prawdopodobieństwo. Prawdopodobieśtwo to możemy też określić patrząc na ciąg x{0,1}ω jak na wynik nieskończonego procesu Bernoulliego X1,X2,, gdzie p(Xi=0)=p(Xi=1)=12.

W szczególności Ω stanowi prawdopodobieństwo zdarzenia, że ciąg x{0,1}ω zawiera prefiks v, dla którego U(v) (z bezprefiksowości wynika, że jest co najwyżej jeden taki prefiks). 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. Ponieważ zbiór

L(U)={w:U(w)}

jest bezprefiksowy, każdy skończony podzbiór 𝒮L(U), tworzy kod bezprefiksowy, a zatem z nierówności Krafta spełnia nierówność x𝒮2|x|1, co po przejściu do supremum daje żądaną nierówność.

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.


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

0.ω1ω2ωnx𝒮n2|x|

(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 w, |w|=n, maszyna T symuluje działanie U na w, a równolegle przegląda kolejne słowa z {0,1}*, v, powiedzmy w porządku wojskowym: ε=v0,v1,v2, i symuluje działanie U na vi ruchem zygzakowym, podobnie jak w dowodzie Faktu.


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

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

(i) T stwierdza, że U(w); wtedy daje odpowiedź TAK.

(ii) T stwierdza, że

0.ω1ω2ωnv𝒮2|v|,

ale w∉𝒮; 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)=ω1ω2ωn,

stanowi pierwsze n cyfr rozwinięcia binarnego Ω, dla pewnego n. Niech

Ωn=ω1ω2ω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 słowa y i symuluje działanie na U na y, gromadząc w zmiennej 𝒮' te słowa y, dla których obliczenie już się zakończyło. Dodatkowo, dla każdego y𝒮, R zapamiętuje U(y). Pamiętamy, że wykluczyliśmy już możliwość podwójnej reprezentacji Ω. Dlatego też, po pewnym skończonym czasie R stwierdzi, że

y𝒮2|y|Ωn.

Niech v będzie pierwszym w porządku wojskowym słowem takim, że vU(y), dla każdego y𝒮. 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łą.