Algorithm 哈夫曼树:猜牌游戏
“设计一个最小化预期问题数量的策略 在下面的游戏[Gar94]中问道,你有一副牌 这包括一张黑桃王牌,两张黑桃平手,三张黑桃 三,加上九个九,总共45张牌。有人抽 来自shuffleddeck的卡片,您必须通过询问来识别 回答为是或否的问题。” 这是一个来自算法设计和分析的练习 我想到的是两种解决方法:Algorithm 哈夫曼树:猜牌游戏,algorithm,tree,huffman-code,Algorithm,Tree,Huffman Code,“设计一个最小化预期问题数量的策略 在下面的游戏[Gar94]中问道,你有一副牌 这包括一张黑桃王牌,两张黑桃平手,三张黑桃 三,加上九个九,总共45张牌。有人抽 来自shuffleddeck的卡片,您必须通过询问来识别 回答为是或否的问题。” 这是一个来自算法设计和分析的练习 我想到的是两种解决方法: 是9号吗? 不是:是8号吗? 不是:是7号吗。。。等等 这张卡>5吗? 否:卡是否>2。。。等等 哪种方法是正确的 欢迎任何帮助 编辑:我应该使用贪婪的方法。这两种方法都不是最好的方法。你可以进
编辑:我应该使用贪婪的方法。这两种方法都不是最好的方法。你可以进一步概括你提出的问题,比如:“所选卡片是1、4、7还是8中的一张?”
要决定要问哪个问题,您需要构建一个包含数字的哈夫曼树。然后你会问:“所选卡片是左子树中的一个数字吗?”如果是,向下移动到左子树并重复。否则,移动到右侧子树并重复。这两种方法都不是最好的方法。你可以进一步概括你提出的问题,比如:“所选卡片是1、4、7还是8中的一张?”
要决定要问哪个问题,您需要构建一个包含数字的哈夫曼树。然后你会问:“所选卡片是左子树中的一个数字吗?”如果是,向下移动到左子树并重复。否则,移动到右侧子树并重复。哈夫曼代码可以排序,这样问题就像问题中的#2一样。例如,“x<7吗?”,是的,然后是“x<5吗?”,等等@MarkAdler:这很有趣,你是对的,在这种情况下可以在保持最佳结果的同时完成。我很好奇你是如何看待这一点的:你是否分析了9张权重为1-9的卡的具体情况,或者权重是否有某种通用属性使这一点成为事实?很明显,因为频率是按照卡值的顺序排列的,所以规范代码自然会对符号进行排序。一般属性是value1