Неравенство Макмиллана
Необходимые определения
| Определение: |
| Пусть заданы два произвольных конечных множества, которые называются, соответственно, кодируемым алфавитом и кодирующим алфавитом. Их элементы называются символами, а строки (последовательности конечной длины) символов — словами. Длина слова — это число символов, из которого оно состоит. |
В качестве кодирующего алфавита часто рассматривается множество — так называемый двоичный или бинарный алфавит.
| Определение: |
| Кодом для алфавита называется функция , которая для каждого символа из указывает слово , кодирующее этот символ. |
| Определение: |
| Код называется однозначным, если никаким двум словам кодируемого алфавита не может быть сопоставлен один и тот же код. |
Неравенство Макмиллана
| Теорема: |
(где — длины кодовых слов) выполняется для любого однозначно декодируемого кода. |
| Доказательство: |
|
Докажем теорему способом, приведенным в книге А. Шеня "Программирование: теоремы и задачи". Пусть имеется однозначный код с кодовыми словами . Необходимо доказать, что их длины удовлетворяют неравенству Макмиллана. Рассмотрим любой однозначный код с кодовыми словами . Для удобства при кодировании вместо нулей и единиц будем использовать и соответственно. Представим сумму всех слов (кодируемых через и ) и возведем эту сумму в степень (любое натуральное число): . Раскрывая скобки, сохраним порядок переменных и не будем собирать их вместе (то есть возводить их в степень). По определению однозначности никакое слово не может быть получено двумя способами при соединении кодовых слов, следовательно все слова должны получиться разными. Вот пример для однозначного кода со словами и : Все получившиеся слагаемые (слова) различны (соответствует определению однозначности). Если неравенство верно для букв, то оно верно для любых числовых значений. Подставим в неравенство. В левой части получится выражение из неравенства Макмиллана: . Всего имеется не более слагаемых длины равных , следовательно слагаемые данной длины в сумме не превосходят единицы, а правая часть не превосходит максимальной длины слагаемых: . Получаем, что верно для любого . Так как показательная функция растет быстрее линейной, то при основании большем единицы неравенство нарушается. Поэтому, для однозначного кода выполняется неравенство Макмиллана. |
Ссылки
Литература
Шень А. Х. Программирование: теоремы и задачи. — М.: МЦНМО, 2011. С. 206 - 210. ISBN 978-5-94057-696-9