АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Цена кодирвания

Пусть заданы алфавит и вероятности появления букв в сообщении (pi – вероятность появления буквы ai). Не ограничивая общности, можно считать, что pi+…+pn=1 и (то есть можно сразу исключить буквы, которые не могут появиться в сообщении, и упорядочить буквы по убыванию вероятности их появления).

Для каждой (разделимой) схемы алфавитного кодирования математическое ожидание коэффициента увеличения длины сообщения при кодировании (обозначается ) определяется следующим образом:

, где

и называется средней ценой (или длиной) кодирования при распределении вероятностей P.

Пример

Для разделимой схемы А={a,b}, B={0,1}, при распределении вероятностей цена кодирования составляет 0.5*1+0.5*2=1.5, а при распределении вероятностей она равна 0.9*1+0.1*2=1.1.

Обозначим

Очевидно, что всегда существует разделимая схема , такая что . Такая схема называется схемой равномерного кодироваия. Следовательно, и достаточно учитывать только такие схемы, для которых , где li целое и . Таким образом, имеется лишь конечное число схем , для которых . Следовательно, существует схема , на которой инфимум достигается:

Алфавитное (разделимое) кодирование , для которого , называется кодированием с минимальной избыточностью, или оптимальным кодированием, для распределения вероятностей P.

Алгоритм Фано

Следующий рекурсивный алгоритм строит разделимую префиксную схему алфавитного кодирования, близкого к оптимальному.

 

Алгоритм 6.1. Построение кодирования, близкого к оптимальному

Вход: P: array [1..n] of real – массив вероятностей появления УКВ в сообщении, упорядоченный по невозрастанию; .

Выход: C: array [1..n, 1..L] of 0..1 – массив элементархых кодов.

Fano (1, n, 0) { вызов рекурсивной процедуры Fano }

 

Основная работа по построению элементарных кодов выполняется следующей рекурсивной процедурой Fano.

Вход: b – индекс начала обрабатываемой части массива P, е – индекс конца обрабатываемой части массива P, к – длина уже построенных кодов в обрабатываемой части массива С.

Выход: заполненный массив С.

if e > b then

k:=k+1 { место для очередного разряда в коде }

m:=Med (b, e) { деление массива на две части }

for I from b to e do

C [i,k]:= I > m { в первой части добавляем 0, во второй - 1 }

end for

Fano (b, m, k) { обработка первой части }

Fano (m+1, e, k) { обработка второй части }

end if

Функция Med находит медиану указанной части массива P [b..e], то есть определяет такой индекс m (), что сумма элементов P [b..m] наиболее близка к сумме элементов P [m+1..e].

Вход: b – индекс начала обрабатываемой части массива P, e – индекс концап обрабатываемой части массива P.

Выход: m – индекс медианы, то есть

Sb:= {сумма элементов первой части }

for i from b to e-1 do

Sb:=Sb+P[i] { вначале все, кроме последнего }

end for

Se:=P[e] { сумма элементво второй части }

M:= e { начинаем искать медиану с конца }

repeat

d:=Sb-Se { разность сумм первой и второй части }

m:=m-1 { сдвигаем границу медианы вниз }

Sb:=Sb-P[m];

Se:=Se+P[m]

until |Sb-Se| d

return m

 

Обоснование

При каждом удлинении кодов в одной части коды удлиняются нулями, а в другой – единицами. Таким образом, коды одной части не могут быть префиксами другой. Удлинение кода заканчивается тогда и только тогда, когда длина части равна 1, то есть остается единственный код. Таким образом, схема по построению префиксная, а потому разделимая.

 

Пример

Коды, построенные алгоритмом Фано для заданного распределения (n=7).

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)