创建十六进制洪水谜题的算法

6
我正在创建一个谜题游戏,容易级别可以手动玩,但更难的级别需要计算机程序来解决。这个谜题是在六边形棋盘上进行的泛洪填充。你可以在这里尝试一个原型here

alt text
(来源:hacker.org

这个谜题的工作方式如下:从顶部选择一种颜色,从左上角开始进行泛洪填充。这会逐步将棋盘转换为单一的颜色。挑战在于在规定的步数内完成。

我已经创建了几个类似的谜题,关键在于使用一种算法生成难以解决的棋盘,而不知道它们是如何创建的。例如,在这里我们可以通过反向泛洪填充来生成一个棋盘:从一个实心的棋盘向后工作,直到它被取消填充。我们知道这需要多少步骤,并将其设置为解决方案的下限。

我面临的问题是,当我尝试这种方法时,我的上限太高了。即使随机移动,也很容易在这个步数内解决拼图。
一种不是解决方案的方法是生成一个随机的板子,然后最优地解决它,并将其设置为目标。重点是创建一个拼图,其中最优解的解决时间是NP时间或至少是困难的P。
所以我要找的是一种算法,可以生成极难的板子,在解决它们变得更加困难的情况下。

请将“我面临的问题是…”这句话移到一个段落的开头。在最长的段落结尾,它会被忽略掉。 - Daniel C. Sobral
两年过去了,您能告诉我们您目前的想法吗? - smci
我想不出任何好的东西,所以我从未将这个谜题放到网上,很遗憾。如果有人想出一个好的算法,我仍然会制作它! - adum
3个回答

1

在进行RSA加密时,我们不会找到质数,而是选择随机数并对它们进行测试,这些测试给出了越来越高的质数概率,但从未证明过。

我建议采用相同的方法。尝试找到具有所需属性的谜题的良好可能性条件,并对其进行测试。或者您可以使用遗传算法/神经网络并训练它们识别“好”的谜题,这等同于同样的方法。


1

我会尝试证明它是NP完全问题或者在P中,以便了解哪些配置比较困难。

我还会将六边形抽象成图形来表示。


1

我玩过很多矩形洪水填充难题(http://labpixies.com/gadget_page.php?id=10)。很高兴看到有六边形版本!我认为找到一个难的游戏就像是避免相同颜色的大块出现在难题中一样容易。至少在我看过的矩形情况下,几乎所有可以在少数步骤内解决的难题都有大的颜色块。

P.S. 我认为你的“下限”不正确。当向前工作时,如果使用了好的策略,实际上可以在更少的步骤中完成。这个“下限”实际上是最优解的上限。


我可能不应该使用“下限”这个术语,因为当目标是最小化时,它有点模糊,但是没错,我们讨论的是同一件事。避免大块颜色在制作难题时是有意义的,但我需要一种方法来证明快速解决方案。 - adum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接