霍夫曼树:猜卡游戏

时间:2012-10-21 15:51:25

标签: algorithm tree huffman-code

  

“设计一种最小化预期问题数量的策略   在下面的游戏[Gar94],#52中询问。你有一副纸牌   它包括一个黑桃a,两个黑桃,三个   三分,最多9个9,总共45张牌。有人画画   来自洗牌甲板的卡片,你必须通过询问来识别   问题是否回答。“

这是算法设计和分析的练习。

我想到的是两种解决方法:

  1. 是9吗? 不:是8岁吗? 不:这是7吗? ......等等。

  2. 卡是> 5? 否:卡是> 2? ......等等。

  3. 哪种方法正确?

    欢迎任何帮助。

    编辑:我应该使用贪婪的方法。

1 个答案:

答案 0 :(得分:5)

这些都不是最好的方法。您可以进一步概括您提出的问题,例如:“所选卡片是1,4,7还是8?”。

要确定要问哪个问题,您需要构建一个包含数字的Huffman树。然后你会问:“所选卡片是否是左子树中的数字之一?”如果是,请向下移动到左子树并重复。否则,请移至右侧子树并重复。