Upload
sinead
View
30
Download
0
Tags:
Embed Size (px)
DESCRIPTION
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. - PowerPoint PPT Presentation
Citation preview
CS 312: Algorithm Analysis
Lecture #34: Branch and Bound Design Options for Solving the Traveling Salesman
Problem: Tight Bounds
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.
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
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”
cycle1
2
3 4
58
67
5
4
3
219
1012
Distinguish from theTSP search problem and theTSP decision problem
How to solve?
If with B&B, what do we need?
How to solve?
If with B&B, what do we need?
Initial BSSF
1
2
3 4
5
8
6
75
4
3
2
19
10
12
How to compute?
Should be quick.
What if you have a complete graph?
What if you don’t?
Simple-Minded Initial BSSF
1
2
3 4
5
8
6
75
4
3
2
19
10
12
Cost of BSSF= 9+5+4+12+1 = 31
A Bound on Possible TSP ToursWe need a bound function. Lower or Upper?How to compute?
1
2
3 4
58
67
5
4
3
219
1012
A Bound on Possible TSP ToursWe need a bound function. Lower or Upper?How to compute?
1
2
3 4
58
67
5
4
3
219
1012
A Bound on Possible TSP Tours
1
2
3 4
5
8
6
75
4
3
2
19
10
12
What’s the cheapest way to leave each vertex?
Bound on Possible TSP Tours
1
2
3 4
5
8
6
75
4
3
2
19
10
12
Save the sum of those costs in the bound (as a rough draft).
Rough draft bound= 8+6+3+2+1 = 20
Bound on Possible TSP Tours
1
2
3 4
5
8-8=0
6
74
4
3
2
19-8=1
10
12
For a given vertex, subtract the least cost departure from each edge leaving that vertex.
Rough draft bound= 20
Bound on Possible TSP Tours
1
2
3 4
5
0
0
12
1
0
0
01
9
6
Repeat for the other vertices.What do the numbers on the edges mean now?
Rough draft bound= 20
Bound on Possible TSP Tours
1
2
3 4
5
0
0
12
1
0
0
01
9
6
Now, can we find a tighter lower bound?
Rough draft bound= 20
Bound on Possible TSP Tours
1
2
3 4
5
0
0
12
1
0
0
01
9
6
Does that set of edges now having 0 residual cost arrive at every vertex?
Rough draft bound= 20
Bound on Possible TSP Tours
1
2
3 4
5
0
0
12
1
0
0
01
9
6
In this case, those edges never arrive at vertex #3.
Rough draft bound= 20
Bound on Possible TSP Tours
1
2
3 4
5
0
0
12
1
0
0
01
9
6
We have to take an edge to vertex 3 from somewhere. Assume we take the cheapest.
Rough draft bound= 20
Bound on Possible TSP Tours
1
2
3 4
5
0
0
01
1
0
0
01
9
6
Subtract its cost from other edges entering vertex 3 and add the cost to the bound.
We have just tightened the bound.
Bound = 21
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?
Bound on Possible TSP Tours
1
2
3 4
58
67
4
4
3
2
19
1012
Our algorithm can do this reasoning using a cost matrix.
999 9 999 8 999999 999 4 999 2999 3 999 4 999999 6 7 999 12
1 999 999 10 999
To:1 2 3 4 5From:
12345
Bound on Possible TSP Tours
999 1 999 0 999999 999 2 999 0999 0 999 1 999999 0 1 999 6
0 999 999 9 999
1
2
3 4
50
01
2
1
0
0
01
96
Reduce all rows.
To:1 2 3 4 5From:
12345
Bound on Possible TSP Tours
999 1 999 0 999999 999 1 999 0999 0 999 1 999999 0 0 999 6
0 999 999 9 999
1
2
3 4
50
01
2
1
0
0
01
96
Then reduce column #3. Now we have a tighter bound.
To:1 2 3 4 5From:
12345
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
999 1 999 0 999999 999 1 999 0999 0 999 1 999999 0 0 999 6
0 999 999 9 999
bound = 21 BSSF=31
Start at vertex 1 in graph (arbitrary)
What should our state expansion strategy be?
Using this bound for TSP in B&B
999 1 999 0 999999 999 1 999 0999 0 999 1 999999 0 0 999 6
0 999 999 9 999
999 1 999 0 999999 999 1 999 0999 0 999 1 999999 0 0 999 6
0 999 999 9 999
bound = 21
1-2 1-3 1-4 1-5
bound = 21+1
999 1 999 0 999999 999 1 999 0999 0 999 1 999999 0 0 999 6
0 999 999 9 999
BSSF=31
Start at vertex 1 in graph (arbitrary)
bound = 21
Focus: going from 1 to 2
999 999 999 999 999999 999 1 999 0999 999 999 1 999999 999 0 999 6
0 999 999 9 999
999 1 999 0 999999 999 1 999 0999 0 999 1 999999 0 0 999 6
0 999 999 9 999
bound = 21
1-2
bound = 22
1
2
3 4
50
00
1
1
0
001
96
1
2
3 4
5
01
1
001
96
Add extra cost from 1 to 2, exclude edges from 1 or into 2.
BSSF=31
Before After
999 999 999 999 999999 999 1 999 0999 999 999 1 999999 999 0 999 6
0 999 999 9 999
999 1 999 0 999999 999 1 999 0999 0 999 1 999999 0 0 999 6
0 999 999 9 999
bound = 21
bound = 22+1
1
2
3 4
50
00
1
1
0
001
96
1
2
3 4
5
01
1
001
96
No edges into vertex 4 w/ 0 reduced cost.
Focus: going from 1 to 2
BSSF=31
Before After
1-2
999 999 999 999 999999 999 1 999 0999 999 999 0 999999 999 0 999 6
0 999 999 8 999
999 1 999 0 999999 999 1 999 0999 0 999 1 999999 0 0 999 6
0 999 999 9 999
bound = 21
bound = 21+1+1
1
2
3 4
5
01
0
001
86
Add cost of reducing edge into vertex 4.
Focus: going from 1 to 2
BSSF=31
1-2
Bounds for other choices
999 999 999 999 999999 999 1 999 0999 999 999 0 999999 999 0 999 6
0 999 999 8 999
999 1 999 0 999999 999 1 999 0999 0 999 1 999999 0 0 999 6
0 999 999 9 999
bound = 21
bound = 23
999 999 999 999 999999 999 1 999 0999 0 999 999 999999 0 0 999 6
0 999 999 999 999
bound = 21
1-2(23),1-4(21)BSSF=31
1-2 1-3 1-4 1-5
Agenda:
Leaving Vertex 4
999 999 999 999 999999 999 1 999 0999 0 999 999 999999 0 0 999 6
0 999 999 999 999
bound = 21
1
2
3 4
50
00
1 0
00
6
999 999 999 999 999999 999 0 999 0999 999 999 999 999999 999 999 999 999
0 999 999 999 999
999 999 999 999 999999 999 999 999 0999 0 999 999 999999 999 999 999 999
0 999 999 999 999
999 999 999 999 999999 999 0 999 999999 0 999 999 999999 999 999 999 999
0 999 999 999 999
1-4-2 1-4-3 1-4-5
bound = 22 bound = 21 bound = 28
BSSF=311-4
Leaving Vertex 4
999 999 999 999 999999 999 1 999 0999 0 999 999 999999 0 0 999 6
0 999 999 999 999
bound = 21
1
2
3 4
50
00
1 0
00
6
999 999 999 999 999999 999 0 999 0999 999 999 999 999999 999 999 999 999
0 999 999 999 999
999 999 999 999 999999 999 999 999 0999 0 999 999 999999 999 999 999 999
0 999 999 999 999
999 999 999 999 999999 999 0 999 999999 0 999 999 999999 999 999 999 999
0 999 999 999 999
bound = 22 bound = 21 bound = 28
1-4-2(22), 1-4-3(21)1-4-5(28),1-2(23)
BSSF=311-4
1-4-2 1-4-3 1-4-5
Agenda:
Leaving Vertex 3
999 999 999 999 999999 999 999 999 0999 0 999 999 999999 999 999 999 999
0 999 999 999 999
bound = 21
1
2
3 4
50
00
00
999 999 999 999 999999 999 999 999 0999 999 999 999 999999 999 999 999 999
0 999 999 999 999
1-4-3-2
bound = 21
BSSF=311-4-3
Leaving Vertex 3
999 999 999 999 999999 999 999 999 0999 0 999 999 999999 999 999 999 999
0 999 999 999 999
bound = 21
1
2
3 4
50
00
00
999 999 999 999 999999 999 999 999 0999 999 999 999 999999 999 999 999 999
0 999 999 999 999
bound = 21
4-2(22), 3-2(21)4-5(28), 1-2(23),
BSSF=31
1-4-3-2
Agenda:1-4-3
Search Tree for This Problemb=21
b=23 b=21
b=22 b=21 b=28
b=21
1-to-2 1-to-4
4-to-2 4-to-3 4-to-5
3-to-2
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 Boundfunction BandB(v)
BSSF quick-solution(v) // BSSF.cost holds costAgenda.clear()v.b bound(v)Agenda.add(v, v.b)while !Agenda.empty() and time remains and BSSF.cost != v.b do
u Agenda.first()Agenda.remove_first()children = generate_children_ascending(u)for each w in children do
if ! time remains then breakw.b bound(w)
if (w.b < BSSF.cost) thenif criterion(w) then
BSSF wAgenda.prune(BSSF.cost)
else if partial_criterion(w) thenAgenda.add(w, w.b)
return BSSF
Assignment
HW #25: Compute bound for TSP instance using
today’s method Reason about search for TSP solution