Задание №4 — Префиксные коды, условие Фано
Для кодирования некоторой последовательности, состоящей из букв К, Л, М, Н, П, Р, решили использовать неравномерный двоичный код, удовлетворяющий условию Фано. Для букв К, Л, М, Н использовали соответственно кодовые слова 00, 01, 100, 110. Для двух оставшихся букв – П и Р – кодовые слова неизвестны. Укажите кратчайшее возможное кодовое слово для буквы П, при котором код допускает однозначное декодирование. Если таких кодов несколько, укажите код с наименьшим числовым значением.
Примечание. Условие Фано означает, что никакое кодовое слово не является началом другого кодового слова. Это обеспечивает возможность однозначной расшифровки закодированных сообщений.
Правильный ответ
101
Пояснение
Решение:
Известно: К — 00, Л — 01, М — 100, Н — 110. Кодовые слова нужны двум буквам — П и Р.
Ветвь 0 занята целиком (слова 00 и 01). В ветви 10 занято слово 100 — свободна вершина 101; в ветви 11 занято слово 110 — свободна вершина 111.
Свободных слов длины 1 и 2 нет: 0 является началом слова 00, 1 и 10 — началом слова 100, 11 — началом слова 110. Поэтому кратчайшая возможная длина равна 3.
Свободных вершин ровно две — 101 и 111, — и обе нужны: одна букве П, другая букве Р. Из них выбираем для П слово с наименьшим числовым значением.
Ответ: 101