迭代改进算法中的无限循环

时间:2018-10-27 00:15:34

标签: python loops iteration constraints artificial-intelligence

我正在解决N皇后问题,而当N = 8时我面临一个问题。当N = 8时,算法陷入无限循环。不幸的是,由于我已签署一项保证书,因此我无法与您共享代码,但我希望我能说清楚。让我们进行以下配置:

. 0 1 2 3 4 5
0 - - - - - Q
1 - - - Q - -
2 - Q - - - -
3 - - - - Q -
4 - - Q - - -
5 - - - - - Q

我的代码将随机抽取一行,计算每个单元格上的威胁,然后将女王移动到最小威胁单元格。在这种情况下,行1、2、3和4不能更改,因为女王/王后位于威胁最小的单元中。第0行和第1行可以移到最左侧,但它们仍将彼此对待。这会使算法陷入无限循环。

1 个答案:

答案 0 :(得分:0)

在没有发布任何代码或详细算法的情况下,您确实没有一个 solid 堆栈溢出问题。但是,我正在处理我们可以提供帮助的部分:您采用通用方法探索搜索空间的一般方法。如果回溯实施不当,这似乎是一个问题。

我看到两个问题:

  1. “ ...无法更改,因为女王/王后位于受威胁最低的牢房中。”这似乎是您的算法的人为限制,从而导致无法解决问题。您需要打破它自身的逻辑缺陷。
  2. “ ...使算法陷入无限循环。”这是遍历搜索空间时的一个简单错误。当您到达最底行并不能解决问题时,您需要回溯到上一个选择的点,然后继续进行未尝试的选择中的下一个。您尚未正确维护该设置,因为程序将返回到先前被拒绝的选择。

我希望这会有所帮助。