Алгоритм на псевдокоде
Алгоритм Фано
P–массив вероятностей, упорядоченный по убыванию
L – левая граница обрабатываемой части массива P
R– правая граница обрабатываемой части массива P
k – длина уже построенной части элементарных кодов
С – массив элементарных кодов
Length – массив длин элементарных кодов.
Fano(L,R,k)
IF (L<R)
k:=k+1
m:=Med(L,R)
DO (i=L,…,R)
IF (i≤m) C[i,k]:=0, Length[i]:= Length[i]+1
ELSE C[i,k]:=1, Length[i]:= Length[i]+1
FI
OD
Fano (L,m,k)
Fano (m+1,R,k)
FI
Функция Med находит медиану массива P, т.е. такой индекс L≤m≤R, что
величина минимальна.
Med (L,R)
SL:=0
DO (i=L,…,R-1)
SL:=SL+p[i] <сумма элементов первой части>
OD
SR:=p[R] <сумма элементов второй части>
m:=R
DO (SL ≥ SR)
m:=m-1
SL:=SL-p[m]
SR:=SR+p[m]
OD
Med:=m