Задание №4 — Префиксные коды, условие Фано
По каналу связи передаются сообщения, содержащие только буквы из набора: А, К, Л, Н, О, Я. Для передачи используется двоичный код, удовлетворяющий условию Фано. Это условие обеспечивает возможность однозначной расшифровки закодированных сообщений. Кодовые слова для некоторых букв известны: Л — 1, Я — 01. Для четырёх оставшихся букв А, К, Н и О кодовые слова неизвестны. Какое количество двоичных знаков потребуется для кодирования слова КОЛОННА, если известно, что оно закодировано минимально возможным количеством двоичных знаков?
Правильный ответ
25
Пояснение
Решение:
Известно: Л — 1, Я — 01.
Кодовое слово Л — 1 занимает целиком всю ветвь, начинающуюся с 1: никакое другое кодовое слово не может начинаться с единицы. Значит, все остальные буквы кодируются словами, начинающимися с 0. В этой ветви слово 01 занято буквой Я, поэтому свободна только вершина 00.
Четыре оставшиеся буквы А, К, Н и О должны получить кодовые слова, начинающиеся с 00. Чтобы из одной вершины получить четыре разных слова, нужно добавить ещё не менее двух разрядов: 0000, 0001, 0010, 0011 — все длины 4.
В слове КОЛОННА буква О встречается 2 раза, Н — 2 раза, К — 1 раз, А — 1 раз, Л — 1 раз (буква Я не встречается вовсе).
| Буква | Кодовое слово | Длина | Сколько раз | Всего знаков |
|---|---|---|---|---|
| Л | 1 | 1 | 1 | 1 |
| О | 0000 | 4 | 2 | 8 |
| Н | 0001 | 4 | 2 | 8 |
| К | 0010 | 4 | 1 | 4 |
| А | 0011 | 4 | 1 | 4 |
Суммарно двоичных знаков. Неравномерное разбиение той же вершины (например, О — 000, Н — 0010, К — 00110, А — 00111) даёт ровно столько же, меньше 25 получить нельзя.
Ответ: 25