8 Queens Problem Using Back Tracking
8 Queens Problem Using Back Tracking
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
13)
14)
15)
16)
17)
18)
19)
20)
we can reduce the number ofqueen that had beenplaced there. potentialsolutions even
more
11. BACKTRACKING DEMO FOR 4 QUEENS
12. STEPS REVISITED - BACKTRACKING1. Place the first queen in the left upper
corner of the table.2. Save the attacked positions.3. Move to the next queen (which can
only be placed to the next line).4. Search for a valid position. If there is one go to step
8.5. There is not a valid position for the queen. Delete it (the x coordinate is 0).6. Move
to the previous queen.7. Go to step 4.8. Place it to the first valid position.9. Save the
attacked positions.10. If the queen processed is the last stop otherwise go to step 3.
13. EIGHT QUEEN PROBLEM: ALGORITHMputQueen(row){ for every position col
on the same row if position col is available place the next queen in position col if
(row<8) putQueen(row+1); else success; remove the queen from position col}
14. THE PUTQUEEN RECURSIVE METHODvoid putQueen(int row) { for (int
col=0;col<squares;col++) if (column[col]==available &&
leftDiagonal[row+col]==available && rightDiagonal[row-col]== available) {
positionInRow[row]=col; column[col]=!available; leftDiagonal[row+col]=!available;
15. rightDiagonal[row-col]=!available; if (row< squares-1) putQueen(row+1); else
print(" solution found); column[col]=available; leftDiagonal[row+col]=available;
rightDiagonal[row-col]= available; }}
16. SOLUTIONS The eight queens puzzle has 92 distinct solutions. If solutions that
differ only by symmetry operations(rotations and reflections) of the board are counted as
one the puzzle has 12 unique (or fundamental) solutions
The following table gives the number of solutions17. COUNTING SOLUTIONS
Notefor placing n queens on an n n board, both unique and distinct for n=126. that
the six queens puzzle has fewer solutions than the five queens puzzle. There is currently
no known formula for the exact number of solutions.
18. Order(N) Total Solutions Unique Solutions Exec time--------------------------------------------------------1 1 1 < 0 seconds2 0 0 < 0 seconds3 0 0 < 0 seconds4 2 1 < 0 seconds5
10 2 < 0 seconds6 4 1 < 0 seconds7 40 6 < 0 seconds8 92 12 < 0 seconds9 352 46 < 0
seconds10 724 92 < 0 seconds11 2,680 341 < 0 seconds12 14,200 1,787 < 0 seconds13
73,712 9,233 < 0 seconds14 365,596 45,752 0.2s
19. 15 2,279,184 285,053 1.9 s16 14,772,512 1,846,955 11.2 s17 95,815,104 11,977,939
77.2 s18 666,090,624 83,263,591 9.6 m19 4,968,057,848 621,012,754 75.0 m20
39,029,188,884 4,878,666,808 10.2 h21 314,666,222,712 39,333,324,973 87.2 h22
2,691,008,701,644 336,376,244,042 31.923 24,233,937,684,440 3,029,242,658,210 296
d24 227,514,171,973,736 28,439,272,956,934 ?25 2,207,893,435,808,352
275,986,683,743,434 ?26 22,317,699,616,364,044 2,789,712,466,510,289 ? (s = seconds
m = minutes h = hours d = days)
His algorithm for the N-Queen problem is20. JEFF SOMERS ALGORITHM
considered as the fastest algorithm. He uses the concept of back tracking to Previously
the Worlds fastest algorithm for the N-Queen problem wassolve this His algorithm
finds solutions up togiven by Sylvain Pion and Joel-Yann Fourre. According to his23
queens and uses bit field manipulation in BACKTRACKING. program the maximum
time taken to find all the solutions for a 18 queens problem is 00:19:26 where as in the
normal back tracking algorithm it was 00:75:00.
21. USING NESTED LOOPS FOR SOLUTIONFor a 4x4 board, we could find the
solutions like this: for(i0 = 0; i0 < 4; ++i0) { if(isSafe(board, 0, i0)) { board[0][i0] = true;
for(i1 = 0; i1 < 4; ++i1) { if(isSafe(board, 1, i1)) { board[1][i1] = true; for(i2 = 0; i2 < 4;
++i2) { if(isSafe(board 2, i2)) { board[2][i2] = true; for(i3 = 0; i3 < 4; ++i3) {
if(isSafe(board 3, i3)) { board[3][i3] = true;
22) 22. { printBoard(board, 4);} board[3][i3] = false; } } board[2][i2] = false; } }
board[1][i1] = false; } } board[0][i0] = false; } }
23) The nested loops are not so preferred because . It23. WHY NOT NESTED LOOP You
must duplicate identical codeDoes not scale to different sized boards The problem with
this(place and remove). and error in one spot is hard to find is that its not very
programmer- friendly. We cant vary at runtime the size of the board were searching
24) The major advantage of the backtracking algorithm is the abillity to24. find and count
all the possible solutions rather than just one while offering If we go through the
algorithm for 8 queens 981 queen moves (876decent speed. position tests plus 105
backtracks) are required for the first solution alone. 16,704 moves (14,852 tests and 1852
backtracks) are needed to find all 92 Given those figures, its easy to see why the
solution is best leftsolutions. to computers.
21)