Давай решим эту задачу. Нужно закодировать слово ВОДОВОРОТ, используя двоичный код с условием Фано. Известны коды для букв Б, Д и Р.
В слове ВОДОВОРОТ буквы встречаются:
* В - 2 раза
* О - 3 раза
* Д - 1 раз
* Р - 1 раз
* Т - 1 раз
Известные коды:
* Б - 01
* Д - 001
* Р - 100
Нужно назначить коды буквам А, В, О, Т. Чем чаще буква встречается, тем короче должен быть код.
Попробуем коды:
* В - 101
* О - 11
* А - 0000
* Т - 0001
Кодируем слово ВОДОВОРОТ:
В - 101 (3 знака)
О - 11 (2 знака)
Д - 001 (3 знака)
О - 11 (2 знака)
В - 101 (3 знака)
О - 11 (2 знака)
Р - 100 (3 знака)
О - 11 (2 знака)
Т - 0001 (4 знака)
Суммарное количество знаков: 3 + 2 + 3 + 2 + 3 + 2 + 3 + 2 + 4 = 24
Попробуем более короткие коды для буквы О.
* В - 101
* О - 00
* А - 0
* Т - 110
Проверим, не будет ли код для О началом других. Теперь кодируем слово ВОДОВОРОТ:
В - 101 (3 знака)
О - 00 (2 знака)
Д - 001 (3 знака)
О - 00 (2 знака)
В - 101 (3 знака)
О - 00 (2 знака)
Р - 100 (3 знака)
О - 00 (2 знака)
Т - 110 (3 знака)
Суммарное количество знаков: 3 + 2 + 3 + 2 + 3 + 2 + 3 + 2 + 3 = 23
Попробуем другие коды:
* В - 010
* О - 1
* A - 0000
* Т - 0001
Получим следующее:
В - 010 (3 знака)
О - 1 (1 знак)
Д - 001 (3 знака)
О - 1 (1 знак)
В - 010 (3 знака)
О - 1 (1 знак)
Р - 100 (3 знака)
О - 1 (1 знак)
Т - 0001 (4 знака)
Суммарное количество знаков: 3+1+3+1+3+1+3+1+4 = 20
Ответ: 20