2
n-queens-completionの複雑さ?
古典的なクイーン問題は、正の整数nが与えられた場合、次の条件を満たす整数の配列Q [ 1 .. n ]があるかどうかを尋ねます。nnnnnnQ[1..n]Q[1..n]Q[1..n] すべてのために私1≤Q[i]≤n1≤Q[i]≤n1\le Q[i] \le niii すべての i ≠ jに対して Q [ i ] ≠ Q [ j ]Q[i]≠Q[j]Q[i]≠Q[j]Q[i] \ne Q[j]i≠ji≠ji\ne j すべての i ≠ jQ[i]−i≠Q[j]−jQ[i]−i≠Q[j]−jQ[i]-i \ne Q[j]-ji≠ji≠ji\ne j すべての i ≠ jに対してQ[i]+i≠Q[j]+jQ[i]+i≠Q[j]+jQ[i]+i \ne Q[j]+ji≠ji≠ji\ne j 各整数は、n × nチェス盤のi番目の行のクイーンの位置を表します。制約は、クイーンが他のクイーンを攻撃しないという要件をエンコードします。n = 2またはn = 3の場合、解が存在しないことを証明するのは簡単です。nの他のすべての値については、閉形式の解が知られています。したがって、決定問題として、nQ[i]Q[i]Q[i]iiin×nn×nn\times nn=2n=2n=2n=3n=3n=3nnnnnnクイーンズ問題は完全に些細な問題です。 nクイーンソリューションを構築するための標準のバックトラッキングアルゴリズムは、行のプレフィックスにクイーンを推測的に配置し、残りの行にクイーンの正当な配置があるかどうかを再帰的に決定します。再帰的なサブ問題は、次のように形式化できます。nnn 整数と整数の配列P …