Teoria informacji/TI Wykład 14: Różnice pomiędzy wersjami
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 | ||
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ą . 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
(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ść (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ę 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.
Niechi niech
Jeśli wybierzemy wariant (a), lub jeśli nie jest dwójkowo wymierna, to 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 symuluje działanie na dla wszystkich maszyn , takich, że (np. korzystając z maszyny uniwersalnej), w celu wyznaczenia zbioru . Oczywiście każda z tych maszyn może się zapętlić, dlatego 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.