Алгоритм на псевдокоде

Алгоритм построения кода Шеннона

p0:=0, Q0:=0

DO (i=1,…,n)

Qi := Qi-1+pi

Li:= -élog2pi ù

OD

DO (i=1,…,n)

DO (j=1,…,Li)

Qi-1:=Qi-1 *2

C[i,j]:= éQi-1ù

IF (Qi-1>1) Qi-1:=Qi-1-1 FI

OD

OD

 

Код Фано

Метод Фано построения префиксного почти оптимального кода заключается в следующем. Упорядоченный по убыванию вероятностей список букв алфавита источника делится на две части так, чтобы суммы вероятностей букв, входящих в эти части, как можно меньше отличались друг от друга. Буквам первой части приписывается 0, а буквам из второй части – 1. Далее также поступают с каждой из полученных частей. Процесс продолжается до тех пор, пока весь список не разобьется на части, содержащие по одной букве.

Пример.Пусть дан алфавит A={a1, a2, a3, a4, a5, a6} с вероятностями p1=0.36, p2=0.18, p3=0.18, p4=0.12, p5=0.09, p6=0.07. Построенный код приведен в таблице и на рисунке.

Таблица 12 Код Фано

ai Pi кодовое слово Li
a1 0.36    
a2 0.18    
a3 0.18    
a4 0.12  
a5 0.09
a6 0.07

 

 

Рисунок 69 Кодовое дерево для кода Фано

Полученный код является префиксным и почти оптимальным со средней длиной кодового слова

Lср=0.36.2+0.18.2+0.18.2+0.12.3+0.09.4+0.07.4=2.44