Задача на построение префиксного кода (условие Фано). Нам даны кодовые слова для некоторых букв, и нужно найти кратчайшее возможное кодовое слово для буквы П, которое не будет являться началом или продолжением существующих кодов.
Известные кодовые слова:
Построение дерева кодов:
Начнем с корневого узла (пустое слово). От него отходят две ветки: 0 и 1.
Поиск кратчайшего кода для П:
Теперь ищем кратчайшие свободные кодовые слова. Наша задача — найти такие кодовые слова для буквы П, которые не являются префиксами существующих кодов и для которых не существует существующих кодов в качестве префиксов.
Рассмотрим свободные ветки:
Если мы назначим П = 101, то у нас остаются свободными ветки, которые начинаются с 101 (например, 1010, 1011) и ветка 111. Код 101 удовлетворяет условию префиксности.
Если мы назначим П = 111, то у нас остаются свободными ветки, которые начинаются с 111 (например, 1110, 1111) и ветка 101.
Среди свободных ветвей 101 и 111, наименьшим числовым значением обладает 101.
Таким образом, кратчайшим возможным кодовым словом для буквы П является 101.
Проверка:
Кодовые слова: К=00, Л=01, М=100, Н=110, П=101. Ни одно из этих слов не является началом другого. Например, 101 не является началом 100 или 110, и наоборот. 100 не является началом 101 или 110.