HOME

TheInfoList



OR:

The Held–Karp algorithm, also called Bellman–Held–Karp algorithm, is a
dynamic programming Dynamic programming is both a mathematical optimization method and a computer programming method. The method was developed by Richard Bellman in the 1950s and has found applications in numerous fields, from aerospace engineering to economics. I ...
algorithm proposed in 1962 independently by Bellman and by Held and
Karp Karp may refer to: Places * Karp, Podlaskie Voivodeship, in north-east Poland * Karp, Lublin Voivodeship, in east Poland People * Karp (surname) * Karp Khachvankyan (1923–1998), Armenian actor and director Other uses * KARP-FM, a radio st ...
to solve the
traveling salesman problem The travelling salesman problem (also called the travelling salesperson problem or TSP) asks the following question: "Given a list of cities and the distances between each pair of cities, what is the shortest possible route that visits each cit ...
(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 the mathematical field of graph theory the Hamiltonian path problem and the Hamiltonian cycle problem are problems of determining whether a Hamiltonian path (a path in an undirected or directed graph that visits each vertex exactly once) or a ...
, in
exponential time In computer science, the time complexity is the computational complexity that describes the amount of computer time it takes to run an algorithm. Time complexity is commonly estimated by counting the number of elementary operations performed by ...
.


Algorithm description and motivation

Number the cities 1, 2, \ldots, n, with 1 designated arbitrarily as a "starting" city (since the solution to TSP is a cycle, the choice of starting city doesn't matter). The Held–Karp algorithm begins by calculating, for each set of cities S \subseteq \ and every city e \neq 1 not contained in S, the shortest one-way path from 1 to e that passes through every city in S in some order (but not through any other cities). Denote this distance g(S, e), and write d(u, v) for the length of the direct edge from u to v. We'll compute values of g(S, e) starting with the smallest sets S and finishing with the largest. When S has two or fewer elements, then calculating g(S, e) requires looking at one or two possible shortest paths. For example, g(\emptyset, e) is simply d(1, e), and g(\, 3) is just the length of 1 \rightarrow 2 \rightarrow 3. Likewise, g(\, 4) is the length of either 1 \rightarrow 2 \rightarrow 3 \rightarrow 4 or 1 \rightarrow 3 \rightarrow 2 \rightarrow 4, whichever is shorter. Once S contains three or more cities, the number of paths through S rises quickly, but only a few such paths need to be examined to find the shortest. For instance, if 1 \rightarrow 2 \rightarrow 3 \rightarrow 4 is shorter than 1 \rightarrow 3 \rightarrow 2 \rightarrow 4, then 1 \rightarrow 2 \rightarrow 3 \rightarrow 4 \rightarrow 5 must be shorter than 1 \rightarrow 3 \rightarrow 2 \rightarrow 4 \rightarrow 5, and the length of 1 \rightarrow 3 \rightarrow 2 \rightarrow 4 \rightarrow 5 is not a possible value of g(\, 5). Similarly, if the shortest path from 1 through \ to 5 is 1 \rightarrow 4 \rightarrow 3 \rightarrow 2 \rightarrow 5, and the shortest path from 1 through \ to 6 ends with the edge 5 \rightarrow 6, then the whole path from 1 to 6 must be 1 \rightarrow 4 \rightarrow 3 \rightarrow 2 \rightarrow 5 \rightarrow 6, and not any of the other five paths created by visiting \ in a different order. More generally, suppose S = \ is a set of k cities. For every integer 1 \leq i \leq k, write S_i = S \setminus \ = \ for the set created by removing s_i from S. Then if the shortest path from 1 through S to e has s_i as its second-to-last city, then removing the final edge from this path must give the shortest path from 1 to s_i through S_i. This means there are only k possible shortest paths from 1 to e through S, one for each possible second-to-last city s_i with length g(S_i, s_i) + d(s_i, e), and g(S, e) = \min_ g(S_i, s_i) + d(s_i, e). This stage of the algorithm finishes when g(\, i) is known for every integer 2 \leq i \leq n, giving the shortest distance from city 1 to city i that passes through every other city. The much shorter second stage adds these distances to the edge lengths d(i, 1) to give n-1 possible shortest cycles, and then finds the shortest. The shortest path itself (and not just its length), finally, may be reconstructed by storing alongside g(S, e) the label of the second-to-last city on the path from 1 to e through S, raising space requirements by only a constant factor.


Algorithmic complexity

The Held–Karp algorithm has exponential time complexity \Theta(2^n n^2), significantly better than the superexponential performance \Theta(n!) of a brute-force algorithm. Held–Karp, however, requires \Theta(n 2^n) space to hold all computed values of the function g(S, e), while brute force needs only \Theta(n^2) space to store the graph itself.


Time

Computing one value of g(S, e) for a k-element subset S of \ requires finding the shortest of k possible paths, each found by adding a known value of g and an edge length from the original graph; that is, it requires time proportional to k. There are \binom k-element subsets of \; and each subset gives n-k-1 possible values of e. Computing all values of g(S, e) where , S, = k thus requires time k (n-k-1) \binom = (n-1) (n-2) \binom, for a total time across all subset sizes (n-1)(n-2) \sum_^ \binom = (n-1) (n-2) 2^ = \Theta(n^2 2^n). The second stage of the algorithm, finding a complete cycle from n-1 candidates, takes \Theta(n) time and does not affect asymptotic performance. For
undirected graph In discrete mathematics, and more specifically in graph theory, a graph is a structure amounting to a set of objects in which some pairs of the objects are in some sense "related". The objects correspond to mathematical abstractions called '' v ...
s, the algorithm can be stopped early after the k = \lfloor\frac\rfloor step, and finding the minimum g(S, e) + g(S^c\setminus\, e) for every \, where S^c is the
complement set In set theory, the complement of a set , often denoted by (or ), is the set of elements not in . When all sets in the universe, i.e. all sets under consideration, are considered to be members of a given set , the absolute complement of is t ...
of S. This is analogous to a
bidirectional search Bidirectional search is a graph search algorithm that finds a shortest path from an initial vertex to a goal vertex in a directed graph. It runs two simultaneous searches: one forward from the initial state, and one backward from the goal, stopping ...
starting at 1 and meeting at midpoint e. However, this is a constant factor improvement and does not affect asymptotic performance.


Space

Storing all values of g(S, e) for subsets of size k requires keeping (n-k-1) \binom = (n-1) \binom values. A complete table of values of g(S, e) thus requires space \sum_^ (n-1) \binom = (n-1) 2^n = \Theta(n 2^n). This assumes that n is sufficiently small enough such that S can be stored as a
bitmask In computer science, a mask or bitmask is data that is used for bitwise operations, particularly in a bit field. Using a mask, multiple bits in a byte, nibble, word, etc. can be set either on or off, or inverted from on to off (or vice versa) in ...
of constant multiple of
machine word In computing, a word is the natural unit of data used by a particular processor design. A word is a fixed-sized datum handled as a unit by the instruction set or the hardware of the processor. The number of bits or digits in a word (the ''word s ...
s, 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 g(S, e) for a S of size k requires only values of g for subsets of size k-1. Keeping only the (n-1) \left \binom + \binom \right/math> values of g(S, e) where S has size either k-1 or k reduces the algorithm's maximum space requirements, attained when k = \left\lfloor \frac \right\rfloor, to \Theta(\sqrt 2^n).


Example

Distance matrix: : C= \begin 0 & 2 & 9 & 10 \\ 1 & 0 & 6 & 4 \\ 15 & 7 & 0 & 8 \\ 6 & 3 & 12 & 0 \end Functions description: * ''g(x, S)'' - starting from 1, path min cost ends at vertex x, passing vertices in set S exactly once * ''cxy'' - edge cost ends at x from y * ''p(x, S)'' - the second-to-last vertex to x from set S. Used for constructing the TSP path back at the end. ''k'' = 0, null set: Set ∅: g(2, ∅) = c21 = 1 g(3, ∅) = c31 = 15 g(4, ∅) = c41 = 6 ''k'' = 1, consider sets of 1 element: Set : g(3,) = c32 + g(2, ∅ ) = c32 + c21 = 7 + 1 = 8 p(3,) = 2 g(4,) = c42 + g(2, ∅ ) = c42 + c21 = 3 + 1 = 4 p(4,) = 2 Set : g(2,) = c23 + g(3, ∅ ) = c23 + c31 = 6 + 15 = 21 p(2,) = 3 g(4,) = c43 + g(3, ∅ ) = c43 + c31 = 12 + 15 = 27 p(4,) = 3 Set : g(2,) = c24 + g(4, ∅ ) = c24 + c41 = 4 + 6 = 10 p(2,) = 4 g(3,) = c34 + g(4, ∅ ) = c34 + c41 = 8 + 6 = 14 p(3,) = 4 ''k'' = 2, consider sets of 2 elements: Set : g(4,) = min = min = min = 20 p(4,) = 3 Set : g(3,) = min = min = min = 12 p(3,) = 4 Set : g(2,) = min = min = min = 20 p(2,) = 3 Length of an optimal tour: f = g(1,) = min = min = min = 21 Predecessor of node 1: p(1,) = 3 Predecessor of node 3: p(3, ) = 4 Predecessor of node 4: p(4, ) = 2 Predecessor of node 2: p(2, ) = 1 Hence, an optimal TSP tour is given by 1 → 2→ 4 → 3→ 1.


Pseudocodehttp://www.lsi.upc.edu/~mjserna/docencia/algofib/P07/dynprog.pdf

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


Related algorithms


Exact algorithms for solving the TSP

Besides Dynamic Programming,
Linear programming Linear programming (LP), also called linear optimization, is a method to achieve the best outcome (such as maximum profit or lowest cost) in a mathematical model whose requirements are represented by linear function#As a polynomial function, li ...
and
Branch and bound Branch and bound (BB, B&B, or BnB) is an algorithm design paradigm for discrete and combinatorial optimization problems, as well as mathematical optimization. A branch-and-bound algorithm consists of a systematic enumeration of candidate soluti ...
are design patterns also used for exact solutions to the TSP. Linear programming applies the cutting plane method in
integer programming An integer programming problem is a mathematical optimization or Constraint satisfaction problem, feasibility program in which some or all of the variables are restricted to be integers. In many settings the term refers to integer linear programmin ...
, 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 The nearest neighbour algorithm was one of the first algorithms used to solve the travelling salesman problem approximately. In that problem, the salesman starts at a random city and repeatedly visits the nearest city until all have been visited. ...
, Clark & Wright algorithm, Double spanning tree algorithm, Christofides algorithm, Hybrid algorithm, Probabilistic algorithm (such as
Simulated annealing Simulated annealing (SA) is a probabilistic technique for approximating the global optimum of a given function. Specifically, it is a metaheuristic to approximate global optimization in a large search space for an optimization problem. It ...
).


References

{{DEFAULTSORT:Held-Karp algorithm Dynamic programming Travelling salesman problem