Принцип построения оптимальных двоичных кодов с помощью дерева Фано заключается в создании уникальных кодов, которые соответствуют условию Фано: ни один код не является началом другого. 1
Некоторые этапы построения дерева Фано и их описание:
- Начало построения. 1 Дерево начинается с вершины, от которой отходят две ветви, поскольку оно является двоичным. 1 Левой ветви, например, присваивается бит 0, а правой — 1. 1
- Разветвление. 1 Каждый узел дерева может порождать две новые ветви. 1 Ветвь, уходящая влево, например, по аналогии обозначается битом 0, а правая — 1. 1
- Заполнение и блокировка ветвей. 1 Если ветвь занята символом, она блокируется и больше не участвует в разветвлениях. 1 Это необходимо для соблюдения уникальности кодов и предотвращения пересечений. 1
- Достроение дерева. 1 После размещения символов с известными кодами дерево достраивается для кодирования остальных букв. 1 Новые ветви продолжают следовать принципу двоичного разветвления: например, 0 — для левого направления и 1 — для правого. 1
При построении дерева Фано учитывается частота встречаемости символов в тексте: чем чаще встречается какой-либо символ, тем короче для него имеет смысл назначить код и тем раньше этот символ надо поместить в дерево. 45