Строгое доказательство не очень трудное, особенно для тех, кто знаком с деревьями Хаффмана. Пусть у нас всего 3 рыцаря (для простоты). Построим двоичное дерево "стандартным образом": выпал 0 идем налево, выпала 1 идем направо. Получится бесконечное дерево, в листах которого написано либо 1 либо 2 либо 3 ("имена" рыцарей). Вероятность листа высоты
, очевидно,
. Сумма всех вероятностей для данного рыцаря должна быть равна
. Замечаем, что
Это означает, что для каждого рыцаря имеется ровно 1 лист высоты 2, ровно 1 лист высоты 4 и тд. А это и есть решение
Cash.
Можно, однако, возразить, что, например вместо
можно использовать
. Но это кодирование не оптимально. Изменяя, если потребуется, кодировку, можно добиться того, чтобы листы с вероятностями
были "братьями". А это значит, что вместо этих двух листов, надо назначить листом их родительский узел. Ну например, пусть кодировка такая:
0,0,0 - первый рыцарь
0,0,1 - первый рыцарь
Такую кодировку легко "сократить", назначив
0,0 - первый рыцарь.
Для 12 рыцарей все аналогично.