Принцип работы бинарного кода Фано при кодировании сообщений заключается в следующем:
- Все сообщения записываются в таблицу по степени убывания вероятности и разбиваются на две группы примерно (насколько это возможно) равной вероятности. cito-web.yspu.org
- Из корня кодового дерева исходят два ребра, которым в качестве весов присваиваются полученные вероятности. cito-web.yspu.org Двум образовавшимся вершинам приписывают кодовые символы 0 и 1. cito-web.yspu.org
- Затем каждая из групп вероятностей вновь делится на две подгруппы примерно равной вероятности. cito-web.yspu.org В соответствии с этим из каждой вершины 0 и 1 исходят по два ребра с весами, равными вероятностям подгрупп, а вновь образованным вершинам приписывают символы 00 и 01, 10 и 11. cito-web.yspu.org
- В результате многократного повторения процедуры разделения вероятностей и образования вершин приходит ситуация, когда в качестве веса, приписанного ребру бинарного дерева, выступает вероятность одного из данных сообщений. cito-web.yspu.org В этом случае вновь образованная вершина оказывается листом дерева, так как процесс деления вероятностей для неё завершён. cito-web.yspu.org
- Задача кодирования считается решённой, когда на всех ветвях кодового бинарного дерева образуются листья. cito-web.yspu.org
Алгоритм использует коды переменной длины: часто встречающийся символ кодируется кодом меньшей длины, редко встречающийся — кодом большей длины. ru.wikipedia.org