Nierówność Krafta-McMillana
W teorii kodowania nierówność Krafta -McMillana daje warunek konieczny i wystarczający na istnienie kodu przedrostka (w wersji Leona G. Krafta) lub kodu jednoznacznie dekodowalnego (w wersji Brockwaya McMillana ) dla danego zestawu długości słów kodowych . Jego zastosowania do kodów prefiksów i drzew często znajdują zastosowanie w informatyce i teorii informacji .
Nierówność Krafta została opublikowana w Kraft (1949) . Jednak artykuł Krafta omawia tylko kody przedrostków i przypisuje analizę prowadzącą do nierówności Raymondowi Redhefferowi . Wynik został niezależnie odkryty w McMillan (1956) . McMillan udowadnia wynik dla ogólnego przypadku jednoznacznie dekodowalnych kodów i przypisuje wersję kodów prefiksów obserwacji mówionej z 1955 roku przez Josepha Leo Dooba .
Zastosowania i intuicje
Nierówność Krafta ogranicza długości słów kodowych w kodzie prefiksu : jeśli przyjmiemy wykładniczą długość każdego ważnego słowa kodowego, wynikowy zestaw wartości musi wyglądać jak funkcja masy prawdopodobieństwa , to znaczy musi mieć całkowitą miarę mniejszą lub równą do jednego. Nierówność Krafta można traktować w kategoriach ograniczonego budżetu, który można wydać na słowa kodowe, przy czym krótsze słowa kodowe są droższe. Wśród użytecznych właściwości wynikających z nierówności znajdują się następujące stwierdzenia:
- Jeśli nierówność Krafta zachodzi przy ścisłej nierówności, kod ma pewną redundancję .
- Jeśli nierówność Krafta zachodzi z równością, dany kod jest pełnym kodem.
- Jeśli nierówność Krafta nie jest spełniona, kod nie jest jednoznacznie dekodowalny .
- Dla każdego jednoznacznie dekodowalnego kodu istnieje kod prefiksu o takim samym rozkładzie długości.
Oświadczenie formalne
Niech każdy symbol źródłowy z alfabetu
być zakodowany w unikalny kod dekodowalny w alfabecie o długości słowa kodowego
Następnie
I odwrotnie, dla danego zbioru liczb naturalnych \ jednoznacznie dekodowalny kod w alfabecie o takich długościach słowa kodowego.
Przykład: drzewa binarne
Każde drzewo binarne można postrzegać jako definiujące kod prefiksu dla liści drzewa. Stwierdza to nierówność Krafta
Tutaj suma jest przejmowana przez liście drzewa, czyli węzły bez dzieci. Głębokość to odległość do węzła głównego. W drzewie po prawej stronie jest ta suma
Dowód
Dowód dla kodów prefiksów
Najpierw pokażmy, że nierówność Krafta zachodzi zawsze, gdy kod dla przedrostkowym.
Załóżmy, że . Niech będzie pełnym drzewem głębokości (a więc każdy węzeł na poziomie ma dzieci, podczas gdy węzły na poziomie ). Każde słowo o długości -ary alfabetu odpowiada węzłowi w tym drzewie na głębokości ℓ . ja th słowo w kodzie prefiksu odpowiada węzłowi ; pozwalać zbiorem wszystkich węzłów liści (tj. węzłów na głębokości zakorzeniony w . To poddrzewo ma wysokość , mamy
Ponieważ kod jest kodem prefiksu, te poddrzewa nie mogą współdzielić żadnych liści, co oznacza, że
, że całkowita liczba węzłów na głębokości wynosi , r }
z czego wynika wynik.
I odwrotnie, biorąc pod uwagę dowolną uporządkowaną sekwencję liczb naturalnych ,
przedrostka o długości słowa kodowego równej każdemu, dowolnie słowo o długości wykluczając wszystkie słowa o większej długości, które mają to jako przedrostek. Ponownie zinterpretujemy to w kategoriach węzłów liściowych drzewa głębokości \ Najpierw wybierz dowolny węzeł z pełnego drzewa na głębokości ; odpowiada pierwszemu słowu naszego nowego kodu. Ponieważ budujemy kod prefiksu, wszyscy potomkowie tego węzła (tj. wszystkie słowa, które mają to pierwsze słowo jako prefiks) stają się nieodpowiednie do włączenia do kodu. Rozważamy potomków na głębokości . Węzły liści wśród potomków) są z rozważań Następna iteracja wybiera (ocalały) węzeł na głębokości i usuwa tak dalej Po łącznie
węzły. Pytanie brzmi czy musimy usunąć więcej węzłów liści, niż faktycznie mamy dostępnych - w procesie budowania kodu. Ponieważ zachodzi nierówność Krafta, rzeczywiście mamy
iw ten sposób można zbudować kod prefiksu. Należy zauważyć, że ponieważ wybór węzłów na każdym etapie jest w dużej mierze arbitralny, ogólnie można zbudować wiele różnych odpowiednich kodów prefiksów.
Dowód przypadku ogólnego
Teraz udowodnimy, że nierówność Krafta zachodzi zawsze, gdy jednoznacznie dekodowalnym. (Nie trzeba udowadniać odwrotności, ponieważ udowodniliśmy to już dla kodów prefiksów, co jest silniejszym twierdzeniem).
Oznacz do . Ideą dowodu jest uzyskanie górnej granicy dla dla wszystkich } gdyby do . Przepisz jako
Rozważ wszystkie m -moce , w postaci słów , gdzie to indeksy między 1 a . Zauważ, że od czasu S s implikuje . Oznacza to odpowiada dokładnie jednemu słowu w . To pozwala nam przepisać równanie na
gdzie to liczba słów kodowych o długości i to długość najdłuższego słowa kodowego w . Dla alfabetu są tylko możliwe długości , więc . Korzystając z tego, wyznaczamy górną granicę :
Biorąc , otrzymujemy
Ta granica obowiązuje dla dowolnego . Prawa strona to 1 asymptotycznie, więc musi się trzymać ( w przeciwnym razie nierówność zostałaby złamana na wystarczająco dużą skalę ).
Alternatywna konstrukcja dla konwersacji
Biorąc pod uwagę ciąg liczb naturalnych,
spełniając nierówność Krafta, możemy skonstruować kod przedrostka w następujący sposób. Zdefiniuj i- te słowo kodowe, do ja , jako pierwsze po punkcie podstawy (np. Przecinek dziesiętny) w podstawowej reprezentacji r ℓ
Zauważ, że według nierówności Krafta suma ta nigdy nie jest większa niż 1. Stąd słowa kodowe przechwytują całą wartość sumy. Dlatego dla j > ja , pierwsze C j tworzą większą liczbę niż C ja , więc kod jest wolny .
Notatki
- Kraft, Leon G. (1949), Urządzenie do kwantyzacji, grupowania i kodowania impulsów z modulacją amplitudy , Cambridge, MA: MS Thesis, Electrical Engineering Department, Massachusetts Institute of Technology , hdl : 1721.1/12390 .
- McMillan, Brockway (1956), „Dwie nierówności wynikające z wyjątkowej możliwości rozszyfrowania”, IEEE Trans. Inf. Teoria , 2 (4): 115–116, doi : 10.1109/TIT.1956.1056818 .