Задача № 333
По каналу связи передаются сообщения, содержащие только буквы: А, Е, Л, Н, О, Т, Ф. Для передачи используется двоичный код, удовлетворяющий условию Фано. Кодовые слова для некоторых букв известны: Т – 00, Ф – 1011. Для пяти оставшихся букв А, Е, Л, Н и О кодовые слова неизвестны. Какое количество двоичных знаков требуется для кодирования слова ТЕЛЕФОН, если известно, что оно закодировано минимально возможным количеством двоичных знаков?
Примечание. Условие Фано означает, что никакое кодовое слово не является началом другого кодового слова. Это обеспечивает возможность однозначной расшифровки закодированных сообщений.
Решение
Шаг 1. Нарисуем двоичное дерево и отметим на нём, какие коды уже заняты, а какие ещё свободны.
Шаг 2. По условию нужно закодировать ещё 5 букв, но на дереве свободно только 4 кода. Значит, надо один из этих кодов разбить дальше, чтобы получить ещё один.
Рассмотрим все варианты
Вариант 1. Разделим код 100 на два кода: 1001 и 1000
Общая длина кода: 20
| Буква | Т | Е | Л | Е | Ф | О | Н |
|---|---|---|---|---|---|---|---|
| Код | 00 | 01 | 11 | 01 | 1011 | 1001 | 1000 |
Вариант 2. Разделим код 11 на два кода: 110 и 111
Общая длина кода: 19
| Буква | Т | Е | Л | Е | Ф | О | Н |
|---|---|---|---|---|---|---|---|
| Код | 00 | 01 | 110 | 01 | 1011 | 111 | 100 |
Вариант 3. Разделим код 1010 на два кода: 10100 и 10101
Общая длина кода: 20
| Буква | Т | Е | Л | Е | Ф | О | Н |
|---|---|---|---|---|---|---|---|
| Код | 00 | 01 | 11 | 01 | 1011 | 100 | 10100 |
Ответ
Минимальное возможное количество знаков — 19.