Задание EGEINF5AD895: Однозначное кодирование и условие Фано

ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий

Открыть решение ↓ Ошибка или пожелание

Тип задачи: Однозначное кодирование и условие Фано.

Учебные темы: Двоичное кодирование. Равномерные и неравномерные коды. Декодирование сообщений, записанных с помощью неравномерных кодов. Условие Фано. Построение однозначно декодируемых кодов с помощью дерева.

Впишите правильный ответ.

По каналу связи передаются сообщения, содержащие только буквы из набора: А, Д, К, Н, Р. Для передачи используется двоичный код, удовлетворяющий условию Фано.  Кодовые слова для некоторых букв известны: Р –  0101, Н –  011.
Для трёх оставшихся букв А, К и Д кодовые слова неизвестны. Какое количество двоичных знаков требуется для кодирования слова КАНАДКА, если известно, что оно закодировано минимально возможным количеством двоичных знаков?

Примечание. Условие Фано означает, что никакое кодовое слово не является началом другого кодового слова.
Это обеспечивает возможность однозначной расшифровки закодированных сообщений.



i
СВОЙСТВА ЗАДАНИЯ
КЭС:
2.1 Двоичное кодирование. Равномерные и неравномерные коды. Декодирование сообщений, записанных с помощью неравномерных кодов. Условие Фано. Построение однозначно декодируемых кодов с помощью дерева
Тип ответа:Краткий ответ
Номер: 5AD895
НЕ РЕШЕНО Ответить

Решение задания EGEINF5AD895

Ответ: 14

Известные коды: Р → 0101; Н → 011. Начальные нули являются частью кодового слова и не отбрасываются.

Условие Фано запрещает два случая: новый код является началом уже известного или известный код является началом нового. Изобразим возможные записи мысленно как двоичное дерево: ребро 0 ведёт влево, ребро 1 вправо. Известный код занимает вершину вместе со всеми её продолжениями; его предки также не могут стать кодами других букв.

После исключения занятых ветвей остаются свободные начала: 00, 0100, 1. Это самые короткие корни полностью свободных ветвей. Их можно получить обходом дерева: если текущая строка уже является известным кодом, её ветвь закрыта; если она не совпадает с началом ни одного известного кода, вся ветвь свободна; иначе проверяем два продолжения, добавляя 0 и 1. Такой обход охватывает все допустимые новые коды.

Кодируем слово КАНАДКА. Для неизвестных кодов частоты букв равны: А: 3, Д: 1, К: 2. Длина сообщения равна сумме произведений частоты буквы на длину её кода. Символы с частотой 0 всё равно должны иметь код: весь заданный алфавит обязан удовлетворять условию Фано.

Обозначим F(d, S) минимальную стоимость размещения набора букв S внутри полностью свободной ветви, начало которой имеет длину d. Стоимость — сумма «вес буквы × полная длина кода». Для пустого набора F(d, ∅) = 0; для единственной буквы a имеем F(d, {a}) = d · wₐ: ей отдаём корень свободной ветви.

Если букв две или больше, разделяем их на два непустых набора T и S ∖ T и добавляем к началу соответственно 0 и 1. Общая формула: F(d, S) = min [F(d + 1, T) + F(d + 1, S ∖ T)] по всем таким разделениям. Одну занятую дочернюю ветвь можно поднять к родителю, уменьшив длины, поэтому для поиска минимума достаточно этих разветвлений. Формула заканчивается на одноэлементных наборах и перебирает все существенные формы дерева.

Для нескольких свободных ветвей обозначим через Gⱼ(S) минимум после первых j ветвей. Изначально доступен только пустой набор со стоимостью 0. При добавлении ветви глубины d проверяем все T ⊆ S и выбираем минимум Gⱼ₋₁(S ∖ T) + F(d, T). Это учитывает и неиспользованную ветвь, когда T пуст. Порядок наборов в следующих строках: ∅, А, Д, АД, К, АК, ДК, АДК.

Таблица минимальной стоимости для каждого набора:
После ветви 00: 0, 6, 2, 12, 4, 15, 9, 21.
После ветви 0100: 0, 6, 2, 10, 4, 14, 8, 19.
После ветви 1: 0, 3, 1, 5, 2, 7, 4, 11.

Получен минимум для неизвестных кодов: 11. Он достижим, например, при назначении:
А: код 1, длина 1, вес 3; вклад = 3 · 1 = 3.
Д: код 0100, длина 4, вес 1; вклад = 1 · 4 = 4.
К: код 00, длина 2, вес 2; вклад = 2 · 2 = 4.

Вклад известных кодов: 0 · 4 + 1 · 3 = 3.

Код слова по буквам: 00 | 1 | 011 | 1 | 0100 | 00 | 1.

Искомая длина = 3 + 11 = 14.

Проверка: все назначенные слова лежат в свободных ветвях; внутри каждой ветви они являются разными листьями, поэтому условие Фано выполнено и между новыми кодами, и со старыми. Сумма вкладов соответствует найденному минимуму. Таблица перебрала все распределения между свободными ветвями, а рекурсия — все разветвления внутри них, поэтому меньшая стоимость невозможна.

Ответ: 14.

Помочь улучшить сайт

Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINF5AD895.

Сообщение увидит только команда сайта: на странице оно не публикуется.

Комментарии к решению

Комментарии видны всем посетителям сайта.

Комментариев пока нет. Будьте первым.

Чтобы оставить комментарий, войдите или зарегистрируйтесь.