Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 10

Algorithms Task-3

By/ Saad Mohamed Saad


4 Queens Problem
Efficient Approach
Backtracking
The idea is to apply a backtracking approach to solve the problem. The
backtracking function does the following:
• Places only 1 queen per row satisfying the conditions.
• Places only 1 queen per column satisfying the conditions.
• For the diagonals, the value of (row – col) is constant and the main
diagonal is 0.
Similarly, for anti-diagonal, the value of (row + col) is constant. From, the
above, we can keep track of the rows and columns which have been used
already. Therefore, no more queens can be placed in such rows/columns.
Algorithm
1) Start in the leftmost column
2) If all queens are placed return true
3) Try all rows in the current column. Do following for every tried row.
a) If the queen can be placed safely in this row, then mark this [row,
column] as part of the solution and recursively check if placing
queen here leads to a solution.
b) If placing the queen in [row, column] leads to a solution then
return true.
c) If placing queen doesn't lead to a solution then unmark this [row,
column] (Backtrack) and go to step (a) to try other rows.
4) If all rows have been tried and nothing worked, return false to
trigger backtracking.
4 Queens table
8 Queens Problem
Efficient Approach
Backtracking
The idea is to apply a backtracking approach to solve the problem. The
backtracking function does the following:
• Places only 1 queen per row satisfying the conditions.
• Places only 1 queen per column satisfying the conditions.
• For the diagonals, the value of (row – col) is constant and the main
diagonal is 0.
Similarly, for anti-diagonal, the value of (row + col) is constant. From, the
above, we can keep track of the rows and columns which have been used
already. Therefore, no more queens can be placed in such rows/columns.
Algorithm
Create a function backtrack that simply places the queens on
corresponding rows and columns and marks them visited. The working of
backtrack is as follows:
If the current row is equal to 8, then a solution has been found. Therefore,
add this to the answer. Traverse through the columns of the current row.
At each column, try to place the queen in (row, col):Calculate the diagonal
and anti-diagonal which the current square belongs to.
If it is unvisited, place the queen in the (row, col).Skip this column, if the
queen cannot be visited. If the queen has been placed successfully, call the
backtrack function of row + 1.Since, all paths have now been explored,
clear the values of the queens placed so far and the visiting arrays, so that
next distinct solution can be found
4 Queens table
Thank You
Any Question.?

You might also like