来自我的算法教材:
每年一次的县级赛马比赛将有三匹从未相互竞争的纯种马参加。你兴奋地研究了它们过去200场比赛,并将其总结为四个结果的概率分布:第一名(“第一名”),第二名,第三名和其他。
Outcome Aurora Whirlwind Phantasm
first 0.15 0.30 0.20
second 0.10 0.05 0.30
third 0.70 0.25 0.30
other 0.05 0.40 0.20
哪匹马最可预测?一个量化的方法是看它们的可压缩性。将每匹马的历史记录写成一个由200个值(first, second, third, other)组成的字符串。然后可以使用赫夫曼算法计算编码这些记录字符串所需的总位数。结果为:Aurora需要290位,Whirlwind需要380位,Phantasm需要420位(请自行核实)。因为Aurora的编码最短,所以从某种意义上说它是最可预测的。
他们如何得出Phantasm需要420位?我一直得到400字节,如下:
合并first、other=0.4,合并second、third=0.6。每个位置最终需要2位来编码。
我是否误解了赫夫曼编码算法?
教材在此处可用:http://www.cs.berkeley.edu/~vazirani/algorithms.html(第156页)。