【问题标题】:Compressibility Example可压缩性示例
【发布时间】:2011-03-02 04:32:57
【问题描述】:

来自我的算法教科书:

一年一度的县赛马将带来三匹从未相互竞争过的纯种马。很兴奋,您研究了他们过去的 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 位,Whirlwind 380 位,Phantasm 420 位(检查一下!)。 Aurora 的编码最短,因此在强烈的意义上是最可预测的。

他们是如何获得 420 的 Phantasm 的?我不断收到 400 个字节,如下所示:

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

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

此处提供教科书:http://www.cs.berkeley.edu/~vazirani/algorithms.html(第 156 页)。

【问题讨论】:

  • “哪匹马最容易预测?” - 这实际上并没有回答这个问题,因为排名取决于比赛中的其他马匹。 Aurora 可能每次都以完全相同的时间运行课程——精确到毫秒! - 由于比赛中有其他马匹,仍然会得到那里显示的结果。

标签: algorithm compression information-theory huffman-code


【解决方案1】:

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

正确的霍夫曼码是通过以下方式生成的:

  1. 结合两个最不可能的结果:0.2 和 0.2。得到 0.4。
  2. 结合接下来的两个最不可能的结果:0.3 和 0.3。获得 0.6。
  3. 结合 0.4 和 0.6。获取 1.0。

如果您这样做,您将获得 420 位:

  1. 结合两个最不可能的结果:0.2 和 0.2。得到 0.4。
  2. 结合 0.4 和 0.3。 (错误!)得到 0.7。
  3. 结合 0.7 和 0.3。获取 1.0

【讨论】:

    猜你喜欢
    • 2021-09-30
    • 2014-01-29
    • 1970-01-01
    • 2023-03-23
    • 2015-01-25
    • 2011-06-05
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多