Алгоритм сжатия данных без потерь при использовании кода Шеннона-Фано работает следующим образом: 14
- Вычисление вероятностей. 1 Частота каждого символа во входных данных вычисляется для определения вероятности его появления. 1
- Сортировка по вероятности. 1 Символы сортируются в порядке убывания в зависимости от их вероятности. 1
- Разделение символов. 1 Отсортированные символы разделяются на две группы с примерно равной общей вероятностью. 1
- Присвоение кодов. 1 Символам первой группы присваиваются коды, начинающиеся с 0, а символам второй группы — коды, начинающиеся с 1. 1 Этот процесс рекурсивно применяется к каждой группе до тех пор, пока каждый символ не получит уникальный код. 1
- Сжатие. 1 Входной текст сжимается путём замены каждого символа соответствующим двоичным кодом. 1
Алгоритм использует коды переменной длины: часто встречающийся символ кодируется кодом меньшей длины, редко встречающийся — кодом большей длины. 4