解决方案数量受限制的N-ook

时间:2019-01-17 20:16:58

标签: algorithm permutation n-queens

这篇文章的目的主要是为相关研究提供关键词。

无约束的N-ook问题

计算N×M(N <= M)棋盘上N个菜鸟的所有可能排列,以使没有菜鸟互相攻击。

解决方案很简单:C(M,N)N!

约束N-ook问题

您不能在国际象棋棋盘的某些地方放一个车子。

例如,如果国际象棋棋盘以0-1矩阵表示,则其中0是您不能放车的地方。所以矩阵的解决方案

1 1 1
1 1 1
0 1 1

是4:

R . . | R . . | . R . | . . R 
. R . | . . R | R . . | R . .
. . R | . R . | . . R | . R .

相关问题

可以轻松解决N-Queen问题中的回溯算法。但是,现在我想解决N = 28附近的问题。即使wiki

,此解决方案也无法一一计算。
  

27×27板是已被完全枚举的最高阶板。

加速的机会

到目前为止,我还想过一些机会来加快算法的速度。

=====无约束子矩阵的框架=====

这是分而治之的方法。例如上面的矩阵

1 1 1
1 1 1
0 1 1

可以分为

  A       B
1 1 1 | 0 1 1
1 1 1 |

,解等于sol(A)* sol(B),其中sol(A)= 2!可以立即进行计算(阶乘比回溯要快得多)。

=============重新排列=============

有时重排可以帮助划分子问题。例如矩阵

1 1 1
1 0 1
1 1 1

等同于

1 1 1
1 1 1
0 1 1

问题

  1. 这种问题的关键词是什么?
  2. 有没有针对这种问题的有效开发技术?

1 个答案:

答案 0 :(得分:4)

rook多项式 rook系数限制排列永久是关键字。

来自Algorithm for Finding the Coefficients of Rook Polynomials的定理3.1

  

n个对象与限制板B的排列数量等于B的permanent

这是我们在问题中定义的B,即0-1矩阵,其中1可以,而0则限制为新秀。 因此,现在我们需要有效地计算矩阵的永久性。

幸运的是,从此code golf开始,Ton Hospel将Glynn formulaGray codeRyser formula一起使用,在测试仪的系统上达到约57秒,n = 36,这对于提问者的情况已经足够了。