1. Design a backtracking algorithm to find the globally minimium assignment of n persons to n jobs. Use the following cost matrix in the description of your algorithm.

a) What should the search-space tree look like for this backtracking algorithm? (You do NOT need to draw the entire tree -- only enough to make it clear what you are doing).

b) Describe in English what pruning criteria can be used by a promising function when deciding if a node is to be pruned or not.

c) What state information is needed at each node in the search-space tree?

d) What information in your answer to part (c) could be kept global?

Customize the recursive, backtracking template below to solve the problem.

Expand_Backtrack( treeNode n ) {

treeNode c;

for each child c of n do

if promising(c) then

if c is a solution that's better than best then

best = c

else

Expand_Backtrack(c)

end if

end if

end for

} // end Expand_Backtrack