Метод построения кода Фано (алгоритм Шеннона — Фано) — один из первых алгоритмов сжатия, который впервые сформулировали американские учёные Клод Шеннон и Роберт Фано. ru.ruwiki.ru ru.wikipedia.org
Алгоритм использует коды переменной длины: часто встречающийся символ кодируется кодом меньшей длины, редко встречающийся — кодом большей длины. ru.ruwiki.ru ru.wikipedia.org
Метод строится с помощью дерева. ru.ruwiki.ru ru.wikipedia.org Построение начинается от корня: ru.ruwiki.ru ru.wikipedia.org
- Всё множество кодируемых элементов соответствует корню дерева (вершине первого уровня). ru.ruwiki.ru ru.wikipedia.org
- Оно разбивается на два подмножества с примерно одинаковыми суммарными вероятностями. ru.ruwiki.ru ru.wikipedia.org Эти подмножества соответствуют двум вершинам второго уровня, которые соединяются с корнем. ru.ruwiki.ru ru.wikipedia.org
- Далее каждое из этих подмножеств разбивается на два подмножества с примерно одинаковыми суммарными вероятностями. ru.ruwiki.ru ru.wikipedia.org Им соответствуют вершины третьего уровня. ru.ruwiki.ru ru.wikipedia.org
- Если подмножество содержит единственный элемент, то ему соответствует концевая вершина кодового дерева; такое подмножество разбиению не подлежит. ru.ruwiki.ru ru.wikipedia.org
- Подобным образом поступают до тех пор, пока не получат все концевые вершины. ru.ruwiki.ru ru.wikipedia.org
- Ветви кодового дерева размечают символами 1 и 0. ru.ruwiki.ru ru.wikipedia.org
Условие Фано при построении кода заключается в том, что ни одно кодовое слово не должно быть началом другого. itchief.ru umschool.net Это свойство позволяет однозначно декодировать любую последовательность кодовых слов. ru.ruwiki.ru ru.wikipedia.org