Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
111
Добавлен:
27.03.2015
Размер:
1.61 Mб
Скачать

Свойства оптимальных префиксных кодов

Лемма 1. ПустьV= {V1, …,Vk} – оптимальный префиксный код[По обратной теореме о спектре свободного кода]Существует префиксный код. р1≥ р2≥ … ≥ рk– набор частот. Тогда |V1| ≤ |V2| ≤ … ≤ |Vp|.

Доказательство: (от противного)

Пусть i<j, то |Vi| > |Vj|. Пусть, . , .mi,mj.C(‘) –C() =pi|Vj| +pi|Vi| -pi|Vj| -pj|Vj| =pi(|Vj| - |Vi|) –pj(|Vj| - |Vi|) =C(‘) ≤C()‘ – оптимальный код – противоречие с условием.

Лемма 2. ПустьV= {V1, …,Vk} – оптимальный префиксный код. || =max. Тогда существуетpV, отличный отлишь первой буквой.

Доказательство: Рассмотрим схемы кодирования:

При переходе от к’ мы уменьшим степень последнего слова С(') <C(), но по условиюV– оптимальный код, значит С() =minКодV’ в схеме’ не префиксный.. Следовательно, у- начало илиV1илиV2или … илиVk-1. Но этого быть не может, иначе- тоже началоV1илиV2или … илиVk-1 и тогдаV– не префиксный. СледовательноVi=(Vi{V1, …,Vk-1}).0, так как существует0V= 1Vi=1.

Теорема Редукции

А = {a1, …,ak} – алфавит источника, Р = (p1, …,pk) – набор частот. р1≥ р2≥ … ≥ рk.V= {V1, …,Vk} – оптимальный префиксный код. Система кодирования:.A’ = {a1, …,ak-2,bk-1) – новый алфавит.P’ = Р = (p1, …, pk-2, pk-1 + pk). - новая схема кодирования.

Если схема ’ – оптимальная для набора частотp’- оптимальная для р.

Доказательство: Рассмотрим стоимость кодирования С(,P) =, С другой стороны С(’,P’) =+p’k-1|V’k-1| =+ (pk-1+pk)(|Vk| - 1). С(,P) - С(’,P’) =pk-1|Vk| +pk|Vk| - (pk-1+pk)(|Vk| - 1) =pk-1+pk> 0.

Далее методо м от противного. Предположим, что - не оптимальный, тогда существует1: С(1,P) < С(,P). Строим для1схему’1. С(1,P) - С(’1,P) = [по доказанному в 1 части] =pk-1+pk. С(,P) - С(’,P’) = С(1,P) - С(’1,P’)С(’1,P’) < С(’,P’)’ – не оптимальнаяПротиворечие с условием.

Алгоритм построения оптимального кода (Метод Хаффмена)

Пример: А = {a1, …,a7},P= {0,4; 0,2; 0,12; 0,1; 0,1; 0,05; 0, 03}

a1

0,4

a1

0,4

a1

0,4

a1

0,4

a1

0,4

a1

0,4

a2

0,2

a2

0,2

a2

0,2

a2

0,2

0

b4

0,38

0 

b5

0,6

a3

0,12

a3

0,12

a3

0,12

0 

b3

0,22

b3

0,22

1 

a4

0,1

a4

0,1

a4

0,1

1 

a5

0,1

a5

0,1

0 

b2

0,18

b2

0,18

1

a6

0,05

0 

b1

0,08

1 

a7

0,03

1 

Полученный код должен быть префиксным.

Соседние файлы в папке Дискретка_лекции