6.3 Traveling Salesman Problems

6.4: The Brute-Force Algorithms
• List all of the possible Hamilton circuits
• Calculate the total weights for each of the
possible Hamilton circuit
• Choose an optimal circuit (cheapest,
shortest, or fastest…)
The Brute-Force Algorithms
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
A,B,C,D,E,A = 812
A,B,C,E,D,A = 777
A,B,D,C,E,A = 762
A,B,D,E,C,A = 773
A,B,E,C,D,A = 831
A,B,E,D,C,A = 877
A,C,B,D,E,A = 722
A,C,B,E,D,A = 791
A,C,D,B,E,A = 776
A,C,E,B,D,A = 741
A,D,B,C,E,A = 676
A,D,C,B,E,A = 780
Plus 12 mirror images
There are 5 vertices so we have
(5-1)! = 24 Hamilton circuits
Optimal route
The Brute-Force Algorithms
• Start at C
C,A,B,D,C
=70+20+10+50=150
C,A,D,B,C
=70+30+10+15=125
C,B,A,D,C
=15+20+30+50=115
C,B,D,A,C =125
Mirror
C,D,A,B,C =115
images
C,D,B,A,C =150
Therefore: optimal circuits are
C,B,A,D,C or C,D,A,B,C
If the problem asks to start at A then
the optimal circuits are
A,D,C,B,A or A,B,C,D,A
A
20
70
30
C
15
50
10
D
B
6.5: The Nearest-Neighbor
Algorithm
• From the starting vertex, go to its nearest
neighbor (the edge has the smallest
weight)
• Repeating step 1 with the next vertex and
the next vertex until there is no more
vertex to visit
• From the last vertex, return to the starting
point
The Nearest-Neighbor Algorithm
Start at A, pick AC = 119
From C, pick CE = 120
From E, pick ED = 199
From D, pick DB = 150
No more vertex left so
connect B and A, with
BA=185
Therefore the trip is:
A,C,E,D,B,A = 773
dollars
The Nearest-Neighbor Algorithm
• Start at C, pick CB =
15
• From B, pick BD = 10
• From D, pick DA = 30
• No more vertex left,
so connect A and C,
with AC = 70
• Therefore, the route is
C,B,D,A,C = 125
Practice with the Nearest Neighbor
Apply the Nearest Neighbor Algorithm to find the way to go to the
bank, dry cleaner, post office, and Wegmans starting and ending
at home. The mileage chart is shown below.
D
W
B
P
HOME
6.7 The repetitive Nearest-Neighbor
Algorithm
• The Brute-Force Algorithm: optimal but
inefficient algorithm
• The Nearest-Neighbor Algorithm and
Repetitive Nearest-Neighbor: efficient but
not optimal algorithms.
The Repetitive Nearest-Neighbor Algorithm
• Apply the Nearest Neighbor Algorithm to
each of the vertices to calculate the total
weights.
• Choose the best circuit. If there is a
designated starting vertex, rewrite the
circuit using that vertex as the reference
point
The Repetitive Nearest-Neighbor Algorithm
• From A:
A, C, E, D, B, A = 773
• From B:
B, C, A, E, D, B = 722
• From C:
C, A, E, D, B, C = 722
• From D:
D, B, C, A, E, D = 722
• From E:
E, C, A, D, B, E = 741
Therefore, one of the best routes is
B, C, A, E, D, B so we rewrite it
so the starting point is at A (his
home): A, E, D, B, C, A
The Repetitive Nearest-Neighbor Algorithm
• From A:
A, B, D, C, A = 20+10+50+70= 150
• From B:
B, D, A, C, B = 10+30+70+15= 125
• From C:
C, B, D, A, C = 15+10+30+70= 125
• From D:
D, B, C, A, D = 10+15+70+30 = 125
One of the best routes is C,B,D,A,C
= 125
or if re-write with starting point A:
A,C,B,D,A