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 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 There are 5 vertices so we have (5-1)! = 24 Hamilton circuits Optimal route Plus 12 mirror images
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 C,D,A,B,C =115 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 B Mirror images 50 10 D
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