我最近遇到了编码问题,它与Huffman Tree Encoding非常相似:项目显示的越多,我们得到的代码越短。
但是不同之处在于:在霍夫曼编码中,一种类型的商品的所有成本为length_of_code_for_item *频繁度,但在我的需求中,成本为2 ^ length_of_code_for_item *频繁度。
任何现有的编码算法?
由于武汉爆发冠状病毒,中国延长了春节假期。因此,我在业余时间回顾了这一需求。
[我找到了一些有关此问题的论文,并在python中编写了note(中文,但您可以使用google translation)和sample code。
[论文是:Parker,Jr DS。霍夫曼算法的最优性条件[J]。 SIAM计算学报,1980,9(3):470-489。
简而言之,本文讨论了如果父母的权重不是孩子的总和(F(x,y)= x + y)会怎样?得出结论,如果函数为准线性(有某些要求),则原始的霍夫曼算法仍将生成具有最低根权重的二叉树。
就我而言,我们需要定义F(x,y)=2(x+y)
,一切正常。