Неравенство Крафта — различия между версиями
| Строка 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:30, 14 января 2015
При необходимости построить префиксный код с большим числом кодовых слов заданной длины проверка существования такого кода может быть достаточно сложной. Но неравенство Крафта даёт необходимое и достаточное условие существования префиксных и любых однозначно декодируемых кодов, обладающих заданным набором длин кодовых слов.
| Теорема (неравенство Крафта (англ. Kraft's inequality)): |
Для любого префиксного кода , отображающего произвольный алфавит на двоичный алфавит , длины кодовых слов должны удовлетворять неравенству:
|
| Доказательство: |
|
Рассмотрим отрезок на числовой прямой. Разделим его пополам, причем левую половину обозначим , а правую . Затем поделим пополам и обозначим его левую половину , а правую , и, проделав то же самое с , получим , а левую . Будем выполнять эти действия, пока длина индекса полученного отрезка не превосходит . Заметим, что:
Рассмотрим префиксный код : так как ни одно из кодовых слов не является префиксом никакого другого кодового слова, то никакие два отрезка не пересекаются. Если на отрезке выбрать некоторое количество непересекающихся отрезков, то очевидно, что сумма их длин не превзойдет , то есть . Отсюда следует, что . |
Следствие
Можно обобщить неравенство Крафта для случаев, когда кодирующим алфавитом является k-ичный. В доказательстве изменятся некоторые пункты:
- отрезок придется делить не на , а на равных частей,
- соответственно неравенство примет вид: .
Источники информации
- Википедия — Неравенство Крафта
- Теория информации
- Александр Х. Шень Программирование: теоремы и задачи. — М.: МЦНМО, 2007. — С. 208. — ISBN 978-5-94057-310-4