解决N皇后拼图的变化

时间:2017-07-02 01:49:16

标签: python backtracking

我写了一个python脚本来解决N Queens拼图。我创建了一个函数,如果提供n,将通过使用回溯来返回它为n个皇后找到的第一个解决方案。通过一个小的修改,可以通过耗尽搜索空间使函数找到并返回所有解。它适用于1到23之间的n。在23之后它开始需要一些时间才能找到一个解决方案。

我想知道是否有可能通过扩展"攻击范围来找到具有进一步约束的解决方案。女王的。国际象棋中的女王可以在水平,垂直和对角线上进行攻击。对于我的修改,女王也可以攻击对角线左边和右边的相邻正方形。由于这种行为,每个女王必须与下一个女王相距4个方格,而不是正常谜题的3个方格。

在下图中,蓝色方块是正常的后方范围,绿色方块代表新的攻击范围:New queen attack range.

我创建了一个新函数,它考虑了这个新约束。但是,在运行我的代码之后,我还没有能够找到任何最多23个数字的解决方案,而在24个之后需要花费很多时间。

所以我的问题是:有没有人知道这个问题是否有解决方案?哪个是有解决方案的最小数字?

如果有人之前已经这样做了,我确定他们的代码会比我的更好更快,但我可以根据需要提供代码。

提前致谢!

1 个答案:

答案 0 :(得分:2)

使用这些超级皇后,你将无法再在NxN板上安装N个皇后,除了普通的1x1板。一种看待这种情况的方法是在NxN板上有2N-1对角线(让我们使用左下角到右上角)。每个女王将攻击3个对角线,除非它们在角落里,它们将攻击2个对角线。

假设我们在角落里有一个女王,占据了2个对角线。然后例如在8x8板上我们剩下13个对角线,可供floor(13/3)个皇后或4个皇后使用。所以最多我们可以在8x8板上有5个皇后。我不知道这是否是一个紧张的上限。