Teacher & coder

Задача № 284

По каналу связи передаются сообщения, содержащие только шесть букв: А, Б, Л, О, С, Т. Для передачи используется двоичный код, удовлетворяющий условию Фано. Кодовые слова для некоторых букв известны: Б — 001, С — 110, О — 1111.

Какое наименьшее количество двоичных знаков потребуется для кодирования слова БАЛЛАСТ?

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

Решение

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

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

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

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

Если на дереве уже есть больше свободных кодов, чем осталось букв для кодирования, то новые ветви добавлять не нужно — раздаём каждой букве свободный код.

По условию задачи нужно закодировать слово БАЛЛАСТ минимальным количеством двоичных знаков, то есть самые короткие коды даём часто повторяющимся буквам.

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

Сопоставим каждой букве из слова БАЛЛАСТ её код. Сложим все длины и получим итоговый ответ: 17.

БАЛЛАСТ
3222233

Артём Зинкин

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