Presentation is loading. Please wait.

Presentation is loading. Please wait.

Prabhas Chongstitvatana

Similar presentations


Presentation on theme: "Prabhas Chongstitvatana"— Presentation transcript:

1 Prabhas Chongstitvatana
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

2 Prabhas Chongstitvatana
X X X X X X X X (3,1,6,2,8,6,4,7) Prabhas Chongstitvatana

3 Prabhas Chongstitvatana
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

4 Prabhas Chongstitvatana
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

5 Prabhas Chongstitvatana
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

6 Prabhas Chongstitvatana
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

7 Prabhas Chongstitvatana
Let N be the set of k-promising vectors, k: 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 U is k-promising V is (k+1)-promising, and U[i] = V[i] for every i in [1..k] k = 0 . . . Number of node < 8! (node 2057, first soln after 114 ) k = 8 Prabhas Chongstitvatana

8 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


Download ppt "Prabhas Chongstitvatana"

Similar presentations


Ads by Google