Неравенство Крафта — различия между версиями
(→Литература) |
|||
Строка 18: | Строка 18: | ||
Для любого префиксного кода <tex>C</tex>, отображающего произвольный алфавит <tex>A</tex> на двоичный алфавит <tex> \{0,1\} </tex> , длины кодовых слов должны удовлетворять неравенству: | Для любого префиксного кода <tex>C</tex>, отображающего произвольный алфавит <tex>A</tex> на двоичный алфавит <tex> \{0,1\} </tex> , длины кодовых слов должны удовлетворять неравенству: | ||
− | <center><tex> \sum\limits_{i = 1}^{I} 2^{-l_i} \ | + | <center><tex> \sum\limits_{i = 1}^{I} 2^{-l_i} \leqslant 1 , </tex></center> |
где <tex>|A| = I</tex> , а <tex>l_i</tex> {{---}} длины кодовых слов. | где <tex>|A| = I</tex> , а <tex>l_i</tex> {{---}} длины кодовых слов. | ||
Строка 38: | Строка 38: | ||
Рассмотрим префиксный код <tex>C</tex>: так как ни одно из кодовых слов не является префиксом никакого другого кодового слова, то никакие два отрезка не пересекаются. | Рассмотрим префиксный код <tex>C</tex>: так как ни одно из кодовых слов не является префиксом никакого другого кодового слова, то никакие два отрезка не пересекаются. | ||
− | Если на отрезке <tex>[0;1]</tex> выбрать некоторое количество непересекающихся отрезков, то очевидно, что сумма их длин не превзойдет <tex>1</tex>, то есть <tex> \sum\limits_{i = 1}^{I} M_{C_i} \ | + | Если на отрезке <tex>[0;1]</tex> выбрать некоторое количество непересекающихся отрезков, то очевидно, что сумма их длин не превзойдет <tex>1</tex>, то есть <tex> \sum\limits_{i = 1}^{I} M_{C_i} \leqslant 1</tex>. |
− | Отсюда следует, что <tex>\sum\limits_{i = 1}^{I} M_{C_i} = \sum\limits_{i = 1}^{I} 2^{-l_i} \ | + | Отсюда следует, что <tex>\sum\limits_{i = 1}^{I} M_{C_i} = \sum\limits_{i = 1}^{I} 2^{-l_i} \leqslant 1</tex>. |
}} | }} | ||
Строка 46: | Строка 46: | ||
Можно обобщить неравенство Крафта для случаев, когда кодирующим алфавитом является k-ичный. В доказательстве изменятся некоторые пункты: | Можно обобщить неравенство Крафта для случаев, когда кодирующим алфавитом является k-ичный. В доказательстве изменятся некоторые пункты: | ||
*отрезок <tex>[0;1]</tex> придется делить не на <tex>2</tex>, а на <tex>k</tex> равных частей; | *отрезок <tex>[0;1]</tex> придется делить не на <tex>2</tex>, а на <tex>k</tex> равных частей; | ||
− | *соответственно неравенство примет вид: <tex>\sum\limits_{i = 1}^{I} k^{-l_i} \ | + | *соответственно неравенство примет вид: <tex>\sum\limits_{i = 1}^{I} k^{-l_i} \leqslant 1 </tex>. |
== Ссылки == | == Ссылки == |
Версия 16:51, 13 января 2015
Предварительные определения
Определение: |
Пусть заданы два произвольных конечных множества, которые называются, соответственно, кодируемым алфавитом и кодирующим алфавитом. Их элементы называются символами, а строки (последовательности конечной длины) символов — словами. Длина слова — это число символов, из которого оно состоит. |
В качестве кодирующего алфавита часто рассматривается множество
— так называемый двоичный или бинарный алфавит.
Определение: |
Кодом для алфавита | называется функция , которая для каждого символа из указывает слово , кодирующее этот символ.
Определение: |
Префиксным кодом называется код, в котором ни одно из кодовых слов не является префиксом никакого другого кодового слова. |
Неравенство Крафта
Теорема: |
Для любого префиксного кода , отображающего произвольный алфавит на двоичный алфавит , длины кодовых слов должны удовлетворять неравенству:
|
Доказательство: |
Рассмотрим отрезок на числовой прямой.Разделим его пополам, причем левую половину обозначим , а правую .Затем поделим пополам и обозначим его левую половину , а правую , и, проделав то же самое с , получим , а левую .Будем выполнять эти действия, пока длина индекса полученного отрезка не превосходит .Заметим, что:
Рассмотрим префиксный код : так как ни одно из кодовых слов не является префиксом никакого другого кодового слова, то никакие два отрезка не пересекаются.Если на отрезке Отсюда следует, что выбрать некоторое количество непересекающихся отрезков, то очевидно, что сумма их длин не превзойдет , то есть . . |
Следствие
Можно обобщить неравенство Крафта для случаев, когда кодирующим алфавитом является k-ичный. В доказательстве изменятся некоторые пункты:
- отрезок придется делить не на , а на равных частей;
- соответственно неравенство примет вид: .
Ссылки
Литература
- А. Шень Программирование: теоремы и задачи. — М.: МЦНМО, 2007. С. 208. ISBN 978-5-94057-310-4