Для того чтобы кодирование сообщений, содержащих буквы К, Р, А, Н, было однозначно декодируемым, необходимо, чтобы ни одно кодовое слово не было префиксом другого кодового слова. Это называется префиксным кодом. Уже известны коды для букв К, А и Н:
Теперь нужно выбрать кратчайшее возможное кодовое слово для буквы Р, которое не является префиксом для других кодов и не содержится в других кодах как префикс.
Проанализируем возможные варианты:
Двоичный код длины 1:
- 0: не подходит, так как уже используется в коде К: 00.
Двоичные коды длины 2:
- 00: не подходит, так как уже используется для буквы К.
- 01: не подходит, так как 010 является кодом для буквы Н.
- 10: подходит, так как не совпадает с началом или концом других кодов.
- 11: подходит, так как не совпадает с началом или концом других кодов.
Из двоичных кодов длины 2, которые подходят, выбираем код с наименьшим числовым значением. Это код 10.
Проверим:
- 10 не является префиксом для 00, 1 и 010.
- 00, 1 и 010 не являются префиксами для 10.
Таким образом, кратчайшее кодовое слово для буквы Р, при котором код будет допускать однозначное декодирование, и имеющее наименьшее числовое значение, это 10.