Donald Knuth的Mastermind算法-我们能做得更好吗?

时间:2018-12-18 04:11:22

标签: knuth

我为Mastermind https://www.cs.uni.edu/~wallingf/teaching/cs3530/resources/knuth-mastermind.pdf实现了Donald Knuth 1977算法

我能够重现他的结果-在最坏的情况下赢得5猜,平均赢得4.476。

然后我尝试了不同的方法。我反复运行Knuth的算法,并在每次开始之前随机随机整理整个组合列表。在最坏的情况下(例如Knuth),我能够以5个猜测赢得胜利,但平均可以赢得4.451个猜测。比Knuth好。

在保持最坏情况的同时,是否有任何以前的工作试图在平均性能上胜过Knuth算法?到目前为止,我在网上找不到任何迹象。

谢谢!

阿隆

2 个答案:

答案 0 :(得分:0)

据我所知,到目前为止,还没有关于这种效果的公开著作。我在一段时间前就已经观察到了这一点,可以通过不总是从“一步一步超前集”中选择(规范地)首次试验来获得更好的结果。我观察到不同的结果,而不是从1122开始,例如5544。也可以尝试随机选择,而不先使用规范。是的,我同意你的观点,这很有趣-但非常非常特别。

答案 1 :(得分:0)

在论文中,Knuth描述了如何选择策略:

  在表1中,通过在每个阶段选择一种测试模式来发现代码,该测试模式在代码制作者可以想到的所有响应中最大限度地减少了剩余可能性的最大数量。如果可以通过“有效”模式(使“四个黑点”成为可能的模式)达到此最小值,则应使用有效的模式。在这种情况下,选择了第一个按数字顺序排列的测试图案。幸运的是,此过程证明可以确保获得五次胜利。

因此,在某种程度上来说,这是一种贪婪的策略(试图在每个步骤上取得最大的进步,而不是整体上的进步),此外,还有一个临时的打破常规的策略。这意味着期望值不一定是最优的,而实际上Knuth确切地说:

  

从“预期移动次数”的角度来看,表1中的策略并不是最佳选择,但可能非常接近。一条可以改进的线[...]

因此,在论文发表时,Knuth意识到它并不是最佳选择,甚至有一个明确的例子。

当此论文重新发布到他的收藏集Selected Papers on Fun and Games(2010年)中时,他在6页的论文中增加了5页的附录。在此附录中,他首先在第一段中提到随机化,并讨论了最小化预期移动数的问题。他将其分析为对所有1296个可能的代码字进行的所有移动的总和,他提到了几篇论文:

  • 他的原始算法给出了5801(平均值为5801/1296≈4.47608),而较小的改进得到了5800(≈4.4753)。

  • 罗伯特·欧文(Robert W. Irving),“朝着最佳的策划策略发展”,《休闲数学杂志》 11(1978),第81-87页[停留在“至多5个”以内达到5664⇒≈≈4.37] >

  • E。 Neuwirth,“策划者的一些策略”,《时代杂志》皮特运营研究26(1982),B257-B278 [达到5658⇒≈≈4.3657]

  • Kenji Koyama和Tony W. Lai,“最佳策划策略”,《休闲数学杂志》 25(1993),251-256 [达到5626⇒≈≈4.34104938]

最后一个是最好的,因为它是通过详尽的深度优先搜索找到的。 (请注意,所有这些论文在预期的动作数上都可以做得更好,如果您有时允许他们采取6动作...我给数字赋予了``最多5个''约束,因为这就是这里的问题)

您可以通过假设编解码器具有对抗性,并且不会在1296个可能的代码字中随机选择一致,从而使这种处理更为通用(更难),但是根据任何分布情况,这都会使打码者最困难。最后,他提到汤姆·内斯特(Tom Nestor)所做的许多工作,这些工作最终解决了许多此类问题。

尝试跟进或再现这些结果可能会很有趣(例如编写详尽的搜索程序)。享受吧!