380 likes | 515 Views
In this lecture, we delve into branch and bound techniques for solving the Traveling Salesman Problem (TSP). Key focuses include developing efficient bound functions and understanding the tight bounds necessary for effective problem-solving. We will review concepts such as the Hamiltonian cycle and discuss strategies for determining lower and upper bounds for potential TSP tours. Homework and project deadlines will also be addressed to reinforce learning and application. Join us to explore the intricacies of TSP and enhance your algorithmic analysis skills.
E N D
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License. CS 312: Algorithm Analysis Lecture #34: Branch and Bound Design Options for Solving the Traveling Salesman Problem: Tight Bounds Slides by: Eric Ringger, with contributions from Mike Jones, Eric Mercer, and Sean Warnick
Announcements • Homework #24 due now • Homework #25 due Friday • Project #7: TSP • ASAP: Read the helpful “B&B for TSP Notes” linked from the schedule • Read Project Instructions • Today: We continue discussing main ideas • Next Wednesday: Early day • Week from Friday: due
Objectives • Review the Traveling Salesman Problem (TSP) • Develop a good bound function for the TSP • Reason about Tight Bounds • Augment general B&B algorithm
1 2 5 3 4 Traveling Salesman (Optimization) Problem • Rudrata or Hamiltonian Cycle • Cycle in the graph that passes through each vertex exactly once + • Find the least cost or “shortest”cycle 9 1 8 2 10 6 5 3 12 7 Distinguish from theTSP search problem and theTSP decision problem 4
How to solve? • If with B&B, what do we need?
How to solve? • If with B&B, what do we need?
1 2 5 3 4 Initial BSSF How to compute? Should be quick. What if you have a complete graph? What if you don’t? 9 1 8 2 10 6 5 3 12 7 4
1 2 5 3 4 Simple-Minded Initial BSSF Cost of BSSF = 9+5+4+12+1 = 31 9 1 8 2 10 6 5 3 12 7 4
1 2 5 3 4 A Bound on Possible TSP Tours We need a bound function. Lower or Upper? How to compute? 9 1 8 2 10 6 5 3 12 7 4
1 2 5 3 4 A Bound on Possible TSP Tours We need a bound function. Lower or Upper? How to compute? 9 1 8 2 10 6 5 3 12 7 4
1 2 5 3 4 A Bound on Possible TSP Tours 9 1 8 2 10 6 5 3 12 7 4 What’s the cheapest way to leave each vertex?
1 2 5 3 4 Bound on Possible TSP Tours Rough draft bound= 8+6+3+2+1 = 20 9 1 8 2 10 6 5 3 12 7 4 Save the sum of those costs in the bound (as a rough draft).
1 2 5 3 4 Bound on Possible TSP Tours Rough draft bound = 20 9-8=1 1 8-8=0 2 10 6 4 3 12 7 4 For a given vertex, subtract the least cost departure from each edge leaving that vertex.
1 2 5 3 4 Bound on Possible TSP Tours Rough draft bound = 20 1 0 0 0 9 0 2 0 6 1 1 Repeat for the other vertices. What do the numbers on the edges mean now?
1 2 5 3 4 Bound on Possible TSP Tours Rough draft bound = 20 1 0 0 0 9 0 2 0 6 1 1 Now, can we find a tighter lower bound?
1 2 5 3 4 Bound on Possible TSP Tours Rough draft bound = 20 1 0 0 0 9 0 2 0 6 1 1 Does that set of edges now having 0 residual cost arrive at every vertex?
1 2 5 3 4 Bound on Possible TSP Tours Rough draft bound = 20 1 0 0 0 9 0 2 0 6 1 1 In this case, those edges never arrive at vertex #3.
1 2 5 3 4 Bound on Possible TSP Tours Rough draft bound = 20 1 0 0 0 9 0 2 0 6 1 1 We have to take an edge to vertex 3 from somewhere. Assume we take the cheapest.
1 2 5 3 4 Bound on Possible TSP Tours Bound = 21 1 0 0 0 9 0 1 0 6 0 1 Subtract its cost from other edges entering vertex 3 and add the cost to the bound. We have just tightened the bound.
This Bound • It will cost at least this much to visit all the vertices in the graph. • There’s no cheaper way to get in and out of each vertex. • Each edge is now labeled with the extra cost of choosing that edge. • The bound is not a solution; it’s a bound! • Why are tight bounds desirable?
9 1 1 8 2 2 5 10 6 3 4 12 7 3 4 4 Bound on Possible TSP Tours To: 1 2 3 4 5 From: 1 2 3 4 5 Our algorithm can do this reasoning using a cost matrix.
1 0 1 0 0 2 5 9 0 0 2 6 1 3 4 1 Bound on Possible TSP Tours To: 1 2 3 4 5 From: 1 2 3 4 5 Reduce all rows.
1 0 1 0 0 2 5 9 0 0 2 6 1 3 4 1 Bound on Possible TSP Tours To: 1 2 3 4 5 From: 1 2 3 4 5 Then reduce column #3. Now we have a tighter bound.
Search • Let’s start the search • Arbitrarily start at vertex 1 • Why is this OK? • Focus on: • the bound function and • the reduced cost matrix representation of states
Using this bound for TSP in B&B Start at vertex 1 in graph (arbitrary) BSSF=31 bound = 21 What should our state expansion strategy be?
Using this bound for TSP in B&B Start at vertex 1 in graph (arbitrary) BSSF=31 bound = 21 1-2 1-5 1-3 1-4 bound = 21 bound = 21+1
1 1 2 2 5 5 3 3 4 4 Focus: going from 1 to 2 BSSF=31 bound = 21 Before After 1 0 1 0 1-2 0 0 0 9 9 0 1 0 1 6 6 0 0 1 1 bound = 22 Add extra cost from 1 to 2, exclude edges from 1 or into 2.
1 1 2 2 5 5 3 3 4 4 Focus: going from 1 to 2 BSSF=31 bound = 21 Before After 1 0 1 0 1-2 0 0 0 9 9 0 1 0 1 6 6 0 0 1 1 bound = 22+1 No edges into vertex 4 w/ 0 reduced cost.
1 2 5 3 4 Focus: going from 1 to 2 BSSF=31 bound = 21 1 0 1-2 0 8 1 6 0 0 bound = 21+1+1 Add cost of reducing edge into vertex 4.
Bounds for other choices Agenda: BSSF=31 bound = 21 1-2(23),1-4(21) 1-2 1-5 1-3 1-4 bound = 23 bound = 21
1 2 5 3 4 Leaving Vertex 4 BSSF=31 1-4 0 0 bound = 21 0 0 1 0 6 0 1-4-2 1-4-3 1-4-5 bound = 22 bound = 21 bound = 28
1 2 5 3 4 Leaving Vertex 4 BSSF=31 1-4 Agenda: 0 0 1-4-2(22), 1-4-3(21) 1-4-5(28),1-2(23) bound = 21 0 0 1 0 6 0 1-4-2 1-4-3 1-4-5 bound = 22 bound = 21 bound = 28
1 2 5 3 4 Leaving Vertex 3 BSSF=31 1-4-3 0 bound = 21 0 0 0 0 1-4-3-2 bound = 21
1 2 5 3 4 Leaving Vertex 3 BSSF=31 1-4-3 Agenda: 0 bound = 21 0 4-2(22), 3-2(21) 4-5(28), 1-2(23), 0 0 0 1-4-3-2 bound = 21
Search Tree for This Problem b=21 1-to-2 1-to-4 b=23 b=21 4-to-2 4-to-3 4-to-5 b=22 b=21 b=28 3-to-2 b=21 2-to-5
Termination Criteria for a B&B Algorithm • Repeat until • Agenda is empty • Or time is up • Or BSSF cost is equal to original LB
Update: Branch and Bound functionBandB(v) BSSF quick-solution(v) // BSSF.cost holds cost Agenda.clear() v.b bound(v) Agenda.add(v, v.b) while !Agenda.empty() andtime remains and BSSF.cost != v.bdo u Agenda.first() Agenda.remove_first() children = generate_children_ascending(u) for each w in childrendo if ! time remains then break w.b bound(w) if (w.b < BSSF.cost) then if criterion(w) then BSSF w • Agenda.prune(BSSF.cost) else ifpartial_criterion(w) then Agenda.add(w, w.b) return BSSF
Assignment • HW #25: • Compute bound for TSP instance using today’s method • Reason about search for TSP solution