Teoria informacji/TI Wykład 13

Złożonośc informacyjna Kołmogorowa
Odwołajmy się do codziennego doświadczenia. Chyba każdy się zgodzi, że niektóre liczby można zapamiętać łatwiej niż inne i nie zależy to tylko od wielkości liczby. Bez trudu zapamiętamy liczbę czy nawet
natomiast zapamietanie 20 ,,losowych" cyfr sprawi nam kłopot. No, chyba, że to będą np.
31415926535897932384
wtedy, nawet jeśli nie ,,trzymamy" tych cyfr w pamięci, możemy je w razie potrzeby odtworzyć, np. korzystając z formuły Leibniza .
Nie inaczej ma się sprawa z tekstami. Mamy swiadomość, że przy odpowiednim nakładzie pracy i czasu potrafilibyśmy się nauczyć na pamięć wybranej księgi ,,Pana Tadeusza" (a może nawet całego poematu), natomiast zapamietanie -- powiedzmy -- 10 stron ,,losowych" symboli wydaje się przekraczać możliwości zwykłego człowieka. No chyba, że znowu -- znaleźlibyśmy jakiś ,,klucz", na przykład okazałoby się, ze jest to tekst w obcym języku, którego jednak jesteśmy w stanie się nauczyć.
Jakie pojęcia matematyczne kryją się za tym zjawiskiem? W przypadku liczb odpowiedź jest stosunkowo prosta: niektóre liczby całkowite można opisać znacznie krócej niż podając ich rozwinięcia dziesiętne; wystarczy wtedy zapamiętać ów krótszy ,,opis". W pierwszym przybliżeniu, za złożoność liczby bylibysmy więc skłonni uznać długość jej najkrótszego opisu. Jednak widzieliśmy już na pierwszym wykładzie, że takie postawienie sprawy prowadzi do paradoksu Berry'ego, dlatego też wprowadziliśmy wtedy pojęcie notacji.
A jednak - po lepszym zrozumieniu - idea najktótszego opisu prowadzi do sensownej miary złożoności, którą przedstawimy na tym wykładzie.
Przyjmiemy, że obiekty, które chcemy opisywać, to słowa nad alfabetem ; zarówno liczby naturalne, jak też słowa nad większymi alfabetami można łatwo sprowadzić do tego przypadku.
Ideą Kołmogorowa było, by za złożoność słowa przyjąć długość najkrótszego programu generującego to słowo, przy wybranym języku programowania, np. języku Pascal. W istocie Kołmogorow nie użył języka Pascal, lecz uniwersalnej maszyny Turinga, jednak -- jak wkrótce się przekonamy -- wybór ten nie ma większego znaczenia, podobnie jak zresztą wybór innego języka programowania (np. C++ zamiast Pascala).
Zakładamy, że Czytelnik jest zaznajomiony z pojęciem maszyny Turinga, choć nie będziemy go uzywać bardzo intensywnie -- jeśli ktoś woli, może nadal myśleć o ulubionym języku programowania. Ważną własnością maszyn Turinga jest, że można je kodować za pomocą słów binarnych, jedno z wielu możliwych kodowań opisane jest w pierwszym wykładzie z Złożoności obliczeniowej. Nie jest przy tym trudno zagwarantować, by kodowanie było bezprefiksowe (tzn. żaden kod nie jest właściwym prefiksem innego).
Zakładając ustalone kodowanie, Turing podał konstrukcję maszyny uniwersalnej, tj. maszyny o następujących własnościach (zob. Języki, automaty i obliczenia, Wykład 12):
(1) jeśli na wejściu jest , gdzie jest kodem pewnej maszyny , to symuluje działanie na .
W szczególności
(1a) jeśli się zatrzymuje, to też się zatrzymuje z tym samym wynikiem, który oznaczamy (),
(1b) jeśli się zapętla, to też się zapętla.
(2) jeśli słowo wejściowe nie ma prefiksu będącego kodem maszyny, to się zapętla.
Zauważmy, że w powyższej definicji słowo może być puste; wtedy symuluje działanie startującej przy pustej taśmie. Właśnie ten przypadek będzie nas szczególnie interesował.
Definicja [Złożoność Kołmogorowa]
Innymi słowy, jest najkrótszym kodem maszyny, która generuje startując z pustej taśmy.
Na pierwszy rzut oka definicja ta istotnie zależy od wyboru kodowania. Istotnie, przyjmując inne
kodowanie, moglibyśmy otrzymać inną maszynę uniwersalną i w konsekwencji
inną wartość . Okazuje się jednak, że nie polepszymy w ten sposób
złożoności Kołmogorowa więcej niż o stałą (zależną od i , ale
nie od .
Fakt
Wtedy istnieje taka stała , że
dla każdego .
Dowód
Niech oznacza kod maszyny . Wtedy, zgodnie z definicją , , dla każdego , dla którego którakolwiek ze stron jest określona. Mamy więc
Wystarczy więc przyjąć .

Wniosek 1
(być może dla różnych kodowań), to istnieje stała , że K_U (x) \leq K_{U'} (x) + c_{UU'}
</math>dla każdego .
Dowód
W powyższym fakcie wystarczy przyjąć za modyfikację maszyny , która zatrzymuje się tylko wtedy, gdy wejście jest dokładnie kodem pewnej maszyny Turinga (w sensie kodowania dla ).

Wniosek 2
Dowód