Принцип работы алгоритма Шеннона — Фано заключается в том, что он присваивает код каждому символу в зависимости от вероятности его появления. 3
Алгоритм использует коды переменной длины: часто встречающийся символ кодируется кодом меньшей длины, редко встречающийся — кодом большей длины. 1
Основные этапы алгоритма: 1
- Символы первичного алфавита выписывают по убыванию вероятностей. 1
- Символы полученного алфавита делят на две части, суммарные вероятности символов которых максимально близки друг другу. 1
- В префиксном коде для первой части алфавита присваивается двоичная цифра «0», второй части — «1». 1
- Полученные части рекурсивно делятся, и их частям назначаются соответствующие двоичные цифры в префиксном коде. 1
- Когда размер подалфавита становится равен нулю или единице, то дальнейшего удлинения префиксного кода для соответствующих ему символов первичного алфавита не происходит, таким образом, алгоритм присваивает различным символам префиксные коды разной длины. 1