Held–Karp algorithm. The Held–Karp algorithm, also called the Bellman–Held–Karp algorithm, is a dynamic programming algorithm proposed in 1962 independently by Bellman and by Held and Karp to solve the traveling salesman problem (TSP), in which the input is a distance matrix between a set of cities, and the goal is to find a minimum-length tour that visits each city exactly once before returning to the starting point. It finds the exact solution to this problem, and to several related problems including the Hamiltonian cycle problem, in exponential time.

Algorithm description and motivation

Number the cities , with  designated arbitrarily as a "starting" city (since the solution to TSP is a Hamiltonian cycle, the choice of starting city doesn't matter). The Held–Karp algorithm begins by calculating, for each set of cities  and every city  not contained in , the shortest one-way path from  to  that passes through every city in  in some order (but not through any other cities). Denote this distance , and write  for the length of the direct edge from  to . We'll compute values of  starting with the smallest sets  and finishing with the largest.

When  has two or fewer elements, then calculating  requires looking at one or two possible shortest paths. For example,  is simply , and  is just the length of . Likewise,  is the length of either  or , whichever is shorter.

Once  contains three or more cities, the number of paths through  rises quickly, but only a few such paths need to be examined to find the shortest. For instance, if  is shorter than , then  must be shorter than , and the length of  is not a possible value of . Similarly, if the shortest path from  through  to  is , and the shortest path from  through  to  ends with the edge , then the whole path from  to  must be , and not any of the other five paths created by visiting  in a different order.

More generally, suppose  is a set of  cities. For every integer , write  for the set created by removing  from . Then if the shortest path from  through  to  has  as its second-to-last city, then removing the final edge from this path must give the shortest path from  to  through . This means there are only  possible shortest paths from  to  through , one for each possible second-to-last city  with length , and .

This stage of the algorithm finishes when  is known for every integer , giving the shortest distance from city  to city  that passes through every other city. The much shorter second stage adds these distances to the edge lengths  to give  possible shortest cycles, and then finds the shortest.

The shortest path itself (and not just its length), finally, may be reconstructed by storing alongside  the label of the second-to-last city on the path from  to  through , raising space requirements by only a constant factor.

Algorithmic complexity

The Held–Karp algorithm has exponential time complexity , significantly better than the superexponential performance  of a brute-force algorithm. Held–Karp, however, requires  space to hold all computed values of the function , while brute force needs only  space to store the graph itself.

Time

Computing one value of  for a -element subset  of  requires finding the shortest of  possible paths, each found by adding a known value of  and an edge length from the original graph; that is, it requires time proportional to . There are  -element subsets of ; and each subset gives  possible values of . Computing all values of  where  thus requires time , for a total time across all subset sizes . The second stage of the algorithm, finding a complete cycle from  candidates, takes  time and does not affect asymptotic performance.

For undirected graphs, the algorithm can be stopped early after the  step, and finding the minimum  for every , where  is the complement set of . This is analogous to a bidirectional search starting at  and meeting at midpoint . However, this is a constant factor improvement and does not affect asymptotic performance.

Space

Storing all values of  for subsets of size  requires keeping  values. A complete table of values of  thus requires space . This assumes that  is sufficiently small enough such that  can be stored as a bitmask of constant multiple of machine words, rather than an explicit k-tuple.

If only the length of the shortest cycle is needed, not the cycle itself, then space complexity can be improved somewhat by noting that calculating  for a  of size  requires only values of  for subsets of size . Keeping only the  values of  where  has size either  or  reduces the algorithm's maximum space requirements, attained when , to .

Pseudocode

Source:

 function algorithm TSP (G, n) is
     for k := 2 to n do
         g({k}, k) := d(1, k)
     end for
 
     for s := 2 to n−1 do
         for all S ⊆ {2, ..., n}, |S| = s do
             for all k ∈ S do
                 g(S, k) := minm≠k,m∈S [g(S\{k}, m) + d(m, k)]
             end for
         end for
     end for
 
     opt := mink≠1 [g({2, 3, ..., n}, k) + d(k, 1)]
     return (opt)
 end function

Related algorithms

Exact algorithms for solving the TSP
Besides Dynamic Programming, Linear programming and Branch and bound are design patterns also used for exact solutions to the TSP. Linear programming applies the cutting plane method in integer programming, i.e. solving the LP formed by two constraints in the model and then seeking the cutting plane by adding inequality constraints to gradually converge at an optimal solution. When people apply this method to find a cutting plane, they often depend on experience, so this method is seldom used as a general method.

The term branch and bound was first used in 1963 in a paper published by Little et al. on the TSP, describing a technique of combining smaller search spaces and establishing lower bounds to enlarge the practical range of application for an exact solution. The technique is useful for expanding the number of cities able to be considered computationally, but still breaks down in large-scale data sets.

It controls the searching process through applying restrictive boundaries, allowing a search for the optimal solution branch from the space state tree to find an optimal solution as quickly as possible. The pivotal component of this algorithm is the selection of the restrictive boundary. Different restrictive boundaries may form different branch-bound algorithms.

Approximate algorithms for solving the TSP
As the application of precise algorithm to solve problem is very limited, we often use approximate algorithm or heuristic algorithm. The result of the algorithm can be assessed by C / C* ≤ ε . C is the total travelling distance generated from approximate algorithm; C* is the optimal travelling distance; ε is the upper limit for the ratio of the total travelling distance of approximate solution to optimal solution under the worst condition. The value of ε >1.0. The more it closes to 1.0, the better the algorithm is. These algorithms include: Interpolation algorithm, Nearest neighbour algorithm, Clark & Wright algorithm, Double spanning tree algorithm, Christofides algorithm, Hybrid algorithm, Probabilistic algorithm (such as Simulated annealing).

References

Dynamic programming
Travelling salesman problem