反向跟踪皇后的反射和对称性

时间:2014-11-24 08:04:33

标签: algorithm backtracking n-queens

我正在阅读Anany Levition设计和分析算法简介中的反向跟踪算法。

以下是我所指的页面。

http://books.google.co.in/books?id=mXA_r6mb-s8C&pg=PA399&lpg=PA399&dq=there+are+several+tricks+that+might+reduce+the+size+of+state-space+tree&source=bl&ots=hMb30M4m_2&sig=2ZIT49KTcztgBAVizbssfjYH_Yk&hl=en&sa=X&ei=OeNyVK-CE8fnuQTdnYCACw&ved=0CBwQ6AEwAA#v=onepage&q=there%20are%20several%20tricks%20that%20might%20reduce%20the%20size%20of%20state-space%20tree&f=false

这里作者提到如下。

有一些技巧可能有助于减少状态空间树的大小。一个是利用组合问题中经常出现的对称性。例如,n-queens问题的板具有几个对称性,因此可以通过反射或旋转从其他解决方案获得一些解决方案。这特别意味着我们不需要考虑最后一层(n / 2)列中第一个女王的位置,因为任何解决方案中第一个女王在正方形(1,i),天花板(n / 2)<1。 = i <= n,可以通过从第一个正方形(1,n-i + 1)的解的反射(哪个?)获得。这个观察结果将树的大小减少了一半。

我对上述文字的疑问是

  1. 作者通过利用组合问题中常见的对称性来表示什么意思?

  2. 作者在上述背景下的反思是什么意思?

  3. 在上面给出的例子中,作者的意思是通过以下陈述“我们不需要考虑最后一层(n / 2)列中第一个女王的位置,因为任何解决方案中第一个女王的方形(1, i),ceiling(n / 2)&lt; = i&lt; = n,可以通过从第一个正方形(1,n-i + 1)“的解的反射(哪个?)得到? 这里请求示例n = 4。

1 个答案:

答案 0 :(得分:0)

我将尝试通过示例回答问题的简化变化,这是相同的皇后问题,但是在4x4板上。

问题的一个可能解决方案是(1,2),(2,4),(3,1),(4,3)

_  _  Q  _
Q  _  _  _ 
_  _  _  Q
_  Q  _  _

另一种解决方案是(2,1),(4,2),(1,3),(4,3):

_  Q  _  _
_  _  _  Q
Q  _  _  _
_  _  Q  _

然而,通过生成一个解决方案,我可以立即创建另一个解决方案,无需继续搜索,只需遍历女王的坐标。

同样的事情则相反。如果我发现没有以女王(1,1), (2,1), (_,_), (_,_)

开头的解决方案
Q  Q  _  _
_  _  _  _
_  _  _  _
_  _  _  _

我事先还可以修剪以女王(1,1),(1,2),(_,_),(_,_)开头的所有解决方案:

Q  _  _  _
Q  _  _  _
_  _  _  _
_  _  _  _

使用这个问题的对称属性,每当我回溯并修剪一个不成功的分支时,我实际上也可以修剪其他对称分支。