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

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

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

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

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

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

По каналу связи передаются сообщения, содержащие только восемь букв: А, Б, В, Г, Д, Е, Ж и З. Для передачи используется двоичный код, удовлетворяющий условию Фано. Кодовые слова для некоторых букв известны:

 

В

00

Г

10

Д

010

Е

110

Ж

0110

З

111

 

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

В ответе запишите суммарную длину кодовых слов для букв: А, Б.

 

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



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

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

Ответ: 10

Известные коды: В → 00; Г → 10; Д → 010; Е → 110; Ж → 0110; З → 111. Начальные нули являются частью кодового слова и не отбрасываются.

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

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

Нужно минимизировать сумму длин неизвестных кодовых слов. Поэтому каждой неизвестной букве приписываем вес 1. Неизвестные буквы: А, Б.

Обозначим 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)] по всем таким разделениям. Одну занятую дочернюю ветвь можно поднять к родителю, уменьшив длины, поэтому для поиска минимума достаточно этих разветвлений. Формула заканчивается на одноэлементных наборах и перебирает все существенные формы дерева.

При единичных весах стоимость зависит только от количества букв. Начальные значения для свободной ветви: F(d, 0) = 0, F(d, 1) = d; для k ≥ 2 выбираем минимум F(d + 1, j) + F(d + 1, k − j) при j от 1 до k − 1. Затем распределяем k букв между свободными началами. При добавлении очередной ветви пробуем отдать ей от 0 до k букв и берём наименьшую сумму стоимости старых ветвей и новой.

Минимальные суммы для 0, 1, …, 2 букв после добавления каждой свободной ветви:
После ветви 0111: 0, 4, 10.

Получен минимум для неизвестных кодов: 10. Он достижим, например, при назначении:
А: код 01110, длина 5, вес 1; вклад = 1 · 5 = 5.
Б: код 01111, длина 5, вес 1; вклад = 1 · 5 = 5.

Известные коды не входят в требуемую сумму: вопрос касается только оставшихся букв.

Искомая длина = 0 + 10 = 10.

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

Ответ: 10.

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

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

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

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

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

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

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