Неравенство Крафта–Макмиллана

В теории кодирования неравенство Крафта–Макмиллана дает необходимое и достаточное условие для существования префиксного кода [1] (в версии Леона Г. Крафта) или однозначно декодируемого кода (в версии Броквея Макмиллана ) для заданного набора длин кодовых слов . Его приложения к префиксным кодам и деревьям часто находят применение в информатике и теории информации . Префиксный код может содержать как конечное, так и бесконечное число кодовых слов.

Неравенство Крафта было опубликовано в Kraft (1949). Однако статья Крафта рассматривает только префиксные коды и приписывает анализ, приведший к неравенству, Рэймонду Редхефферу . Результат был независимо обнаружен в McMillan (1956). McMillan доказывает результат для общего случая однозначно декодируемых кодов и приписывает версию для префиксных кодов устному наблюдению в 1955 году Джозефа Лео Дуба .

Приложения и интуиции

Неравенство Крафта ограничивает длину кодовых слов в префиксном коде : если взять экспоненту длины каждого допустимого кодового слова, то результирующий набор значений должен выглядеть как функция массы вероятности , то есть он должен иметь общую меру, меньшую или равную единице. Неравенство Крафта можно рассматривать в терминах ограниченного бюджета, который должен быть потрачен на кодовые слова, причем более короткие кодовые слова являются более дорогими. Среди полезных свойств, вытекающих из неравенства, есть следующие утверждения:

  • Если неравенство Крафта выполняется при строгом неравенстве, то код имеет некоторую избыточность .
  • Если неравенство Крафта выполняется с равенством, то рассматриваемый код является полным кодом. [2]
  • Если неравенство Крафта не выполняется, то код не поддается однозначному декодированию .
  • Для каждого уникально декодируемого кода существует префиксный код с таким же распределением длины.

Официальное заявление

Пусть каждый исходный символ из алфавита

С = { с 1 , с 2 , , с н } {\displaystyle S=\{\,s_{1},s_{2},\ldots ,s_{n}\,\}}

быть закодировано в уникально декодируемый код по алфавиту размером с кодовыми словами длиной г {\displaystyle r}

1 , 2 , , н . {\displaystyle \ell _{1},\ell _{2},\ldots,\ell _{n}.}

Затем

я = 1 н г я 1. {\displaystyle \sum _{i=1}^{n}r^{-\ell _{i}}\leqslant 1.}

И наоборот, для заданного набора натуральных чисел, удовлетворяющего указанному выше неравенству, существует однозначно декодируемый код над алфавитом размера с указанными длинами кодовых слов. 1 , 2 , , н {\displaystyle \ell _{1},\ell _{2},\ldots,\ell _{n}} г {\displaystyle r}

Пример: бинарные деревья

9, 14, 19, 67 и 76 — листовые узлы на глубине 3, 3, 3, 3 и 2 соответственно.

Любое бинарное дерево можно рассматривать как определение префиксного кода для листьев дерева. Неравенство Крафта утверждает, что

листья 2 глубина ( ) 1. {\displaystyle \sum _{\ell \in {\text{листья}}}2^{-{\text{глубина}}(\ell )}\leqslant 1.}

Здесь сумма берется по листьям дерева, т.е. узлам без дочерних узлов. Глубина — это расстояние до корневого узла. В дереве справа эта сумма равна

1 4 + 4 ( 1 8 ) = 3 4 1. {\displaystyle {\frac {1}{4}}+4\left({\frac {1}{8}}\right)={\frac {3}{4}}\leqslant 1.}

Доказательство

Доказательство для префиксных кодов

Пример для бинарного дерева. Красные узлы представляют префиксное дерево. Показан метод расчета количества дочерних листовых узлов в полном дереве.

Сначала покажем, что неравенство Крафта выполняется всякий раз, когда код является префиксным кодом. С {\displaystyle S}

Предположим, что . Пусть будет полным -арным деревом глубины (таким образом, каждый узел на уровне имеет дочерние элементы, в то время как узлы на уровне являются листьями). Каждое слово длины над -арным алфавитом соответствует узлу в этом дереве глубиной . Слово th в префиксном коде соответствует узлу ; пусть будет множеством всех листовых узлов (т.е. узлов глубиной ) в поддереве с корнем в . Это поддерево имеет высоту , мы имеем 1 2 н {\displaystyle \ell _{1}\leqslant \ell _{2}\leqslant \cdots \leqslant \ell _{n}} А {\displaystyle А} г {\displaystyle r} н {\displaystyle \ell _{n}} А {\displaystyle А} < н {\displaystyle <\ell _{n}} г {\displaystyle r} н {\displaystyle \ell _{n}} н {\displaystyle \ell \leqslant \ell _ {n}} г {\displaystyle r} {\displaystyle \ell } я {\displaystyle я} в я {\displaystyle v_{i}} А я {\displaystyle A_{i}} н {\displaystyle \ell _{n}} А {\displaystyle А} в я {\displaystyle v_{i}} н я {\displaystyle \ell _{n}-\ell _{i}}

| А я | = г н я . {\displaystyle |A_{i}|=r^{\ell _{n}-\ell _{i}}.}

Поскольку код является префиксным, эти поддеревья не могут иметь общих листьев, что означает, что

А я А дж = , я дж . {\displaystyle A_{i}\cap A_{j}=\varnothing ,\quad i\neq j.}

Таким образом, учитывая, что общее количество узлов на глубине равно , имеем н {\displaystyle \ell _{n}} г н {\displaystyle r^{\ell _{n}}}

| я = 1 н А я | = я = 1 н | А я | = я = 1 н г н я г н {\displaystyle \left|\bigcup _{i=1}^{n}A_{i}\right|=\sum _{i=1}^{n}|A_{i}|=\sum _{i=1}^{n}r^{\ell _{n}-\ell _{i}}\leqslant r^{\ell _{n}}}

из чего следует результат.

И наоборот, если задана любая упорядоченная последовательность натуральных чисел, н {\displaystyle n}

1 2 н {\displaystyle \ell _{1}\leqslant \ell _{2}\leqslant \cdots \leqslant \ell _{n}}

удовлетворяя неравенству Крафта, можно построить префиксный код с длинами кодовых слов, равными каждому , выбрав слово длины произвольно, а затем исключив все слова большей длины, которые имеют его в качестве префикса. И снова, мы будем интерпретировать это в терминах листовых узлов -арного дерева глубины . Сначала выберем любой узел из полного дерева на глубине ; он соответствует первому слову нашего нового кода. Поскольку мы строим префиксный код, все потомки этого узла (т. е. все слова, которые имеют это первое слово в качестве префикса) становятся непригодными для включения в код. Мы рассматриваем потомков на глубине (т. е. листовые узлы среди потомков); есть такие потомки, которые удаляются из рассмотрения. Следующая итерация выбирает (выживший) узел на глубине и удаляет дальнейшие листовые узлы и т. д. После итераций мы удалили в общей сложности я {\displaystyle \ell _{i}} я {\displaystyle \ell _{i}} г {\displaystyle r} н {\displaystyle \ell _{n}} 1 {\displaystyle \ell _{1}} н {\displaystyle \ell _{n}} г н 1 {\displaystyle r^{\ell _{n}-\ell _{1}}} 2 {\displaystyle \ell _{2}} г н 2 {\displaystyle r^{\ell _{n}-\ell _{2}}} н {\displaystyle n}

я = 1 н г н я {\displaystyle \sum _{i=1}^{n}r^{\ell _{n}-\ell _{i}}}

узлы. Вопрос в том, нужно ли нам удалять больше конечных узлов, чем у нас есть в наличии — всего — в процессе построения кода. Поскольку неравенство Крафта выполняется, мы действительно имеем г н {\displaystyle r^{\ell _{n}}}

я = 1 н г н я г н {\displaystyle \sum _{i=1}^{n}r^{\ell _{n}-\ell _{i}}\leqslant r^{\ell _{n}}}

и таким образом можно построить префиксный код. Обратите внимание, что поскольку выбор узлов на каждом шаге в значительной степени произволен, в общем случае можно построить много различных подходящих префиксных кодов.

Доказательство общего случая

Теперь мы докажем, что неравенство Крафта выполняется, когда — однозначно декодируемый код. (Обратное не требует доказательства, поскольку мы уже доказали это для префиксных кодов, что является более сильным утверждением.) Доказательство принадлежит Джеку И. Карушу. [3] [4] С {\displaystyle S}

Нам нужно доказать это только тогда, когда существует конечное число кодовых слов. Если существует бесконечное число кодовых слов, то любое его конечное подмножество также однозначно декодируется, поэтому оно удовлетворяет неравенству Крафта–Макмиллана. Взяв предел, мы имеем неравенство для полного кода.

Обозначим . Идея доказательства состоит в том, чтобы получить верхнюю границу для и показать, что она может быть выполнена только для всех , если . Перепишем как С = я = 1 н г л я {\displaystyle C=\sum _{i=1}^{n}r^{-l_{i}}} С м {\displaystyle C^{м}} м Н {\displaystyle m\in \mathbb {N} } м {\displaystyle м} С 1 {\displaystyle C\leq 1} С м {\displaystyle C^{м}}

С м = ( я = 1 н г л я ) м = я 1 = 1 н я 2 = 1 н я м = 1 н г ( л я 1 + л я 2 + + л я м ) {\displaystyle {\begin{align}C^{m}&=\left(\sum _{i=1}^{n}r^{-l_{i}}\right)^{m}\\&=\sum _{i_{1}=1}^{n}\sum _{i_{2}=1}^{n}\cdots \sum _{i_{m}=1}^{n}r^{-\left(l_{i_{1}}+l_{i_{2}}+\cdots +l_{i_{m}}\right)}\\\end{align}}}

Рассмотрим все m -степени в виде слов , где индексы находятся в диапазоне от 1 до . Обратите внимание, что, поскольку предполагалось, что S однозначно декодируется, следует . Это означает, что каждое слагаемое соответствует ровно одному слову в . Это позволяет нам переписать уравнение в виде С м {\displaystyle S^{м}} с я 1 с я 2 с я м {\displaystyle s_{i_{1}}s_{i_{2}}\dots s_{i_{m}}} я 1 , я 2 , , я м {\displaystyle i_{1},i_{2},\точки ,i_{м}} н {\displaystyle n} с я 1 с я 2 с я м = с дж 1 с дж 2 с дж м {\displaystyle s_{i_{1}}s_{i_{2}}\точки s_{i_{m}}=s_{j_{1}}s_{j_{2}}\точки s_{j_{m}}} я 1 = дж 1 , я 2 = дж 2 , , я м = дж м {\displaystyle i_{1}=j_{1},i_{2}=j_{2},\dots ,i_{m}=j_{m}} С м {\displaystyle S^{м}}

С м = = 1 м м а х д г {\displaystyle C^{m}=\sum _{\ell =1}^{m\cdot \ell _{max}}q_{\ell }\,r^{-\ell }}

где — количество кодовых слов в длины , а — длина самого длинного кодового слова в . Для алфавита из -букв возможны только слова длины , поэтому . Используя это, мы оцениваем сверху : q {\displaystyle q_{\ell }} S m {\displaystyle S^{m}} {\displaystyle \ell } m a x {\displaystyle \ell _{max}} S {\displaystyle S} r {\displaystyle r} r {\displaystyle r^{\ell }} {\displaystyle \ell } q r {\displaystyle q_{\ell }\leq r^{\ell }} C m {\displaystyle C^{m}}

C m = = 1 m m a x q r = 1 m m a x r r = m m a x {\displaystyle {\begin{aligned}C^{m}&=\sum _{\ell =1}^{m\cdot \ell _{max}}q_{\ell }\,r^{-\ell }\\&\leq \sum _{\ell =1}^{m\cdot \ell _{max}}r^{\ell }\,r^{-\ell }=m\cdot \ell _{max}\end{aligned}}}

Взяв корень степени -, получаем m {\displaystyle m}

C = i = 1 n r l i ( m m a x ) 1 m {\displaystyle C=\sum _{i=1}^{n}r^{-l_{i}}\leq \left(m\cdot \ell _{max}\right)^{\frac {1}{m}}}

Эта граница справедлива для любого . Правая часть равна 1 асимптотически, поэтому должна выполняться (иначе неравенство будет нарушено для достаточно большого ). m N {\displaystyle m\in \mathbb {N} } i = 1 n r l i 1 {\displaystyle \sum _{i=1}^{n}r^{-l_{i}}\leq 1} m {\displaystyle m}

Альтернативная конструкция для обратного

Дана последовательность натуральных чисел, n {\displaystyle n}

1 2 n {\displaystyle \ell _{1}\leqslant \ell _{2}\leqslant \cdots \leqslant \ell _{n}}

удовлетворяя неравенству Крафта, мы можем построить префиксный код следующим образом. Определим i- е кодовое слово, C i , как первые цифры после запятой (например, десятичной точки) в представлении с основанием r i {\displaystyle \ell _{i}}

j = 1 i 1 r j . {\displaystyle \sum _{j=1}^{i-1}r^{-\ell _{j}}.}

Обратите внимание, что по неравенству Крафта эта сумма никогда не превышает 1. Следовательно, кодовые слова захватывают все значение суммы. Следовательно, для j > i первые цифры C j образуют большее число, чем C i , поэтому код не содержит префиксов. i {\displaystyle \ell _{i}}

Обобщения

Следующее обобщение можно найти в [5] .

Теорема  —  Если однозначно декодируемы, и каждое кодовое слово в является конкатенацией кодовых слов в , то C , D {\textstyle C,D} C {\textstyle C} D {\textstyle D} c C r | c | c D r | c | {\displaystyle \sum _{c\in C}r^{-|c|}\leq \sum _{c\in D}r^{-|c|}}

Предыдущая теорема является частным случаем, когда . D = { a 1 , , a r } {\displaystyle D=\{a_{1},\dots ,a_{r}\}}

Доказательство

Пусть будет генерирующей функцией для кода. То есть, Q C ( x ) {\textstyle Q_{C}(x)} Q C ( x ) := c C x | c | {\displaystyle Q_{C}(x):=\sum _{c\in C}x^{|c|}}

По подсчетному аргументу -й коэффициент равен числу строк длины с длиной кода . То есть, Аналогично, k {\textstyle k} Q C n {\textstyle Q_{C}^{n}} n {\textstyle n} k {\textstyle k} Q C n ( x ) = k 0 x k # ( strings of length  n  with  C -codes of length  k ) {\displaystyle Q_{C}^{n}(x)=\sum _{k\geq 0}x^{k}\#({\text{strings of length }}n{\text{ with }}C{\text{-codes of length }}k)}
1 1 Q C ( x ) = 1 + Q C ( x ) + Q C ( x ) 2 + = k 0 x k # ( strings with  C -codes of length  k ) {\displaystyle {\frac {1}{1-Q_{C}(x)}}=1+Q_{C}(x)+Q_{C}(x)^{2}+\cdots =\sum _{k\geq 0}x^{k}\#({\text{strings with }}C{\text{-codes of length }}k)}

Поскольку код однозначно декодируется, любая степень абсолютно ограничена , поэтому каждое из и является аналитическим в диске . Q C {\textstyle Q_{C}} r | x | + r 2 | x | 2 + = r | x | 1 r | x | {\textstyle r|x|+r^{2}|x|^{2}+\cdots ={\frac {r|x|}{1-r|x|}}} Q C , Q C 2 , {\textstyle Q_{C},Q_{C}^{2},\dots } 1 1 Q C ( x ) {\textstyle {\frac {1}{1-Q_{C}(x)}}} | x | < 1 / r {\textstyle |x|<1/r}

Мы утверждаем, что для всех , x ( 0 , 1 / r ) {\textstyle x\in (0,1/r)} Q C n Q D n + Q D n + 1 + {\displaystyle Q_{C}^{n}\leq Q_{D}^{n}+Q_{D}^{n+1}+\cdots }

Левая сторона и правая сторона k 0 x k # ( strings of length  n  with  C -codes of length  k ) {\displaystyle \sum _{k\geq 0}x^{k}\#({\text{strings of length }}n{\text{ with }}C{\text{-codes of length }}k)}

k 0 x k # ( strings of length n  with  D -codes of length  k ) {\displaystyle \sum _{k\geq 0}x^{k}\#({\text{strings of length}}\geq n{\text{ with }}D{\text{-codes of length }}k)}

Теперь, поскольку каждое кодовое слово в является конкатенацией кодовых слов в и однозначно декодируется, каждая строка длины с -кодом длины соответствует уникальной строке, -код которой равен . Строка имеет длину не менее . C {\textstyle C} D {\textstyle D} D {\textstyle D} n {\textstyle n} C {\textstyle C} c 1 c n {\textstyle c_{1}\dots c_{n}} k {\textstyle k} s c 1 s c n {\textstyle s_{c_{1}}\dots s_{c_{n}}} D {\textstyle D} c 1 c n {\textstyle c_{1}\dots c_{n}} n {\textstyle n}

Следовательно, коэффициенты слева меньше или равны коэффициентам справа.

Таким образом, для всех и всех имеем Принимая предел, имеем для всех . x ( 0 , 1 / r ) {\textstyle x\in (0,1/r)} n = 1 , 2 , {\textstyle n=1,2,\dots } Q C Q D ( 1 Q D ) 1 / n {\displaystyle Q_{C}\leq {\frac {Q_{D}}{(1-Q_{D})^{1/n}}}} n {\textstyle n\to \infty } Q C ( x ) Q D ( x ) {\textstyle Q_{C}(x)\leq Q_{D}(x)} x ( 0 , 1 / r ) {\textstyle x\in (0,1/r)}

Так как и оба сходятся, то, взяв предел и применив теорему Абеля , получаем . Q C ( 1 / r ) {\textstyle Q_{C}(1/r)} Q D ( 1 / r ) {\textstyle Q_{D}(1/r)} Q C ( 1 / r ) Q D ( 1 / r ) {\textstyle Q_{C}(1/r)\leq Q_{D}(1/r)}

Существует обобщение квантового кода . [6]

Примечания

  1. Обложка, Томас М.; Томас, Джой А. (2006), «Сжатие данных», Элементы теории информации (2-е изд.), John Wiley & Sons, Inc, стр. 108–109, doi :10.1002/047174882X.ch5, ISBN 978-0-471-24195-9
  2. ^ Де Рой, Стивен; Грюнвальд, Питер Д. (2011), «УДАЧА И СОЖАЛЕНИЕ В МИНИМАЛЬНОЙ ДЛИНЕ ОПИСАНИЯ», Философия статистики (1-е изд.), Elsevier, стр. 875, ISBN 978-0-080-93096-1
  3. ^ Каруш, Дж. (апрель 1961 г.). «Простое доказательство неравенства Макмиллана (переписка)». Труды IEEE по теории информации . 7 (2): 118. doi :10.1109/TIT.1961.1057625. ISSN  0018-9448.
  4. ^ Обложка, Томас М.; Томас, Джой А. (2006). Элементы теории информации (2-е изд.). Хобокен, Нью-Джерси: Wiley-Interscience. ISBN 978-0-471-24195-9.
  5. ^ Фолдес, Стефан (2008-06-21). «О теореме Макмиллана об однозначно дешифруемых кодах». arXiv : 0806.3277 [math.CO].
  6. ^ Шумахер, Бенджамин; Уэстморленд, Майкл Д. (2001-09-10). "Квантовое кодирование неопределенной длины". Physical Review A. 64 ( 4): 042304. arXiv : quant-ph/0011014 . Bibcode : 2001PhRvA..64d2304S. doi : 10.1103/PhysRevA.64.042304. S2CID  53488312.

Ссылки

  • Крафт, Леон Г. (1949), Устройство для квантования, группировки и кодирования амплитудно-модулированных импульсов (диссертация), Кембридж, Массачусетс: диссертация магистра наук, кафедра электротехники, Массачусетский технологический институт , hdl :1721.1/12390.
  • Макмиллан, Броквей (1956), «Два неравенства, подразумеваемые уникальной дешифруемостью», IEEE Trans. Inf. Theory , 2 (4): 115–116, doi :10.1109/TIT.1956.1056818.

Смотрите также

Retrieved from "https://en.wikipedia.org/w/index.php?title=Kraft–McMillan_inequality&oldid=1254083406"