我正在尝试使用霍夫曼编码为一组符号创建最佳编码。然而,对编码施加了约束,使得没有编码包含字符串“00”。
例如,编码“A”=“0”和“B”=“10”将不满足约束,因为字符串“BA”编码为“100”,其中包含“00”子字符串。
这意味着代码字也不能包含字符串“00”。例如,编码“A”=“1”、B=“00”和C=“01”将不满足约束,因为编码“B”总是会导致“00”出现在编码中。
我尝试修改维基百科上找到的霍夫曼编码算法:
还有一种情况是队列中只剩下两个节点都是非叶节点。我不知道如何解决这个问题。否则,我相信这会创建一个满足约束的编码,但我不确定它是否是最优的,并且我想确定它是最优的。