Давай решим эту задачу. Нам нужно закодировать слово БАЛАЛАЙКА, используя двоичный код с условием Фано. Известен код для буквы Б.
В слове БАЛАЛАЙКА буквы встречаются:
* Б - 1 раз
* А - 3 раза
* Л - 2 раза
* Й - 1 раз
* К - 1 раз
Известный код:
* Б - 00
Нужно назначить коды буквам А, В, Г, Й, К, Л. Чем чаще буква встречается, тем короче должен быть код. Попробуем такие варианты:
* А - 1
* Л - 01
* В - 000
* Г - 100
* Й - 101
* К - 110
Но этот вариант не верен, поскольку нарушается условие Фано.
Попробуем коды:
* А - 1
* Л - 01
* В - 100
* Г - 101
* Й - 110
* К - 111
Закодируем слово БАЛАЛАЙКА:
* Б - 00 (2 знака)
* А - 1 (1 знак)
* Л - 01 (2 знака)
* А - 1 (1 знак)
* Л - 01 (2 знака)
* А - 1 (1 знак)
* Й - 110 (3 знака)
* К - 111 (3 знака)
* А - 1 (1 знак)
Суммарное количество знаков: 2 + 1 + 2 + 1 + 2 + 1 + 3 + 3 + 1 = 16
Теперь можно попробовать другие варианты кодов.
* А - 01
* Л - 10
* В - 001
* Г - 0001
* Й - 00001
* К - 110
Закодируем слово БАЛАЛАЙКА:
* Б - 00 (2 знака)
* А - 01 (2 знака)
* Л - 10 (2 знака)
* А - 01 (2 знака)
* Л - 10 (2 знака)
* А - 01 (2 знака)
* Й - 00001 (5 знаков)
* К - 110 (3 знака)
* А - 01 (2 знака)
Суммарное количество знаков: 2 + 2 + 2 + 2 + 2 + 2 + 5 + 3 + 2 = 22
Ответ: 16