Вопрос:

По каналу связи передаются сообщения, содержащие только семь букв: А, Б, Г, И, Н, Р, Т. Для передачи используется двоичный код, удовлетворяющий условию Фано. Кодовые слова для некоторых букв известны: Г – 110, И – 01, Т – 10. Какое наименьшее количество двоичных знаков потребуется для кодирования слова БАРАБАН?

Ответ:

Для решения этой задачи нам нужно закодировать буквы А, Б, Р, Н. У нас уже есть коды для Г, И, Т. Необходимо выбрать коды для оставшихся букв так, чтобы выполнялось условие Фано (ни одно кодовое слово не является началом другого) и общая длина кода для слова БАРАБАН была минимальной.

Коды, которые уже заняты: Г – 110, И – 01, Т – 10.

Возможные свободные коды, начинающиеся с одного бита: 00, 11.

Попробуем кодировать с использованием кодов наименьшей длины:

Предположим, что:

  • А – 00
  • Б – 11
  • Р – 111
  • Н – 000

В таком случае, код для слова БАРАБАН будет:

Б – 11 (2 знака)

А – 00 (2 знака)

Р – 111 (3 знака)

А – 00 (2 знака)

Б – 11 (2 знака)

А – 00 (2 знака)

Н – 000 (3 знака)

Общая длина кода: 2 + 2 + 3 + 2 + 2 + 2 + 3 = 16

Теперь проверим, можно ли использовать более короткие коды для букв А, Б, Р, Н:

Если мы назначим коды:

  • А – 00
  • Б – 11
  • Р – 111
  • Н – 000

Тогда слово БАРАБАН будет закодировано как:

11 00 111 00 11 00 000

Длина кода будет равна 2 + 2 + 3 + 2 + 2 + 2 + 3 = 16.

Этот вариант тоже подходит.

Попробуем еще варианты. Если мы не сможем найти коды короче, то 16 - минимальное количество знаков, которое потребуется для кодирования слова.

Ответ: 16

Смотреть решения всех заданий с листа

Похожие