Farthest Insertion to solve TSP - pgRouting/pgrouting GitHub Wiki

TRAVELING SALESMAN PROBLEM

http://www2.isye.gatech.edu/~mgoetsch/cali/VEHICLE/TSP/TSP003__.HTM


Insertion Algorithms (Rosenkrantz, Stearns, Lewis, 1974)

Farthest Insertion

This is a construction problem not an optimization problem and the results can typically be improved by adding an optimizer like simulated annealing or tabu search after initial construction.

  • Step 1. Start with a sub-graph consisting of node i only.
  • Step 2. Find node r such that cir is maximal and form sub-tour i-r-i.
  • Step 3. (Selection step) Given a sub-tour, find node r not in the sub-tour farthest from any node in the sub-tour; i.e. with maximal Crj
  • Step 4. (Insertion step) Find the arc (i, j) in the sub-tour which minimizes Cir + Crj - Cij . Insert r between i and j.
  • Step 5. If all the nodes are added to the tour, stop. Else go to step 3

Note how the bold sections differ from "nearest insertion".

Worst Case Behavior:

length_of_farthest_insertion_tour / length_of_optimal_tour <= 2*ln(n) + 0.16

Number of Computations:

The farthest insertion algorithm is O(n^2).