Teacher & coder

Задача № 268

По каналу связи передаются сообщения, содержащие только шесть букв: А, В, Д, З, И, О. Для передачи используется двоичный код, удовлетворяющий условию Фано. Кодовые слова для некоторых букв известны: В — 110, З — 01, И — 000.

Какое наименьшее количество двоичных знаков потребуется для кодирования слова АВИАЗАВОД?

Можно скопировать и вставить все ответы сразу
МЦКО-2025. Демонстрационный вариант 10 класс
Прокрути, чтобы прочитать решение задачи
Ты уверен, что хочешь это сделать?
Удачного чтения!

Решение

Напомним, что по условию Фано ни одно кодовое слово не может начинаться с другого кодового слова.

Код, который удовлетворяет этому условию, удобно строить с помощью дерева вариантов. На таком дереве отмечаем уже занятые коды и свободные, оставшиеся коды.

Совет: не нужно сразу дорисовывать новые ветви у свободных узлов. Расширять дерево имеет смысл только тогда, когда это действительно потребуется.

Когда на дереве видны все свободные коды, смотрим, сколько ещё букв нужно закодировать. В нашем случае — три буквы: А, Д и О.

Если свободных кодов на дереве как раз столько же, сколько осталось букв, новые ветви строить не нужно. Остаётся сопоставить буквы и свободные коды.

По условию задачи нужно закодировать слово АВИАЗАВОД минимальным количеством двоичных знаков, то есть самые короткие коды даём часто повторяющимся буквам.

Буква А встречается чаще, ей присваиваем самый короткий, двузначный код. Остальные свободные коды длиннее — трёхзначные, их можно распределить между Д и О любым образом.

Сопоставим каждой букве из слова АВИАЗАВОД её код. Сложим все длины и получим итоговый ответ: 23.

АВИАЗАВОД
233222333

Артём Зинкин

Лучше не гуглить и подумать самостоятельно. Тест можно пройти несколько раз :)
Чтобы поделиться задачей с коллегами или друзьями, отправьте им ссылку :)
Забыл сказать, что у этой задачи есть подробное решение. Посмотрите его :)
Попробуйте решить эту задачу сами и посмотрите наши разборы похожих задач :)
Кстати, на ЕГЭ тоже нельзя копировать :)
Этим материалом удобно поделиться по прямой ссылке :)