Вопрос:

По каналу связи передаются сообщения, содержащие только 4 буквы: А, Т, О, М; для передачи используется двоичный код, допускающий однозначное декодирование. Для букв Т, О, м используются такие кодовые слова: T-100, 0-00, м-11. Укажите кратчайшее кодовое слово для буквы А, при котором код будет допускать однозначное декодирование. Если таких кодов несколько, укажите код с наименьшим числовым значением.

Ответ:

Поскольку код должен допускать однозначное декодирование, он должен быть префиксным, то есть ни одно кодовое слово не должно быть началом другого. Нам даны кодовые слова для букв Т, О, М:
  • Т: 100
  • О: 00
  • М: 11
Буква А должна иметь кратчайшее кодовое слово, которое не будет началом или продолжением существующих кодов. Рассмотрим возможные варианты для буквы А:
  • Если А = 0, то это начало кода для О (00). Не подходит.
  • Если А = 1, то это начало кода для Т (100). Не подходит.
  • Если А = 10, то это начало кода для Т (100). Не подходит.
  • Если А = 11, то это совпадает с кодом для М. Не подходит.
  • Если А = 01, то это не является началом или продолжением существующих кодов. Длина 2.
  • Если А = 001, то это также не является началом или продолжением существующих кодов. Длина 3.
  • Если А = 101, то это не является началом или продолжением существующих кодов. Длина 3.
  • Если А = 110, то это не является началом или продолжением существующих кодов. Длина 3.
  • Если А = 111, то это не является началом или продолжением существующих кодов. Длина 3.
Наиболее краткое кодовое слово для буквы А, которое удовлетворяет условию однозначного декодирования, это '01', длиной 2 символа. Другое возможное кратчайшее кодовое слово длиной 2 символа – '10', но оно является префиксом для кода '100' (Т), поэтому не подходит. Если кратчайшее кодовое слово для буквы А - '01', то полное кодирование будет:
  • А: 01
  • Т: 100
  • О: 00
  • М: 11
Проверим на префиксность: '01' не является префиксом '00', '11', '100'. '00' не является префиксом '01', '11', '100'. '11' не является префиксом '01', '00', '100'. '100' не является префиксом '01', '00', '11'. Код префиксный. Рассмотрим варианты кодов длиной 3 символа, если бы не было кода '01'. Например, '001' или '101' или '110' или '111'. Среди них кратчайшим будет '01'. Если бы мы рассматривали и другие варианты, например, '101' (длина 3), то '01' (длина 2) является кратчайшим. Если бы мы могли использовать '00', это было бы занято О. Если бы мы могли использовать '11', это было бы занято М. Если бы мы могли использовать '0', это было бы занято О. Если бы мы могли использовать '1', это было бы занято Т. Таким образом, кратчайшее кодовое слово для буквы А - '01'. Если бы были другие кратчайшие коды, например, '001', '101', '110', '111', то '01' является самым коротким. Итак, кратчайшее кодовое слово для буквы А, обеспечивающее однозначное декодирование - '01'.

Ответ: 01