Teoria informacji/TI Wykład 1
Je n’ai fait celle-ci plus longue que parce que je n’ai pas eu le loisir de la faire plus courte.
(Napisałem ten list trochę dłuższy, gdyż nie miałem czasu napisać go krócej).
Blaise Pascal, Lettres provinciales, 1657
Notacja, co to takiego?
Zaczynamy od prostego eksperymentu: Odgadnij słowo o którym ktoś myśli – na przykład zgadując literę po literze. Czy będzie to równie łatwe w przypadku odgadywania liczby? Zauważmy że w przeciwieństwie do słów w języku naturalnym, liczby całkowite w systemie dziesiętnym są „ciasno upakowane”. Dowolny ciąg znaków ze zbioru {0, 1, …, 9} jest jakąś liczbą (o ile nie zaczyna się od zera), ale bardzo niewiele ciągów z liter {a, b, …, z} jest sensownymi słowami. Wynika to między innymi z tego że nasze „algorytmy” do komunikacji za pomocą słów wymagają znacznie więcej redundancji niż te do operowania liczbami. Tę redundancję szczególnie widać gdy jest ona wykorzystywana celowo:
Przykład: Wypełniając czek wpisujemy kwotę zarówno przy pomocy liczb, jak i słownie. Zajmuje to oczywiście znacznie więcej miejsca, ale dzięki temu małe przekłamanie nie zmienia wpisanej kwoty.
Teoria informacji charakteryzuje w sposób matematyczny sposoby zapisywania, transmitowana i odtwarzania informacji. W szczególności zajmuje się godzeniem dwóch przeciwstawnych celów:
- zapisywania wiadomości jak najzwięźlej
- chronienia wiadomości przed przekłamaniami podczas transmisji
Zacznijmy od podstaw. Czy istnieją wiadomości których nie da się zapisać zwięźlej? Dowolną wiadomość możemy traktować jako ciąg bitów, czyli po prostu liczbę naturalną. Istnieje wiele sposobów zapisu liczb, i zajmowanie się wszystkimi naraz prowadzi do paradoksów. Rozważmy przykładowe zdanie (paradoks Berrego):
Niech n będzie najmniejszą liczbą naturalną której nie da się zdefiniować za pomocą mniej niż dwudziestu słów.
Dwadzieścia słów można dobrać tylko na skończenie wiele sposobów. Nawet gdyby każdy sposób definiował inną liczbę, pozostaje nieskończenie wiele liczb których zdefiniować tak się nie daje. Wśród nich któraś jest najmniejsza, i właśnie ją zdefiniowaliśmy za pomocą mniej niż dwudziestu słów – sprzeczność.
Istotne jest zatem prawidłowe zdefiniowanie notacji, która służy nam do definiowania liczb. Notacja nie może być częścią badanego obiektu. Musi być czymś zewnętrznym, nadanym w celu rozróżniania pomiędzy obiektami.
Definicja:
Notacją dla S nazywamy dowolną różnowartościową funkcję gdzie jest skończonym alfabetem.
Fakt: Jeśli i to dla pewnego zachodzi:
Dowód: Ciągów znaków z o długości mniejszej niż k jest:
Podstawiając stwierdzamy że nie ma wystarczająco wiele ciągów krótszych niż k do oznaczenia wszystkich elementów S. QED.
Wniosek: Jeśli jest dowolną notacją dla liczb naturalnych, to dla nieskończenie wielu n musi zajść:
Dowód: Wybierzmy m takie że . Z powyższego Faktu, dla pewnego mamy . Z tego wynika również że .
Wybierzmy teraz m’ takie że . Znów musi istnieć takie że . Analogicznie . I tak dalej. QED.
Jako zastosowanie, możemy podać teorioinformacyjny dowód znanego faktu:
Fakt (Euklides): Istnieje nieskończenie wiele liczb pierwszych.
Dowód: Załóżmy przeciwnie, że istnieje tylko M liczb pierwszych: . Wprowadzamy notację w następujący sposób: Dla niech
gdzie jest zwykłym zapisem binarnym liczby (a więc ).
Ponieważ , mamy , dla wszystkich i. A zatem
dla wszystkich n, co oczywiście przeczy twierdzeniu że dla nieskończenie wielu n . QED
Kody
Niektóre własności notacji mają szczególne znaczenie dla ich praktycznego zastosowania. Przyjrzyjmy się na przykład co się dzieje jeśli w naturalny sposób rozszerzymy notację do morfizmu :
Mając dany wynikowy ciąg znaków, kluczowe znaczenie ma czy potrafimy odtworzyć jednoznacznie ciąg argumentów.
Definicja: Odwzorowanie dla skończonego niepustego zbioru S jest kodem, jeśli jego naturalne rozszerzenie do morfizmu jest różnowartościowe. Mówimy że kod jest bezprefiksowy jeśli dodatkowo dla .
Jak widać własność bezprefiksowości zależy wyłącznie od postaci zbioru . Ponadto dla każdego kodu .
Łatwo zauważyć że każdy zbiór bezprefiksowy jest kodem. Istnieją oczywiście kody które nie są bezprefiksowe (np. dla ), a nie każda notacja jest kodem (np. dla ).
W dalszej części będziemy omijać daszek i utożsamiać z .
Aby kodować zbiór S o m elementach za pomocą alfabetu o r elementach (dla ), wystarczy oczywiście używać ciągów długości . Wtedy , dla dowolnego .
Czasem możemy jednak wymyśleć bardziej efektywne kodowanie. Jeśli wiemy że jakieś obiekty z S pojawiają się częściej, możemy im przyporządkować krótsze ciągi znaków. W ten sposób średnio możemy uzyskać mniejsze .
Bliską analogią jest tu Gra w 20 pytań. W tej grze jedna osoba wymyśla obiekt o (w domyśle z jakiegoś dużego zbioru możliwości S), a druga osoba stara się zgadnąć jaki to obiekt przez zadawanie pytań (np. co najwyżej 20), na które odpowiedzą może być tylko tak lub nie. Tym samym pytania są tak naprawdę postaci ?, gdzie .
Łatwo zauważyć że pytań wystarczy do zidentyfikowania dowolnego obiektu w S. Czy da się to zrobić lepiej? W ogólności oczywiście nie. Dowolną strategię zadawania pytań możemy sobie wyobrazić jako drzewo binarne, z pytaniem w każdym wierzchołku i rozwiązaniami w liściach. Jeśli liści jest , to drzewo musi oczywiście mieć głębokość co najmniej k. Jednak jeśli niektóre rozwiązania są bardziej prawdopodobne niż inne, możemy zmniejszyć oczekiwaną liczbę pytań. (Faktycznie dopiero taka wersja tej gry jest interesująca.)
- przykład
Zapiszmy to formalnie. Drzewem nad zbiorem X, (albo krócej 'X-drzewem'), będziemy nazywać dowolny niepusty zbiór zamknięty na operację brania prefiksu. Relację bycia prefiksem będziemy oznaczać przez . W X-drzewie dowolny element w jest węzłem rzędu |w|, jest korzeniem, -maksymalne węzły są liśćmi. Dodatkowo będziemy posługiwać się następującymi pojęciami: dla dowolnego , i :
- wx jest bezpośrednim następnikiem (lub dzieckiem) w
- wv jest poniżej w
- zbiór nazywamy poddrzewem indukowanym przez w
Korzystając z tych definicji, możemy powiedzieć że dowolny bezprefiksowy kod indukuje drzewo nad : :.
W drugą stronę, dowolne drzewo z |S| liśćmi indukuje bezprefiksowy kod nad S (z dokładnością do permutacji elementów zbioru S).