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 87: Linia 87:
(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>).


Opiszemy teraz działanie maszyny <math> T </math> na wejściu <math> \langle M \rangle </math>.
Opiszemy teraz działanie maszyny <math> T </math>. Jak zwykle w takich przypadkach, opiszemy
Niech <math> n = | \langle M \rangle | </math>.
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, <math> T </math> je odrzuca.
Przypuśćmy, że na wejściu jest <math> \langle M \rangle </math>;
niech <math> n = | \langle M \rangle | </math>.
Maszyna <math> T </math> symuluje działanie <math> M </math> na <math> \varepsilon </math>
Maszyna <math> T </math> symuluje działanie <math> M </math> na <math> \varepsilon </math>
(tzn. na pustej taśmie), a także  
(tzn. na pustej taśmie), a także  
symuluje działanie <math> M' </math> na <math> \varepsilon </math> dla wszystkich maszyn <math> M' </math>,
symuluje działanie <math> M' </math> na <math> \varepsilon </math> dla wszystkich maszyn <math> M' </math>,
takich, że  <math> \langle M' \rangle \leq n </math> (np. korzystając z maszyny uniwersalnej), w celu wyznaczenia zbioru <math>{\cal S}_n </math>.
takich, że  <math> \langle M' \rangle \leq n </math> (np. korzystając z maszyny uniwersalnej), w celu wyznaczenia zbioru <math>{\cal S}_n </math>. Oczywiście każda z tych maszyn może się zapętlić, dlatego <math> T </math>
nie może ich symulować ,,po kolei"; zamiast tego wykonuje na przemian po jednej (kolejnej) instrukcji
symulowanych maszyn. (Zauważmy na marginesie, żę metodę można stosować także wtedy, gdy zbiór symulowanych
maszyn nie jest ''a priori'' ograniczony.) 


Ad 3.}}
Ad 3.}}

Wersja z 22:00, 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ą 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

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ść (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ę 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
𝒮={n:(M)M(ε)|M|=n}

i niech

𝒮n=𝒮{0,1,,n}

Jeśli wybierzemy wariant (a), lub jeśli Ω nie jest dwójkowo wymierna, to liczba wyznaczona przez pierwszych n cyfr Ω przedstawia się

0.ω1ω2ωn=i𝒮n2i

(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 symuluje działanie M na ε dla wszystkich maszyn M, takich, że Mn (np. korzystając z maszyny uniwersalnej), w celu wyznaczenia zbioru 𝒮n. Oczywiście każda z tych maszyn może się zapętlić, dlatego T nie może ich symulować ,,po kolei"; zamiast tego wykonuje na przemian po jednej (kolejnej) instrukcji symulowanych maszyn. (Zauważmy na marginesie, żę metodę można stosować także wtedy, gdy zbiór symulowanych maszyn nie jest a priori ograniczony.)

Ad 3.