可压缩性示例

从我的算法教科书:

一年一度的县级赛马会带来三匹从未相互竞争过的纯种马。 兴奋的是,你研究了他们过去的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个值(第一,第二,第三,其他)。 然后可以使用霍夫曼算法计算编码这些记录字符串所需的位总数。 这对于Aurora来说是290比特,对于旋风来说是380比特,对于Phantasm来说则是420(检查它!)。 Aurora具有最短的编码,因此在最强烈的意义上是最可预测的。

他们是如何得到Phantasm 420的? 我一直得到400字节,如下所示:

先结合,其他= 0.4,结合第二,第三= 0.6。 最终以2位编码每个位置。

有什么我误解了霍夫曼编码算法吗?

教科书可在此访问:http://www.cs.berkeley.edu/~vazirani/algorithms.html(第156页)。


我认为你是对的:Phantasm的200个结果可以用400位(而不是字节)表示。 奥罗拉的290和旋风的380是正确的。

以下列方式生成正确的霍夫曼码:

  • 结合两个最不可能的结果:0.2和0.2。 得到0.4。
  • 结合下两个最不可能的结果:0.3和0.3。 获得0.6。
  • 结合0.4和0.6。 获取1.0。
  • 如果你这样做,你会得到420位:

  • 结合两个最不可能的结果:0.2和0.2。 得到0.4。
  • 合并0.4和0.3。 (错!)得到0.7。
  • 结合0.7和0.3。 获取1.0
  • 链接地址: http://www.djcxy.com/p/46315.html

    上一篇: Compressibility Example

    下一篇: Pagination in Google App Engine with Java