Для того чтобы сообщение, передаваемое по каналу связи, могло быть однозначно декодировано, необходимо, чтобы ни одно кодовое слово не являлось префиксом другого кодового слова. Это свойство называется префиксным кодом. Рассмотрим имеющиеся кодовые слова:
Надо найти кратчайшее кодовое слово для буквы D, которое не будет префиксом для других кодов и не будет включать другие коды как префиксы.
Начнём с анализа существующих кодов. Кодовое слово для буквы B – 0, самое короткое, поэтому любое новое кодовое слово не может начинаться с 0. Коды A (111) и C (100) начинаются с 1, и нужно учитывать, что никакое новое слово не должно совпадать с этими кодами или включать их как часть.
Теперь рассмотрим возможные варианты для кода D:
- Самый короткий вариант – это 1-значное слово. Но единственное 1-значное слово (0) уже занято кодом для B.
- Переходим к 2-значным словам. Возможные варианты: 10, 11. Однако 11 является префиксом кода A (111), поэтому его использовать нельзя. Код 10 также не подходит, так как он может быть началом более длинного кода.
- Переходим к 3-значным словам. Возможные варианты: 000, 001, 010, 011, 101, 110. Рассмотрим их:
- 000 – не используется, подходит.
- 001 – не используется, подходит.
- 010 – не используется, подходит.
- 011 – не используется, подходит.
- 101 – используется для буквы C, не подходит.
- 110 – не используется, подходит.
Из этих вариантов выбираем кратчайший и с наименьшим числовым значением. Это код 000.
Таким образом, кратчайшее кодовое слово для буквы D, при котором код будет допускать однозначное декодирование, и с наименьшим числовым значением, является 000.