* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download 8-queen backtrack
Survey
Document related concepts
Cross product wikipedia , lookup
Signal-flow graph wikipedia , lookup
Tensor operator wikipedia , lookup
Vector space wikipedia , lookup
Linear algebra wikipedia , lookup
Matrix calculus wikipedia , lookup
Euclidean vector wikipedia , lookup
Cartesian tensor wikipedia , lookup
Laplace–Runge–Lenz vector wikipedia , lookup
Bra–ket notation wikipedia , lookup
Four-vector wikipedia , lookup
Covariance and contravariance of vectors wikipedia , lookup
Transcript
Backtracking Eight queens problem 1 try all possible C64 8 = 4,426,165,368 2 never put more than one queen on a given row, vector representation : each row specify which column (3,1,6,2,8,6,4,7) Prabhas Chongstitvatana 1 1 8 2 3 4 5 6 7 X X X X X X X X (3,1,6,2,8,6,4,7) Prabhas Chongstitvatana 2 Queen1 for i1 = 1 to 8 do for i2 = 1 to 8 do .... for i3 = 1 to 8 do sol = [i1, i2, . . . i8 ] if solution ( sol ) then write sol stop write “there is no solution” Num. Of positions = 8 8 = 16,777,216 (first soln after 1,299,852 ) Prabhas Chongstitvatana 3 3 Never put queen on the same row (different numbers on soln vector) Queen2 sol = initial-permutation while sol != final-permutation and not solution(sol) do sol = next-permutation if solution(sol) then write sol else write “there is no solution” Prabhas Chongstitvatana 4 Permutation T[1 . . n] is a global array initialize to [1,2,. . n] initial call perm(1) Perm(i) if i = n then use T else for j = i to n do exchange T[i] and T[j] perm(i+1) exchange T[i] and T[j] Number of positions 8! = 40,320 (first soln after 2830) Prabhas Chongstitvatana 5 8-queen as tree search a vector V[1. .k] of integers between 1 and 8 is k-promising, if none of the k queens threatens any of the others. A vector V is k-promising if, for every pair of integers i and j between 1 and k with i != j, we have V[i] - V[j] is-not-in {i-j, 0, j-i}. Solutions to the 8-queen correspond to vectors that are 8-promising. Prabhas Chongstitvatana 6 Let N be the set of k-promising vectors, k: 0 .. 8. Let G = (N,A) be the directed graph such that (U,V) is-in A iff there exists an integer k, k:0..8 , such that k=0 •U is k-promising •V is (k+1)-promising, and •U[i] = V[i] for every i in [1..k] Number of node < 8! ... k=8 (node 2057, first soln after 114 ) Prabhas Chongstitvatana 7 General Template for backtracking Backtrack ( v[1..k] ) // v is k-promising vector if solution ( v ) then write v else for each (k+1)-promising vector w such that w[1..k] = v[1..k] do backtrack( w[1.. k+1] ) Prabhas Chongstitvatana 8