1 / 58

BackTracking Algorithms

BackTracking Algorithms. Briana B. Morrison With thanks to Dr. Hung. Topics. What is Backtracking N- Queens Problem Sum of Subsets Graph Coloring Hamiltonian Circuits Other Problems. Algorithm Design. Result. Human Problems. Input Data Structures. Processing. Output Data

Download Presentation

BackTracking Algorithms

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. BackTracking Algorithms Briana B. Morrison With thanks to Dr. Hung

  2. Topics • What is Backtracking • N-Queens Problem • Sum of Subsets • Graph Coloring • Hamiltonian Circuits • Other Problems

  3. Algorithm Design Result Human Problems Input Data Structures Processing Output Data Structures Computer Algorithms

  4. Algorithm Design … For a problem? What is an Optimal Solution? • Minimum CPU time • Minimum memory Example: Given 4 numbers, sort it to nonincreasing order. Method 1: Sequential comparison 1. Find the largest (3 comparisons) 2. Find the second largest (2 comparisons) 3. Find the third largest (1 comparisons) 4. Find the fourth largest A total of 6 comparisons

  5. Algorithm Design … For a problem? What is an Optimal Solution? • Minimum CPU time • Minimum memory Example: Given 4 numbers, sort it to nonincreasing order. Method 2: Somewhat clever method a2 a3 a1 a2 a3 a4 (4 comparisons) a3 a2 a4 (5 comparisons) a2 a3 a1 a3 a4 a2 a3 or a1

  6. Backtracking Problems • Find your way through the well-known maze of hedges by Hampton Court Palace in England? Until you reached a dead end. • 0-1 Knapsack problem – exponential time complexity. • N-Queens problem.

  7. Backtracking • Suppose you have to make a series of decisions, among various choices, where • You don’t have enough information to know what to choose • Each decision leads to a new set of choices • Some sequence of choices (possibly more than one) may be a solution to your problem • Backtracking is a methodical way of trying out various sequences of decisions, until you find one that “works”

  8. Introduction • Backtracking is used to solve problems in which a sequence of objects is chosen from a specified set so that the sequence satisfies some criterion. • Backtracking is a modified depth-first search of a tree. • Backtracking involves only a tree search. • Backtracking is the procedure whereby, after determining that a node can lead to nothing but dead nodes, we go back (“backtrack”) to the node’s parent and proceed with the search on the next child.

  9. Introduction … • We call a node nonpromising if when visiting the node we determine that it cannot possibly lead to a solution. Otherwise, we call it promising. • In summary, backtracking consists of • Doing a depth-first search of a state space tree, • Checking whether each node is promising, and, if it is nonpromising, backtracking to the node’s parent. • This is called pruning the state space tree, and the subtree consisting of the visited nodes is called the pruned state space tree.

  10. Solving a maze • Given a maze, find a path from start to finish • At each intersection, you have to decide between three or fewer choices: • Go straight • Go left • Go right • You don’t have enough information to choose correctly • Each choice leads to another set of choices • One or more sequences of choices may (or may not) lead to a solution • Many types of maze problem can be solved with backtracking

  11. Coloring a map • You wish to color a map withnot more than four colors • red, yellow, green, blue • Adjacent countries must be indifferent colors • You don’t have enough information to choose colors • Each choice leads to another set of choices • One or more sequences of choices may (or may not) lead to a solution • Many coloring problems can be solved with backtracking

  12. Solving a puzzle • In this puzzle, all holes but one are filled with white pegs • You can jump over one peg with another • Jumped pegs are removed • The object is to remove all but the last peg • You don’t have enough information to jump correctly • Each choice leads to another set of choices • One or more sequences of choices may (or may not) lead to a solution • Many kinds of puzzle can be solved with backtracking

  13. Backtracking (animation) ? dead end dead end dead end ? start ? ? dead end dead end ? success!

  14. N-Queens Problem • Try to place N queens on an N * N board such that none of the queens can attack another queen. • Remember that queens can move horizontally, vertically, or diagonally any distance. • Let’s consider the 8 queen example…

  15. The 8-Queens Example

  16. Let’s look at it run

  17. The (one) root node Internal nodes Leaf nodes Terminology I A tree is composed of nodes There are three kinds of nodes: Backtracking can be thought of as searching a tree for a particular “goal” leaf node

  18. parent parent children children Terminology II • Each non-leaf node in a tree is a parent of one or more other nodes (its children) • Each node in the tree, other than the root, has exactly one parent Usually, however, we draw our trees downward, with the root at the top

  19. Real and virtual trees • There is a type of data structure called a tree • But we are not using it here • If we diagram the sequence of choices we make, the diagram looks like a tree • In fact, we did just this a couple of slides ago • Our backtracking algorithm “sweeps out a tree” in “problem space”

  20. The backtracking algorithm • Backtracking is really quite simple--we “explore” each node, as follows: • To “explore” node N: • 1. If N is a goal node, return “success” • 2. If N is a leaf node, return “failure” • 3.For each child C of N, • 3.1. Explore C • 3.1.1. If C was successful, return “success” • 4.Return “failure”

  21. Sum-of-Subsets problem • Recall the thief and the 0-1 Knapsack problem. • The goal is to maximize the total value of the stolen items while not making the total weight exceed W. • If we sort the weights in nondecreasing order before doing the search, there is an obvious sign telling us that a node is nonpromising.

  22. Sum-of-Subsets problem … • Let totalbe the total weight of the remaining weights, a node at the ith level is nonpromising if weight+ total> W

  23. Example • Say that our weight values are 5, 3, 2, 4, 1 • W is 8 • We could have • 5 + 3 • 5 + 2 + 1 • 4 + 3 + 1 • We want to find a sequence of values that satisfies the criteria of adding up to W

  24. Tree Space • Visualize a tree in which the children of the root indicate whether or not value has been picked (left is picked, right is not picked) • Sort the values in non-decreasing order so the lightest value left is next on list • Weight is the sum of the weights that have been included at level i • Let weightbe the sum of the weights that have been included up to a node at level i. Then, a node at the ith level is nonpromising if weight+ wi+1 > W

  25. Sum-of-Subsets problem … • Example: Show the pruned state space tree when backtracking is used with n = 4, W = 13, and w1 = 3, w2 = 4, w3 = 5, and w4 = 6. Identify those nonpromising nodes.

  26. Full example: Map coloring • The Four Color Theorem states that any map on a plane can be colored with no more than four colors, so that no two countries with a common border are the same color • For most maps, finding a legal coloring is easy • For some maps, it can be fairly difficult to find a legal coloring • We will develop a complete Java program to solve this problem

  27. Data structures • We need a data structure that is easy to work with, and supports: • Setting a color for each country • For each country, finding all adjacent countries • We can do this with two arrays • An array of “colors”, wherecountryColor[i]is the color of the ith country • A ragged array of adjacent countries, wheremap[i][j]is the jth country adjacent to country i • Example:map[5][3]==8means the 3th country adjacent to country 5 is country 8

  28. 0 1 4 2 3 6 5 Creating the map int map[][];void createMap() { map = new int[7][]; map[0] = new int[] { 1, 4, 2, 5 }; map[1] = new int[] { 0, 4, 6, 5 }; map[2] = new int[] { 0, 4, 3, 6, 5 }; map[3] = new int[] { 2, 4, 6 }; map[4] = new int[] { 0, 1, 6, 3, 2 }; map[5] = new int[] { 2, 6, 1, 0 }; map[6] = new int[] { 2, 3, 4, 1, 5 };}

  29. Setting the initial colors static final int NONE = 0;static final int RED = 1;static final int YELLOW = 2;static final int GREEN = 3;static final int BLUE = 4;int mapColors[] = { NONE, NONE, NONE, NONE, NONE, NONE, NONE };

  30. The main program • (The name of the enclosing class isColoredMap) • public static void main(String args[]) { • ColoredMap m = new ColoredMap(); • m.createMap(); • boolean result = m.explore(0, RED); • System.out.println(result); • m.printMap(); • }

  31. The backtracking method • boolean explore(int country, int color) { • if (country >= map.length) return true; • if (okToColor(country, color)) { • mapColors[country] = color; • for (int i = RED; i <= BLUE; i++) { • if (explore(country + 1, i)) return true; • } • } • return false; • }

  32. Checking if a color can be used • boolean okToColor(int country, int color) { • for (int i = 0; i < map[country].length; i++) { • int ithAdjCountry = map[country][i]; • if (mapColors[ithAdjCountry] == color) { • return false; • } • } • return true; • }

  33. Printing the results void printMap() { for (int i = 0; i < mapColors.length; i++) { System.out.print("map[" + i + "] is "); switch (mapColors[i]) { case NONE: System.out.println("none"); break; case RED: System.out.println("red"); break; case YELLOW: System.out.println("yellow"); break; case GREEN: System.out.println("green"); break; case BLUE: System.out.println("blue"); break; } }}

  34. Recap • We went through all the countries recursively, starting with country zero • At each country we had to decide a color • It had to be different from all adjacent countries • If we could not find a legal color, we reported failure • If we could find a color, we used it and recurred with the next country • If we ran out of countries (colored them all), we reported success • When we returned from the topmost call, we were done

  35. Hamiltonian Circuits Problem • Hamiltonian circuit (tour) of a graph is a path that starts at a given vertex, visits each vertex in the graph exactly once, and ends at the starting vertex.

  36. State Space Tree • Put the starting vertex at level 0 in the tree • At level 1, create a child node for the root node for each remaining vertex that is adjacent to the first vertex. • At each node in level 2, create a child node for each of the adjacent vertices that are not in the path from the root to this vertex, and so on.

  37. Example

  38. Backtracking Algorithms How can a computer play the game? x x Remember Deep Blue? The tic-tac-toe game

  39. Backtracking Algorithms (1,1)C 0 1 2 x (0,0)H (0,1)H (0,2)H (1,0)H... 0 1 (0,0)C, (0,1)C, (1,0)C... x (0,1)H, (1,0)H, …, (2,2)H 2 x (0,1)C, (1,0)C, (1,2)C, (2,0)C... : Computer : Human The tic-tac-toe game

  40. Backtracking Algorithms 3 missionaries and 2 cannibals want to cross the river Condition: 1. A boat can take one or two (must include a missionary) 2. At any time, on either bank, the number of missionaries must not be less than the number of cannibals.

  41. Backtracking Search Essentially a simplified depth-first algorithm using recursion

  42. Backtracking Search(3 variables) Assignment = {}

  43. Backtracking Search(3 variables) X1 v11 Assignment = {(X1,v11)}

  44. Backtracking Search(3 variables) X1 v11 X3 v31 Assignment = {(X1,v11), (X3,v31)}

  45. Then, the search algorithm backtracks to the previous variable and tries another value Backtracking Search(3 variables) X1 v11 X3 v31 X2 Assume that no value of X2 leads to a valid assignment Assignment = {(X1,v11), (X3,v31)}

  46. Backtracking Search(3 variables) X1 v11 X3 v31 v32 X2 Assignment = {(X1,v11), (X3,v32)}

  47. Backtracking Search(3 variables) The search algorithm backtracksto the previous variable (X3) and tries another value. But assume that X3 has only two possible values. The algorithm backtracks to X1 X1 v11 X3 v31 v32 X2 X2 Assume again that no value of X2 leads to a valid assignment Assignment = {(X1,v11), (X3,v32)}

  48. Backtracking Search(3 variables) X1 v11 v12 X3 v31 v32 X2 X2 Assignment = {(X1,v12)}

More Related