Значит, есть шесть символов? Тогда максимальная длина кода не может быть 17. Максимальная длина кода с шестью символами для любой набор частот составляет пять бит. (0, 10, 110, 1110, 11110, 11111).
Для этого конкретного набора вероятностей, предполагающих один символ на вероятность и что вероятности являются точными, вы можете получить два разных кода в зависимости от выбора, сделанного при выполнении алгоритма Хаффмана. Один имеет максимальную длину 3, другую - максимальную длину 4. Оба кода одинаково оптимальны при кодировании символов. Два кода имеют длину кода в том же частотном порядке (4,4,3,2,2,2) и (3,3,3,3,2,2).
Вы можете означать сумму бит над шестью возможными символами, которая на самом деле составляет 17 для одного из кодов, но 16 для другого. Однако это бессмысленная мера, поскольку вы использовали каждый символ один раз, в противоречие с их заявленными вероятностями. Полезной мерой было бы умножение каждой длины символа в битах на вероятность получения средней длины символа в битах. Это два бита для обоих этих кодов. Вот как вы подтверждаете, что оба кода одинаково оптимальны.
В целом вам необходимо применить алгоритм Хаффмана, чтобы определить максимальную длину кода. Других ярлыков нет. Вы можете пересечь дерево, чтобы найти максимальную длину. Вам не нужно явно генерировать код как таковой, но код подразумевается деревом.
Вы можете вычислить энтропию, чтобы получить нижнюю границу средней длины символа в битах. Это сумма каждой вероятности, умноженная на ее отрицательный логарифм базы-2. В этом случае энтропия равна 2.446.
Можете ли вы уточнить? – SamuelNLP
Что такое "длина кода"? Вы имеете в виду длину символа, который создает максимальную длину? – rayryeng
Сгенерированный код вектора имеет длину, как показано выше. Сгенерированный код v имеет длину 17 бит. Могу ли я узнать длину генерируемого кода v без генерации кода huffman? –