Принцип работы алгоритма Шеннона — Фано при кодировании данных заключается в создании префиксного кода, основанного на наборе символов и их вероятностях (оценочных или измеренных). 1
Алгоритм основан на частоте повторения: часто встречающийся символ кодируется кодом меньшей длины, а редко встречающийся — кодом большей длины. 23
Процесс кодирования включает следующие шаги: 2
- Символы распределяются в порядке от наиболее вероятных к наименее вероятным. 12
- Затем они разделяются на два набора, суммарные вероятности символов которых максимально близки друг другу. 13
- Формируется первый разряд кода всех символов: символы из первого набора получают двоичный «0», символы из второго — «1». 12
- Процесс деления на две части и получения следующих разрядов повторяется для полученных наборов аналогичным образом, пока в полученном наборе не останется по одному символу. 12
- Когда набор уменьшается до одного символа, код символа полностью сформирован. 12
Алгоритм Шеннона — Фано не всегда даёт оптимального префиксного кода, поэтому на сегодняшний день он не представляет особого практического интереса. 13