Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Teoria_informatsii_Gordeev_5sem.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
758.94 Кб
Скачать
        1. Неравенство Крафта.

Теорема. Если алфавитное кодирование с длиной кодов l1, … , ln дешифруемо, то выполняется неравенство:

Доказательство. Пусть А = (а1, … , аn) и B = (b1, … , bq). Каждой букве ai алфавита A ставится в соответствие Bi= φ(ai) – слово в алфавите B длины li. Положим

Пусть . Возведем Z в некоторую степень m, тогда

.

Здесь введено обозначение S(n, t) – число слов длины t и вида Bi1Bi2Bin. Из дешифруемости следует, что все такие слова различны, но число различных слов длины t в алфавите из q букв не превосходит qt , поэтому

S(n, t) qt.

Тогда , где m – натуральное, а l ≥ 0, целое. Это неравенство должно выполняться для любого m, но это возможно только тогда, когда Z не превосходит единицы, т.е.

.

Утверждение доказано.

        1. Префиксные коды.

Опр. Слово α является подсловом слова β, если существуют слова γ и δ (возможно пустые) такие, что β=γαδ.

В общем случае из неравенства Крафта не следует дешифруемость.

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

Теорема. Префиксный код дешифруем.

Доказательство: Пусть есть α и β – два слова:

Покажем, что из равенства φ(α) = φ(β) следует равенство α = β.

Пусть

Поочередно слева направо сравниваем подслова слов α и β, используя знание функции ϕ, которая определяет наше побуквенное кодирование (эта функция позволяет находить Bi= φ(ai) среди подслов слов α и β. Сначала сравниваем и , затем переходим к и и т.д.

Если длины слов и одинаковы, то сами слова должны быть одинаковыми из того, что Если длины слов разные, то одно из двух слов: или – начало другого, что противоречит определению префиксности.

Значит, α = β.

Теорема доказана.

Из теоремы сразу следует алгоритм декодирования префиксного кода.

Алгоритм декодирования. Берем первый символ слова φ(α) и ищем однобуквенное слово среди кодовых слов. Если находим такое слово, например, Bi= φ(ai), то декодируем слово Bi= φ(ai) в букву ai и продолжаем работать, начиная со следующего символа слова φ(α). Если не находим, то добавляем следующий символ и ищем среди кодовых слов уже двухбуквенное слово. И т.д.

В случае алфавитного кодирования можно ограничиться префиксными кодами, так как, в каком-то смысле, любой дешифруемый алфавитный (побуквенный) код можно «свести к префиксному». А существование префиксного кода полностью определяется неравенством Крафта.

Теорема (о существовании префиксного кода). Префиксный код с длинами кодов l1ln существует тогда и только тогда, когда выполняется неравенство Крафта

.

Доказательство. Т.к. префиксный код дешифруем, то выполняется неравенство Крафта. С другой стороны, пусть выполняется неравенство Крафта. Покажем, что в этом случае существует префиксный код. Мы просто опишем алгоритм построения такого кода, т.е. построим отображение Bi= φ(ai).

Пусть . Пусть среди чисел l1ln имеется S1 единиц, S2 двоек, S3 троек и т.д. до Sl слов длины l. При этом некоторые из Si могут быть нулями. Упорядочим Bi= φ(ai) по возрастанию длины.

B 1 = |l1| = 1

B2 = |l2| = 1 S1 слов длины 1

BS1= |lS1| =1

B S1+1 = |l S1+1| = 2 S2 слов длины 2

Т огда левую часть неравенства Крафта можно представить в виде:

S1 S2 S3

Теперь пошагово строим наш префиксный код.

Первый шаг: Любые S1 букв в B можно использовать для кодирования слов длины. Это следует из того, что при выполнении неравенства Крафта справедливо соотношение: S1/q ≤ 1, из которого следует, что S1 ≤ q. Таким образом мы получили первую группу однобуквенных слов.

Второй шаг: Аналогично из неравенства Крафта получаем S1/q + S2/q ≤ 1 . Отсюда S1q + S2q2 , S2q2s1q. Поэтому можно взять S2 слов длины 2 в алфавите B так, что они не начинаются со слов первой группы. Таким образом мы получили вторую группу двухбуквенных слов.

Третий шаг: На этом шаге строим группу трехбуквенных слов так, чтобы они не начинались с ранее построенных слов. Такие трехбуквенные слова в нужном количестве существуют, так как вновь из неравенства Крафта следует, что S1/q + S2/q + S3 / q1. А это означает, что S3q3qS2q2S1.

Таким образом проходим все l шагов и в результате получаем дешифруемый префиксный код.

Теорема доказана.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]