Kraft – McMillanova nerovnost - Kraft–McMillan inequality
v teorie kódování, Kraft – McMillanova nerovnost dává nezbytnou a dostatečnou podmínku pro existenci a kód předpony[1] (ve verzi Leon G. Kraft) nebo jedinečně dekódovatelný kód (v Brockway McMillan verze pro danou sadu kódové slovo délky. Jeho aplikace pro prefixové kódy a stromy často nacházejí použití v počítačová věda a teorie informace.
Kraftova nerovnost byla zveřejněna v Kraft (1949). Kraftův článek však pojednává pouze o předponových kódech a připisuje analýze vedoucí k nerovnosti Raymond Redheffer. Výsledek byl nezávisle objeven v McMillan (1956). McMillan dokazuje výsledek pro obecný případ jednoznačně dekódovatelných kódů a verzi pro prefixové kódy připisuje mluvenému pozorování v roce 1955 Joseph Leo Doob.
Aplikace a intuice
Kraftova nerovnost omezuje délky kódových slov v a kód předpony: pokud si člověk vezme exponenciální délky každého platného kódového slova musí výsledná sada hodnot vypadat jako a funkce pravděpodobnostní hmotnosti, to znamená, že musí mít celkovou míru menší nebo rovnou jedné. Kraftovu nerovnost lze považovat za omezený rozpočet na kódová slova, přičemž kratší kódová slova jsou dražší. Mezi užitečné vlastnosti vyplývající z nerovnosti patří následující prohlášení:
- Pokud Kraftova nerovnost platí s přísnou nerovností, kód nějaké má nadbytek.
- Pokud Kraftova nerovnost platí s rovností, jedná se o úplný kód.
- Pokud Kraftova nerovnost neplatí, kód není jedinečně dekódovatelné.
- Pro každý jednoznačně dekódovatelný kód existuje předponový kód se stejnou distribucí délky.
Formální prohlášení
Nechte každý zdrojový symbol z abecedy
být zakódovány do jednoznačně dekódovatelného kódu v abecedě velikosti s délkou kódového slova
Pak
Naopak pro danou množinu přirozených čísel uspokojující výše uvedenou nerovnost, existuje jednoznačně dekódovatelný kód přes abecedu velikosti s těmi délkami kódového slova.
Příklad: binární stromy

Žádný binární strom lze považovat za definování kódu předpony pro listy stromu. Kraftova nerovnost to říká
Zde je součet převzat listy stromu, tj. Uzly bez dětí. Hloubka je vzdálenost od kořenového uzlu. Ve stromu vpravo je tento součet
Důkaz
Důkaz kódů předpony

Nejprve si ukážeme, že Kraftova nerovnost platí kdykoli je kód předpony.
Předpokládejme to . Nechat být plný -ary strom hloubky (tedy každý uzel na úrovni má děti, zatímco uzly na úrovni jsou listy). Každé dlouhé slovo přes -ary abeceda odpovídá uzlu v tomto stromu v hloubce . The th slovo v kód předpony odpovídá uzlu ; nechat být množina všech listových uzlů (tj. uzlů v hloubce ) v podstromu zakořeněné v . Ten podstrom je výškový , my máme
Protože kód je kód předpony, tyto podstromy nemohou sdílet žádné listy, což znamená, že
Tedy vzhledem k tomu, že celkový počet uzlů v hloubce je , my máme
z čehož vyplývá výsledek.
Naopak vzhledem k jakékoli seřazené posloupnosti přirozená čísla,
uspokojující Kraftovu nerovnost lze vytvořit kód předpony s délkou kódového slova rovnou každé výběrem slova délky libovolně, poté vyloučit všechna slova větší délky, která mají předponu. Znovu to budeme interpretovat jako listové uzly -ary strom hloubky . Nejprve vyberte libovolný uzel z celého stromu v hloubce ; odpovídá prvnímu slovu našeho nového kódu. Protože vytváříme kód předpony, všichni potomci tohoto uzlu (tj. Všechna slova, která mají toto první slovo jako předponu) se stanou nevhodnými pro zahrnutí do kódu. Uvažujeme o potomcích do hloubky (tj. uzly listů mezi potomky); existují takové potomky uzlů, které jsou odebrány z úvahy. Další iterace vybere (přežívající) uzel v hloubce a odstraní další listové uzly atd. Po iterací jsme odstranili celkem
uzly. Otázkou je, zda musíme odstranit více listových uzlů, než ve skutečnosti máme k dispozici - celkem - v procesu vytváření kódu. Protože Kraftova nerovnost platí, máme
a tak lze vytvořit předponový kód. Vzhledem k tomu, že výběr uzlů v každém kroku je do značné míry libovolný, lze obecně vytvořit mnoho různých vhodných předponových kódů.
Důkaz obecného případu
Nyní dokážeme, že Kraftova nerovnost platí kdykoli je jednoznačně dekódovatelný kód. (Konverznost nemusí být prokázána, protože jsme ji již prokázali u kódů předpon, což je silnější tvrzení.)
Označit . Myšlenkou důkazu je získat horní hranici pro a ukázat, že může platit pouze pro všechny -li . Přepsat tak jako
Zvažte vše m- síly , ve formě slov , kde jsou indexy mezi 1 a . Všimněte si, že, protože S byl považován za jednoznačně dekódovatelný, naznačuje . To znamená, že každý součet odpovídá přesně jednomu slovu . To nám umožňuje přepsat rovnici na
kde je počet kódových slov v délky a je délka nejdelšího kódového slova v . Pro - abeceda písmen existuje pouze možná dlouhá slova , tak . Pomocí toho jsme horní mez :
Užívání -tý kořen, máme
Tato vazba platí pro všechny . Pravá strana je 1 asymptoticky, takže musí držet (jinak by byla nerovnost dostatečně velká ).
Alternativní konstrukce pro konverzaci
Vzhledem k posloupnosti přirozená čísla,
uspokojením Kraftovy nerovnosti můžeme zkonstruovat kód předpony následovně. Definujte ith kódové slovo, Ci, být první číslice za bod radixu (např. desetinná čárka) v základně r zastoupení
Všimněte si, že podle Kraftovy nerovnosti není tento součet nikdy větší než 1. Proto kódová slova zachycují celou hodnotu součtu. Proto pro j > i, první číslice Cj tvoří větší počet než Ci, takže kód je bez předpony.
Poznámky
- ^ Cover, Thomas M .; Thomas, Joy A. (2006), „Komprese dat“, Základy teorie informace (2. vyd.), John Wiley & Sons, Inc, str. 108–109, doi:10.1002 / 047174882X.ch5, ISBN 978-0-471-24195-9
Reference
- Kraft, Leon G. (1949), Zařízení pro kvantování, seskupování a kódování pulzů modulovaných amplitudou, Cambridge, MA: MS Thesis, Katedra elektrotechniky, Massachusetts Institute of Technology, hdl:1721.1/12390.
- McMillan, Brockway (1956), „Dvě nerovnosti vyplývající z jedinečné dešifrovatelnosti“, IEEE Trans. Inf. Teorie, 2 (4): 115–116, doi:10.1109 / TIT.1956.1056818.