Неравенство Крафта — различия между версиями
Строка 1: | Строка 1: | ||
При необходимости построить префиксный код с большим числом кодовых слов заданной длины проверка существования такого кода может быть достаточно сложной. | При необходимости построить префиксный код с большим числом кодовых слов заданной длины проверка существования такого кода может быть достаточно сложной. | ||
− | Но неравенство Крафта даёт необходимое и достаточное условие существования префиксных и любых | + | Но неравенство Крафта даёт необходимое и достаточное условие существования префиксных и любых ''[[Кодирование информации | однозначно декодируемых кодов]]'', обладающих заданным набором длин кодовых слов. |
{{Теорема | {{Теорема | ||
|about=неравенство Крафта (англ. Kraft's inequality) | |about=неравенство Крафта (англ. Kraft's inequality) | ||
|statement= | |statement= | ||
− | Для любого | + | Для любого ''[[Кодирование информации | префиксного кода]]'' <tex>C</tex>, отображающего произвольный алфавит <tex>A</tex> на двоичный алфавит <tex> \{0,1\} </tex> , длины кодовых слов должны удовлетворять неравенству: |
<center><tex> \sum\limits_{i = 1}^{I} 2^{-l_i} \leqslant 1 , </tex></center> | <center><tex> \sum\limits_{i = 1}^{I} 2^{-l_i} \leqslant 1 , </tex></center> | ||
Строка 23: | Строка 23: | ||
*любому кодовому слову <tex>C_j</tex> сопоставлен свой отрезок <tex>M_{C_j}</tex> (Например, кодовому слову <tex>1011</tex> соответствует отрезок <tex>M_{1011}</tex>); | *любому кодовому слову <tex>C_j</tex> сопоставлен свой отрезок <tex>M_{C_j}</tex> (Например, кодовому слову <tex>1011</tex> соответствует отрезок <tex>M_{1011}</tex>); | ||
*длина отрезка <tex>M_{C_i}</tex> равна <tex>2^{-l_i}</tex> (Например, <tex>M_0</tex> имеет длину <tex dpi = 140> \frac12</tex>, а <tex>M_{00}</tex> соответственно <tex dpi = 140> \frac14</tex>); | *длина отрезка <tex>M_{C_i}</tex> равна <tex>2^{-l_i}</tex> (Например, <tex>M_0</tex> имеет длину <tex dpi = 140> \frac12</tex>, а <tex>M_{00}</tex> соответственно <tex dpi = 140> \frac14</tex>); | ||
− | *Если кодовое слово <tex>x</tex> является | + | *Если кодовое слово <tex>x</tex> является ''[[Основные определения, связанные со строками | префиксом]]'' кодового слова <tex>y</tex>, то отрезок <tex>M_x</tex> содержит <tex>M_y</tex> (Например, кодовое слово <tex>01</tex> является ''[[Основные определения, связанные со строками | префиксом]]'' <tex>0111</tex>, а отрезок<tex>M_{01}</tex> содержит <tex>M_{0111}</tex>, это его самая правая четверть); |
− | Рассмотрим префиксный код <tex>C</tex>: так как ни одно из кодовых слов не является | + | Рассмотрим префиксный код <tex>C</tex>: так как ни одно из кодовых слов не является ''[[Основные определения, связанные со строками | префиксом]]'' никакого другого кодового слова, то никакие два отрезка не пересекаются. |
Если на отрезке <tex>[0;1]</tex> выбрать некоторое количество непересекающихся отрезков, то очевидно, что сумма их длин не превзойдет <tex>1</tex>, то есть <tex> \sum\limits_{i = 1}^{I} M_{C_i} \leqslant 1</tex>. | Если на отрезке <tex>[0;1]</tex> выбрать некоторое количество непересекающихся отрезков, то очевидно, что сумма их длин не превзойдет <tex>1</tex>, то есть <tex> \sum\limits_{i = 1}^{I} M_{C_i} \leqslant 1</tex>. |
Версия 00:22, 14 января 2015
При необходимости построить префиксный код с большим числом кодовых слов заданной длины проверка существования такого кода может быть достаточно сложной. Но неравенство Крафта даёт необходимое и достаточное условие существования префиксных и любых однозначно декодируемых кодов, обладающих заданным набором длин кодовых слов.
Теорема (неравенство Крафта (англ. Kraft's inequality)): |
Для любого префиксного кода , отображающего произвольный алфавит на двоичный алфавит , длины кодовых слов должны удовлетворять неравенству:
|
Доказательство: |
Рассмотрим отрезок на числовой прямой.Разделим его пополам, причем левую половину обозначим , а правую .Затем поделим пополам и обозначим его левую половину , а правую , и, проделав то же самое с , получим , а левую .Будем выполнять эти действия, пока длина индекса полученного отрезка не превосходит .Заметим, что:
Рассмотрим префиксный код префиксом никакого другого кодового слова, то никакие два отрезка не пересекаются. : так как ни одно из кодовых слов не являетсяЕсли на отрезке Отсюда следует, что выбрать некоторое количество непересекающихся отрезков, то очевидно, что сумма их длин не превзойдет , то есть . . |
Следствие
Можно обобщить неравенство Крафта для случаев, когда кодирующим алфавитом является k-ичный. В доказательстве изменятся некоторые пункты:
- отрезок придется делить не на , а на равных частей,
- соответственно неравенство примет вид: .
Источники информации
- Википедия — Неравенство Крафта
- Теория информации
- Александр Х. Шень Программирование: теоремы и задачи. — М.: МЦНМО, 2007. — С. 208. — ISBN 978-5-94057-310-4