矩阵中置换的多项式算法

时间:2018-03-05 14:58:45

标签: algorithm

(不能让sigma标志在浏览器上看起来很好)。

对于整数n,我们将F_n标记为Injective函数的组

f:{1,2,3…,n}→{1,2,3…,n}

对于具有非负值的nXn阶的给定矩阵A,我们将标记:

P(A)=∑_(f∈F_n)▒〖A_(1,f(1))*A_(2,f(2)) 〗…*A_(1,f(1) )*A_(n,f(n))

计划确定P(A)= 0的多项式算法。 我正在考虑在矩阵中查找n^2-n+1个零,然后在任何排列中,产品中将为零,然后总和将为零,这将给出O(n ^ 2)的运行时间。不确定解决方案。 有什么想法吗? 感谢

the question

示例:

example

2 个答案:

答案 0 :(得分:1)

你的问题是“有没有办法将N车放在NxN棋盘上,这样他们就不会互相攻击,同时避开标记的(零)方格。”

例如,如果一行或一列都是零,那么它是不可能的,P(A)= 0,所以寻找n ^ 2 - n + 1个零不会削减它。

然而,这里有答案,为这个问题提供了一个可爱的多项式时间解决方案:https://cs.stackexchange.com/questions/28413/how-hard-is-this-constrained-n-rooks-problem

答案 1 :(得分:0)

在所有三个层次应用分配法后,27种产品组合的总和很简单。

(a+b+c) * (d+e+f) * (g*h*i)

因此,您所要做的就是检查行和是否为0。