Tuning fork: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
en>Chetvorno
Medical and scientific uses: Added to caption of oscillator
en>IronGargoyle
m Reverted edits by 75.150.216.149 (talk) to last revision by Just plain Bill (HG)
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
{{Use dmy dates|date=July 2012}}
The name of the writer is Numbers. Hiring is his occupation. To gather cash is 1 of the things I adore most. Her family lives in Minnesota.<br><br>my web blog; [http://go.d77.in/dietdelivery10007 diet meal delivery]
The '''travelling salesman problem ''' ('''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 city exactly once and returns to the origin city? It is an [[NP-hard]] problem in [[combinatorial optimization]], important in [[operations research]] and [[theoretical computer science]].
 
The problem was first formulated in 1930 and is one of the most intensively studied problems in optimization. It is used as a benchmark for many optimization methods. Even though the problem is computationally difficult, a large number of [[heuristic]]s and exact methods are known, so that some instances with tens of thousands of cities can be solved completely and even problems with millions of cities can be approximated within a small fraction of 1%.<ref>See the TSP world tour problem which has already been solved to within 0.05% of the optimal solution. [http://www.math.uwaterloo.ca/tsp/world/]</ref>
 
The TSP has several applications even in its purest formulation, such as [[planning]], [[logistics]], and the manufacture of [[Integrated circuit|microchips]]. Slightly modified, it appears as a sub-problem in many areas, such as [[DNA sequencing]]. In these applications, the concept ''city'' represents, for example, customers, soldering points, or DNA fragments, and the concept ''distance'' represents travelling times or cost, or a similarity measure between DNA fragments. In many applications, additional constraints such as limited resources or time windows make the problem considerably harder. TSP is a special case of the [[Traveling purchaser problem|travelling purchaser problem]].
 
In the [[Computational complexity theory|theory of computational complexity]], the decision version of the TSP (where, given a length ''L'', the task is to decide whether the graph has any tour shorter than ''L'') belongs to the class of [[NP-complete]] problems.  Thus, it is possible that the [[Best, worst and average case|worst-case]] [[running time]] for any algorithm for the TSP increases superpolynomially (or perhaps [[Exponential time hypothesis|exponentially]]) with the number of cities.
 
== History ==
 
The origins of the travelling salesman problem are unclear. A handbook for travelling salesmen from 1832 mentions the problem and includes example tours through Germany and Switzerland, but contains no mathematical treatment.<ref>"Der Handlungsreisende – wie er sein soll und was er zu tun hat, um Aufträge zu erhalten und eines glücklichen Erfolgs in seinen Geschäften gewiß zu sein – von einem alten Commis-Voyageur" (The traveling salesman — how he must be and what he should do in order to get comissions and be sure of the happy success in his business — by an old ''commis-voyageur'')</ref>
 
[[Image:William Rowan Hamilton painting.jpg|thumb|William Rowan Hamilton]]
 
The travelling salesman problem was defined in the 1800s by the Irish mathematician [[William Rowan Hamilton|W. R. Hamilton]] and by the British mathematician [[Thomas Kirkman]]. Hamilton’s [[Icosian Game]] was a recreational puzzle based on finding a [[Hamiltonian cycle]].<ref>A discussion of the early work of Hamilton and Kirkman can be found in Graph Theory 1736–1936</ref> The general form of the TSP appears to have been first studied by mathematicians during the 1930s in Vienna and at Harvard, notably by [[Karl Menger]], who defines the problem, considers the obvious brute-force algorithm, and observes the non-optimality of the nearest neighbour heuristic:
{{Quotation|
We denote by ''messenger problem'' (since in practice this question should be solved by each postman, anyway also by many travelers) the task to find, for finitely many points whose pairwise distances are known, the shortest route connecting the points. Of course, this problem is solvable by finitely many trials. Rules which would push the number of trials below the number of permutations of the given points, are not known. The rule that one first should go from the starting point to the closest point, then to the point closest to this, etc., in general does not yield the shortest route.<ref>Cited and English translation in {{harvtxt|Schrijver|2005}}. Original German: "Wir bezeichnen als ''Botenproblem'' (weil diese Frage in der Praxis von jedem Postboten, übrigens auch von vielen Reisenden zu lösen ist) die Aufgabe, für endlich viele Punkte, deren paarweise Abstände bekannt sind, den kürzesten die Punkte verbindenden Weg zu finden. Dieses Problem ist natürlich stets durch endlich viele Versuche lösbar. Regeln, welche die Anzahl der Versuche unter die Anzahl der Permutationen der gegebenen Punkte herunterdrücken würden, sind nicht bekannt. Die Regel, man solle vom Ausgangspunkt erst zum nächstgelegenen Punkt, dann zu dem diesem nächstgelegenen Punkt gehen usw., liefert im allgemeinen nicht den kürzesten Weg."</ref>}}
[[Hassler Whitney]] at [[Princeton University]] introduced the name ''travelling salesman problem'' soon after.<ref>A detailed treatment of the connection between Menger and Whitney as well as the growth in the study of TSP can be found in [[Alexander Schrijver]]'s 2005 paper "On the history of combinatorial optimization (till 1960). Handbook of Discrete Optimization (K. Aardal, [[George Nemhauser|G.L. Nemhauser]], R. Weismantel, eds.), Elsevier, Amsterdam, 2005, pp. 1–68.[http://homepages.cwi.nl/~lex/files/histco.ps PS],[http://homepages.cwi.nl/~lex/files/histco.pdf PDF]</ref>
 
In the 1950s and 1960s, the problem became increasingly popular in scientific circles in Europe and the USA. Notable contributions were made by [[George Dantzig]], [[Delbert Ray Fulkerson]] and [[Selmer M. Johnson]] at the  [[RAND Corporation]] in [[Santa Monica]], who expressed  the problem as an [[integer linear program]] and developed the [[cutting plane]] method for its solution. With these new methods they solved an instance with 49 cities to optimality by constructing a tour and proving that no other tour could be shorter. In the following decades, the problem was studied by many researchers from [[mathematics]], [[computer science]], [[chemistry]], [[physics]], and other sciences.
 
[[Richard M. Karp]] showed in 1972 that the [[Hamiltonian cycle]] problem was [[NP-complete]], which implies the [[NP-hard]]ness of TSP. This supplied a mathematical explanation for the apparent computational difficulty of finding optimal tours.
 
Great progress was made in the late 1970s and 1980, when Grötschel, Padberg, Rinaldi and others managed to exactly solve instances with up to 2392 cities, using cutting planes and [[branch-and-bound]].
 
In the 1990s, Applegate,  Bixby, [[Vašek Chvátal|Chvátal]], and [[William J. Cook|Cook]] developed the program ''Concorde'' that has been used in many recent record solutions. Gerhard Reinelt published the TSPLIB in 1991, a collection of benchmark instances of varying difficulty, which has been used by many research groups for comparing results. In 2006, Cook and others computed an optimal tour through an  85,900-city instance given by  a microchip layout problem, currently the largest solved TSPLIB instance. For many other instances with millions of cities, solutions can be found that are guaranteed to be within 2-3% of an optimal tour.<ref name="rggo">{{citation
| last1 = Rego | first1 = César
| last2 = Gamboa | first2 = Dorabela
| last3 = Glover | first3 = Fred
| last4 = Osterman | first4 = Colin
| doi = 10.1016/j.ejor.2010.09.010
| issue = 3
| journal = European Journal of Operational Research
| mr = 2774420
| pages = 427–441
| title = Traveling salesman problem heuristics: leading methods, implementations and latest advances
| volume = 211
| year = 2011}}.</ref>
 
==Description==
 
===As a graph problem===
 
[[Image:Weighted K4.svg|thumb|Symmetric TSP with four cities]]
TSP can be modelled as an [[graph (mathematics)|undirected weighted graph]], such that cities are the graph's [[vertex (graph theory)|vertices]], paths are the graph's [[Glossary of graph theory#Basics|edges]], and a path's distance is the edge's length.  It is a minimization problem starting and finishing at a specified [[vertex (graph theory)|vertex]] after having visited each other [[vertex (graph theory)|vertex]] exactly once. Often, the model is a [[complete graph]] (''i.e.'' each pair of vertices is connected by an edge). If no path exists between two cities, adding an arbitrarily long edge will complete the graph without affecting the optimal tour.
 
===Asymmetric and symmetric===
 
In the ''symmetric TSP'', the distance between two cities is the same in each opposite direction, forming an [[undirected graph]]. This symmetry halves the number of possible solutions. In the ''asymmetric TSP'', paths may not exist in both directions or the distances might be different, forming a [[directed graph]]. [[Traffic collision]]s, [[one-way street]]s, and airfares for cities with different departure and arrival fees are examples of how this symmetry could break down.
 
===Related problems===
 
<!-- This belongs to somewhere else-->
 
* An equivalent formulation in terms of [[graph theory]] is: Given a [[Glossary of graph theory|complete weighted graph]] (where the vertices would represent the cities, the edges would represent the roads, and the weights would be the cost or distance of that road), find a [[Hamiltonian cycle]] with the least weight.
 
* The requirement of returning to the starting city does not change the [[computational complexity]] of the problem, see [[Hamiltonian path problem]].
 
* Another related problem is the [[bottleneck traveling salesman problem]] (bottleneck TSP): Find a Hamiltonian cycle in a [[glossary of graph theory|weighted graph]] with the minimal weight of the weightiest [[edge (graph theory)|edge]]. The problem is of considerable practical importance, apart from evident transportation and logistics areas. A classic example is in [[Printed circuit board|printed circuit]] manufacturing: scheduling of a route of the [[drill]] machine to drill holes in a PCB. In robotic machining or drilling applications, the "cities" are parts to machine or holes (of different sizes) to drill, and the "cost of travel" includes time for retooling the robot (single machine job sequencing problem).<ref>{{Citation
| last1 = Behzad| first1 = Arash| last2 = Modarres
| first2 = Mohammad| year = 2002
| title = New Efficient Transformation of the Generalized Traveling Salesman Problem into Traveling Salesman Problem
| journal = Proceedings of the 15th International Conference of Systems Engineering (Las Vegas)}}</ref>
 
* The [[Set TSP problem|generalized traveling salesman problem]] deals with "states" that have (one or more) "cities" and the salesman has to visit exactly one "city" from each "state". Also known as the "traveling politician problem". One application is encountered in ordering a solution to the [[cutting stock problem]] in order to minimise knife changes. Another is concerned with drilling in [[semiconductor]] manufacturing, see e.g., {{US patent|7054798}}. Surprisingly, Behzad and Modarres demonstrated that the generalised traveling salesman problem can be transformed into a standard traveling salesman problem with the same number of cities, but a modified [[distance matrix]].
 
* The sequential ordering problem deals with the problem of visiting a set of cities where precedence relations between the cities exist.
 
* The traveling purchaser problem deals with a purchaser who is charged with purchasing a set of products. He can purchase these products in several cities, but at different prices and not all cities offer the same products. The objective is to find a route between a subset of the cities, which minimizes total cost (travel cost + purchasing cost) and which enables the purchase of all required products.
 
==Integer linear programming formulation==
TSP can be formulated as an [[integer programming|integer linear program]].<ref>{{Citation|last=Papadimitriou|first=C.H.|coauthors=Steiglitz, K.|title=Combinatorial optimization: algorithms and complexity|year=1998|publisher=Dover|location=Mineola, NY}}, pp.308-309.</ref><ref>Tucker, A. W. (1960), "On Directed Graphs and Integer Programs", IBM Mathematical research Project (Princeton University)</ref><ref>Dantzig, George B. (1963), ''Linear Programming and Extensions'', Princeton, NJ: PrincetonUP, pp. 545–7, ISBN 0-691-08000-3, sixth printing, 1974.</ref> Label the cities with the numbers 0, ..., ''n'' and define:
 
:<math> x_{ij} = \begin{cases} 1 & \text{the path goes from city } i \text{ to city } j \\ 0 & \text{otherwise} \end{cases}</math>
 
For ''i'' = 1, ..., ''n'', let <math>u_i</math> be an artificial variables, and finally take <math>c_{ij}</math> to be the distance from city ''i'' to city ''j''. Then TSP can be written as the following integer linear programming problem:
 
:<math>\begin{align}
\min &\sum_{i=0}^n \sum_{j\ne i,j=0}^nc_{ij}x_{ij} &&  \\
    & 0 \le x_{ij} \le 1  && i,j=0, \cdots, n  \\
    & x_{ij} \in \mathbf{Z} && i,j=0, \cdots, n \\
    & \sum_{i=0,i\ne j}^n x_{ij} = 1 && j=0, \cdots, n \\
    & \sum_{j=0,j\ne i}^n x_{ij} = 1 && i=0, \cdots, n \\
&u_i-u_j +nx_{ij} \le n-1 && 1 \le i \ne j \le n
\end{align}</math>
 
The first set of equalities requires that each city be arrived at from exactly one other city, and the second set of equalities requires that from each city there is a departure to exactly one other city. The last constraints enforce that there is only a single tour covering all cities, and not two or more disjointed tours that only collectively cover all cities. To prove this, it is shown below (1) that every feasible solution contains only one closed sequence of cities, and (2) that for every single tour covering all cities, there are values for the dummy variables <math>u_i</math> that satisfy the constraints.
 
To prove that every feasible solution contains only one closed sequence of cities, it suffices to show that every subtour in a feasible solution passes through city 0 (noting that the equalities ensure there can only be one such tour). For if we sum all the inequalities corresponding to <math>x_{ij}=1</math> for any subtour of ''k'' steps not passing through city 0, we obtain:
 
:<math>nk \leq (n-1)k,</math>
 
which is a contradiction.
 
It now must be shown that for every single tour covering all cities, there are values for the dummy variables <math>u_i</math> that satisfy the constraints.
 
Without loss of generality, define the tour as originating (and ending) at city 0. Choose <math>u_{i}=t</math> if city ''i'' is visited in step ''t'' (''i'', ''t'' = 1, 2, ..., n). Then
 
:<math>u_i-u_j\le n-1,</math>
 
since <math>u_i</math> can be no greater than ''n'' and <math>u_j</math> can be no less than 1; hence the constraints are satisfied whenever <math>x_{ij}=0.</math> For <math>x_{ij}=1</math>, we have:
 
:<math>  u_{i} - u_{j} + nx_{ij} = (t) - (t+1) + n = n-1,</math>
 
satisfying the constraint.
 
==Computing a solution==
The traditional lines of attack for the NP-hard problems are the following:
* Devising algorithms for finding exact solutions (they will work reasonably fast only for small problem sizes).
* Devising "suboptimal" or [[heuristic algorithm]]s, i.e., algorithms that deliver either seemingly or probably good solutions, but which could not be proved to be optimal.
* Finding special cases for the problem ("subproblems") for which either better or exact heuristics are possible.
 
===Computational complexity===
The problem has been shown to be [[NP-hard]] (more precisely, it is complete for the [[complexity class]] FP<sup>NP</sup>; see [[function problem]]), and the [[decision problem]] version ("given the costs and a number ''x'', decide whether there is a round-trip route cheaper than ''x''") is [[NP-complete]]. The [[bottleneck traveling salesman problem|bottleneck travelling salesman problem]] is also NP-hard. The problem remains NP-hard even for the case when the cities are in the plane with [[Euclidean distance]]s, as well as in a number of other restrictive cases. Removing the condition of visiting each city "only once" does not remove the NP-hardness, since it is easily seen that in the planar case there is an optimal tour that visits each city only once (otherwise, by the [[triangle inequality]], a shortcut that skips a repeated visit would not increase the tour length).
 
====Complexity of approximation====
In the general case, finding a shortest travelling salesman tour is NPO-complete.<ref>{{harvtxt|Orponen|1987}}</ref>  If the distance measure is a metric and symmetric, the problem becomes [[APX]]-complete<ref>{{harvtxt|Papadimitriou|1983}}</ref> and [[Christofides algorithm|Christofides’s algorithm]] approximates it within 1.5.<ref>{{harvtxt|Christofides|1976}}</ref>
 
If the distances are restricted to 1 and 2 (but still are a metric) the approximation ratio becomes 8/7.{{sfnp|Berman|Karpinski|2006}} In the asymmetric, metric case, only logarithmic performance guarantees are known, the best current algorithm achieves performance ratio 0.814 log(''n'');<ref>{{harvtxt|Kaplan|2004}}</ref> it is an open question if a constant factor approximation exists.
 
The corresponding maximization problem of finding the ''longest'' travelling salesman tour is approximable within 63/38.<ref>{{harvtxt|Kosaraju|1994}}</ref> If the distance function is symmetric, the longest tour can be approximated within 4/3 by a deterministic algorithm<ref>{{harvtxt|Serdyukov|1984}}</ref> and within <math>\tfrac{1}{25}(33+\varepsilon)</math> by a randomised algorithm.<ref>{{harvtxt|Hassin|2000}}</ref>
 
===Exact algorithms===
The most direct solution would be to try all [[permutation]]s (ordered combinations) and see which one is cheapest (using [[brute force search]]). The running time for this approach lies within a polynomial factor of <math>O(n!)</math>, the [[factorial]] of the number of cities, so this solution becomes impractical even for only 20 cities. One of the earliest applications of [[dynamic programming]] is the [[Held&ndash;Karp algorithm]] that solves the problem in time <math>O(n^2 2^n)</math>. <ref>{{harvtxt|Bellman|1960}}, {{harvtxt|Bellman|1962}}, {{harvtxt|Held|Karp|1962}}</ref>
[[File:Bruteforce.gif|framed|right|Solution to a TSP with 7 cities using brute force search. Note: Number of permutations: (7-1)!/2 = 360]]
 
Improving these time bounds seems to be difficult. For example, it has not been determined whether an exact algorithm for TSP that runs in time <math>O(1.9999^n)</math> exists.<ref>{{harvtxt|Woeginger|2003}}</ref>
 
Other approaches include:
* Various [[Branch and bound|branch-and-bound]] algorithms, which can be used to process TSPs containing 40–60 cities.
 
[[File:Branchbound.gif|framed|right|Solution of a TSP with 7 cities using a simple Branch and bound algorithm. Note: The number of permutations is much less than Brute force search]]
 
* Progressive improvement algorithms which use techniques reminiscent of [[linear programming]]. Works well for up to 200 cities.
* Implementations of [[Branch and bound|branch-and-bound]] and problem-specific cut generation ([[Branch and cut|branch-and-cut]]<ref>{{harvtxt|Padberg|Rinaldi|1991}}</ref>); this is the method of choice for solving large instances. This approach holds the current record, solving an instance with 85,900 cities, see {{harvtxt|Applegate|Bixby|Chvátal|Cook|2006}}.
 
An exact solution for 15,112 German towns from TSPLIB was found in 2001 using the [[cutting-plane method]] proposed by [[George Dantzig]], [[D. R. Fulkerson|Ray Fulkerson]], and [[Selmer M. Johnson]] in 1954, based on [[linear programming]]. The computations were performed on a network of 110 processors located at [[Rice University]] and [[Princeton University]] (see the Princeton external link). The total computation time was equivalent to 22.6&nbsp;years on a single 500&nbsp;MHz [[Alpha processor]]. In May 2004, the travelling salesman problem of visiting all 24,978 towns in Sweden was solved: a tour of length approximately 72,500 kilometers was found and it was proven that no shorter tour exists.<ref>Work by David Applegate, AT&T Labs – Research, Robert Bixby, [[ILOG]] and Rice University, Vašek Chvátal, Concordia University, William Cook, University of Waterloo, and Keld Helsgaun, Roskilde University is discussed on their project web page hosted by the University of Waterloo and last updated in June 2004, here [http://www.math.uwaterloo.ca/tsp/sweden/]</ref>
 
In March 2005, the travelling salesman problem of visiting all 33,810 points in a circuit board was solved using ''[[Concorde TSP Solver]]'': a tour of length 66,048,945 units was found and it was proven that no shorter tour exists. The computation took approximately 15.7 CPU-years<!-- Is this with a 500 MHz processor. Please make clear what you mean by CPU year. --> (Cook et al. 2006). In April 2006 an instance with 85,900 points was solved using ''Concorde TSP Solver'', taking over 136 CPU-years, see {{harvtxt|Applegate|Bixby|Chvátal|Cook|2006}}.
 
===Heuristic and approximation algorithms===
Various [[Heuristic (computer science)|heuristics]] and [[approximation algorithm]]s, which quickly yield good solutions have been devised. Modern methods can find solutions for extremely large problems (millions of cities) within a reasonable time which are with a high probability just 2–3% away from the optimal solution.<ref name="rggo"/>
 
Several categories of heuristics are recognized.
 
====Constructive heuristics====
[[File:Nearestneighbor.gif|393px|thumb|right|Nearest Neighbor algorithm for a TSP with 7 cities. The solution changes as the starting point is changed]]
The [[nearest neighbour algorithm|nearest neighbor (NN) algorithm]] (or so-called [[greedy algorithm]]) lets the salesman choose the nearest unvisited city as his next move. This algorithm quickly yields an effectively short route. For N cities randomly distributed on a plane, the algorithm on average yields a path 25% longer than the shortest possible path.<ref>Johnson, D.S. and McGeoch, L.A.. "The traveling salesman problem: A case study in local optimization",  Local search in combinatorial optimization, 1997, 215-310</ref> However, there exist many specially arranged city distributions which make the NN algorithm give the worst route (Gutin, Yeo, and Zverovich, 2002). This is true for both asymmetric and symmetric TSPs (Gutin and Yeo, 2007). Rosenkrantz et al. [1977] showed that the NN algorithm has the approximation factor <math>\Theta(\log |V|)</math> for instances satisfying the triangle inequality. A variation of NN algorithm, called Nearest Fragment (NF) operator, which connects a group (fragment) of nearest unvisited cities, can find shorter route with successive iterations.<ref>S. S. Ray, S. Bandyopadhyay and S. K. Pal, "Genetic Operators for Combinatorial Optimization in TSP and Microarray Gene Ordering," Applied Intelligence, 2007, 26(3). pp. 183-195.</ref> The NF operator can also be applied on an initial solution obtained by NN algorithm for further improvement in an elitist model, where only better solutions are accepted.
 
Constructions based on a [[minimum spanning tree]] have an approximation ratio of 2. The [[Christofides algorithm]] achieves a ratio of 1.5.
 
The [[bitonic tour]] of a set of points is the minimum-perimeter [[monotone polygon]] that has the points as its vertices; it can be computed efficiently by [[dynamic programming]].
 
Another constructive heuristic, Match Twice and Stitch (MTS) (Kahng, Reda 2004 <ref>A. B. Kahng and S. Reda, "Match Twice and Stitch: A New TSP Tour Construction Heuristic," Operations Research Letters, 2004, 32(6). pp. 499–509. http://dx.doi.org/10.1016/j.orl.2004.04.001</ref>), performs two sequential [[Matching (graph theory)|matchings]], where the second matching is executed after deleting all the edges of the first matching, to yield a set of cycles. The cycles are then stitched to produce the final tour.
 
====Iterative improvement====
;Pairwise exchange: The pairwise exchange or ''2-opt'' technique involves iteratively removing two edges and replacing these with two different edges that reconnect the fragments created by edge removal into a new and shorter tour. This is a special case of the ''k''-opt method. Note that the label ''Lin–Kernighan'' is an often heard misnomer for 2-opt. Lin–Kernighan is actually the more general k-opt method.
;''k''-opt heuristic, or [[Lin–Kernighan]] heuristics: Take a given tour and delete ''k'' mutually disjoint edges. Reassemble the remaining fragments into a tour, leaving no disjoint subtours (that is, don't connect a fragment's endpoints together). This in effect simplifies the TSP under consideration into a much simpler problem. Each fragment endpoint can be connected to 2''k''&nbsp;−&nbsp;2 other possibilities: of 2''k'' total fragment endpoints available, the two endpoints of the fragment under consideration are disallowed. Such a constrained 2''k''-city TSP can then be solved with brute force methods to find the least-cost recombination of the original fragments. The ''k''-opt technique is a special case of the ''V''-opt or variable-opt technique. The most popular of the ''k''-opt methods are 3-opt, and these were introduced by Shen Lin of Bell Labs in 1965. There is a special case of 3-opt where the edges are not disjoint (two of the edges are adjacent to one another). In practice, it is often possible to achieve substantial improvement over 2-opt without the combinatorial cost of the general 3-opt by restricting the 3-changes to this special subset where two of the removed edges are adjacent. This so-called two-and-a-half-opt typically falls roughly midway between 2-opt and 3-opt, both in terms of the quality of tours achieved and the time required to achieve those tours.
;''V''-opt heuristic: The variable-opt method is related to, and a generalization of the ''k''-opt method. Whereas the ''k''-opt methods remove a fixed number (''k'') of edges from the original tour, the variable-opt methods do not fix the size of the edge set to remove. Instead they grow the set as the search process continues. The best known method in this family is the Lin–Kernighan method (mentioned above as a misnomer for 2-opt). [[Shen Lin]] and [[Brian Kernighan]] first published their method in 1972, and it was the most reliable heuristic for solving travelling salesman problems for nearly two decades. More advanced variable-opt methods were developed at Bell Labs in the late 1980s by David Johnson and his research team. These methods (sometimes called [[Lin–Kernighan–Johnson]]) build on the Lin–Kernighan method, adding ideas from [[tabu search]] and [[evolutionary computing]]. The basic Lin–Kernighan technique gives results that are guaranteed to be at least 3-opt. The Lin–Kernighan–Johnson methods compute a Lin–Kernighan tour, and then perturb the tour by what has been described as a mutation that removes at least four edges and reconnecting the tour in a different way, then ''V''-opting the new tour. The mutation is often enough to move the tour from the [[local minimum]] identified by Lin–Kernighan. ''V''-opt methods are widely considered the most powerful heuristics for the problem, and are able to address special cases, such as the Hamilton Cycle Problem and other non-metric TSPs that other heuristics fail on. For many years Lin–Kernighan–Johnson had identified optimal solutions for all TSPs where an optimal solution was known and had identified the best known solutions for all other TSPs on which the method had been tried.
 
====Randomised improvement====
Optimized [[Markov chain]] algorithms which use local searching heuristic sub-algorithms can find a route extremely close to the optimal route for 700 to 800 cities.
 
TSP is a touchstone for many general heuristics devised for combinatorial optimization such as [[genetic algorithm]]s, [[simulated annealing]], [[Tabu search]], [[ant colony optimization]], [[river formation dynamics]] (see [[swarm intelligence]]) and the [[cross entropy method]].
 
=====Ant colony optimization=====
{{main|Ant colony optimization algorithms}}
[[Artificial intelligence]] researcher [[Marco Dorigo]] described in 1997 a method of heuristically generating "good solutions" to the TSP using a [[Ant colony optimization|simulation of an ant colony]] called ''ACS'' (Ant Colony System).<ref>Marco Dorigo. Ant Colonies for the Traveling Salesman Problem. IRIDIA, Université Libre de Bruxelles. IEEE Transactions on Evolutionary Computation, 1(1):53&ndash;66. 1997. http://citeseer.ist.psu.edu/86357.html</ref> It models behavior observed in real ants to find short paths between food sources and their nest, an [[emergence|emergent]] behaviour resulting from each ant's preference to follow [[Pheromone#Trail|trail pheromones]] deposited by other ants.
 
ACS sends out a large number of virtual ant agents to explore many possible routes on the map. Each ant probabilistically chooses the next city to visit based on a heuristic combining the distance to the city and the amount of virtual pheromone deposited on the edge to the city. The ants explore, depositing pheromone on each edge that they cross, until they have all completed a tour. At this point the ant which completed the shortest tour deposits virtual pheromone along its complete tour route (''global trail updating''). The amount of pheromone deposited is inversely proportional to the tour length: the shorter the tour, the more it deposits.
 
[[Image:Aco TSP.svg|600px|center]]
[[File:AntColony.gif|framed|center|Ant Colony Optimization Algorithm for a TSP with 7 cities: Red and thick lines in the pheromone map indicate presence of more pheromone]]
 
===Special cases===
 
====Metric TSP====
In the ''metric TSP'', also known as ''delta-TSP'' or Δ-TSP, the intercity distances satisfy the [[triangle inequality]].
 
A very natural restriction of the TSP is to require that the distances between cities form a [[metric (mathematics)|metric]] to satisfy the [[triangle inequality]]; that is the direct connection from ''A'' to ''B'' is never farther than the route via intermediate ''C'':
:<math>d_{AB} \le d_{AC} + d_{CB}</math>.
 
The edge spans then build a [[metric space|metric]] on the set of vertices. When the cities are viewed as points in the plane, many natural [[distance function]]s are metrics, and so many natural instances of TSP satisfy this constraint.
 
The following are some examples of metric TSPs for various metrics.
*In the Euclidean TSP (see below) the distance between two cities is the [[Euclidean distance]] between the corresponding points.
*In the rectilinear TSP the distance between two cities is the sum of the differences of their ''x''- and ''y''-coordinates. This metric is often called the [[Manhattan distance]] or city-block metric.
*In the [[maximum metric]], the distance between two points is the maximum of the absolute values of differences of their ''x''- and ''y''-coordinates.
 
The last two metrics appear for example in routing a machine that drills a given set of holes in a [[printed circuit board]]. The Manhattan metric corresponds to a machine that adjusts first one co-ordinate, and then the other, so the time to move to a new point is the sum of both movements. The maximum metric corresponds to a machine that adjusts both co-ordinates simultaneously, so the time to move to a new point is the slower of the two movements.
 
In its definition, the TSP does not allow cities to be visited twice, but many applications do not need this constraint. In such cases, a symmetric, non-metric instance can be reduced to a metric one. This replaces the original graph with a complete graph in which the inter-city distance <math>d_{AB}</math> is replaced by the [[shortest path]] between ''A'' and ''B'' in the original graph.
 
The span of the [[minimum spanning tree]] of the network ''G'' is a natural lower bound for the span of the optimal route, because deleting any edge of the optimal route yields a [[Hamiltonian path]], which is a spanning tree in ''G''. In the TSP with [[triangle inequality]] case it is possible to prove upper bounds in terms of the [[minimum spanning tree]] and design an algorithm that has a provable upper bound on the span of the route. The first published (and the simplest) example follows:
#Construct a [[minimum spanning tree]] ''T'' for ''G''.
#Duplicate all edges of ''T''. That is, wherever there is an edge from ''u'' to ''v'', add a second edge from ''v'' to ''u''. This gives us an [[Eulerian path|Eulerian graph]] ''H''.
#Find an [[Eulerian path|Eulerian circuit]] ''C'' in ''H''. Clearly, its span is twice the span of the tree.
#Convert the Eulerian circuit ''C'' of ''H'' into a [[Hamiltonian path|Hamiltonian]] cycle of ''G'' in the following way: walk along ''C'', and each time you are about to come into an already visited vertex, skip it and try to go to the next one (along ''C'').
 
It is easy to prove that the last step works. Moreover, thanks to the triangle inequality, each skipping at Step 4 is in fact a shortcut; i.e., the length of the cycle does not increase. Hence it gives us a TSP tour no more than twice as long as the optimal one.
 
The [[Christofides algorithm]] follows a similar outline but combines the minimum spanning tree with a solution of another problem, minimum-weight [[perfect matching]]. This gives a TSP tour which is at most 1.5 times the optimal.  The Christofides algorithm was one of the first [[approximation algorithm]]s, and was in part responsible for drawing attention to approximation algorithms as a practical approach to intractable problems. As a matter of fact, the term "algorithm" was not commonly extended to approximation algorithms until later; the Christofides algorithm was initially referred to as the Christofides heuristic.
 
====Euclidean TSP====
The '''Euclidean TSP''', or '''planar TSP''', is the TSP with the distance being the ordinary [[Euclidean distance]].
 
The Euclidean TSP is a particular case of the metric TSP, since distances in a plane obey the triangle inequality.
 
Like the general TSP, the Euclidean TSP is NP-hard. With discretized metric (distances rounded up to an integer), the problem is NP-complete.{{sfnp|Papadimitriou|1977}} However, in some respects it seems to be easier than the general metric TSP. For example, the minimum spanning tree of the graph associated with an instance of the Euclidean TSP is a [[Euclidean minimum spanning tree]], and so can be computed in expected O(''n'' log ''n'') time for ''n'' points (considerably less than the number of edges). This enables the simple 2-approximation algorithm for TSP with triangle inequality above to operate more quickly.
 
In general, for any ''c'' > 0, where ''d'' is the number of dimensions in the Euclidean space, there is a polynomial-time algorithm that finds a tour of length at most (1 + 1/''c'') times the optimal for geometric instances of TSP in
 
:<math>O\left(n (\log n)^{(O(c \sqrt{d}))^{d-1}}\right),</math>
 
time; this is called a [[polynomial-time approximation scheme]] (PTAS).{{sfnp|Arora|1998}} [[Sanjeev Arora]] and [[Joseph S. B. Mitchell]] were awarded the [[Gödel Prize]] in 2010 for their concurrent discovery of a PTAS for the Euclidean TSP.
 
In practice, heuristics with weaker guarantees continue to be used.
 
====Asymmetric TSP====
In most cases, the distance between two nodes in the TSP network is the same in both directions. The case where the distance from ''A'' to ''B'' is not equal to the distance from ''B'' to ''A'' is called asymmetric TSP. A practical application of an asymmetric TSP is route optimisation using street-level routing (which is made asymmetric by one-way streets, slip-roads, motorways, etc.).
 
=====Solving by conversion to symmetric TSP=====
Solving an asymmetric TSP graph can be somewhat complex. The following is a 3×3 matrix containing all possible path weights between the nodes ''A'', ''B'' and ''C''. One option is to turn an asymmetric matrix of size ''N'' into a symmetric matrix of size 2''N''.<ref>Roy Jonker and Ton Volgenant. "Transforming asymmetric into symmetric traveling salesman problems". ''[[Operations Research Letters]]'' '''2''':161–163, 1983. {{doi|10.1016/0167-6377(83)90048-2}}</ref>
 
:{| class="wikitable"
|- style="text-align:center;"
|+ Asymmetric path weights
 
! !! ''A'' !! ''B'' !! ''C''
|- style="text-align:center;"
 
! ''A''
| || 1 || 2
|- style="text-align:center;"
 
! ''B''
| 6 || || 3
|- style="text-align:center;"
 
! ''C''
| 5 || 4 ||
|}
 
To double the size, each of the nodes in the graph is duplicated, creating a second ''ghost node''. Using duplicate points with very low weights, such as −∞, provides a cheap route "linking" back to the real node and allowing symmetric evaluation to continue. The original 3×3 matrix shown above is visible in the bottom left and the inverse of the original in the top-right. Both copies of the matrix have had their diagonals replaced by the low-cost hop paths, represented by −∞.
 
:{| class="wikitable"
|- style="text-align:center;" class="wikitable"
|+ Symmetric path weights
 
! !! ''A'' !! ''B'' !! ''C'' !! ''A&prime;'' !! ''B&prime;'' !! ''C&prime;''
|- style="text-align:center;"
 
! ''A''
| || || || −∞ || 6 || 5
|- style="text-align:center;"
 
! ''B''
| || || || 1 || −∞ || 4
|- style="text-align:center;"
 
! ''C''
| || || || 2 || 3 || −∞
|- style="text-align:center;"
 
! ''A&prime;''
| −∞ || 1 || 2 || || ||
|- style="text-align:center;"
 
! ''B&prime;''
| 6 || −∞ || 3 || || ||
|- style="text-align:center;"
 
! ''C&prime;''
| 5 || 4 || −∞ || || ||
|}
 
The original 3×3 matrix would produce two Hamiltonian cycles (a path that visits every node once), namely ''A''-''B''-''C''-''A'' [score 9] and ''A''-''C''-''B''-''A'' [score 12]. Evaluating the 6×6 symmetric version of the same problem now produces many paths, including ''A''-''A&prime;''-''B''-''B&prime;''-''C''-''C&prime;''-''A'', ''A''-''B&prime;''-''C''-''A&prime;''-''A'', ''A''-''A&prime;''-''B''-''C&prime;''-''A'' [all score 9 – ∞].
 
The important thing about each new sequence is that there will be an alternation between dashed (''A&prime;'',''B&prime;'',''C&prime;'') and un-dashed nodes (''A'', ''B'', ''C'') and that the link to "jump" between any related pair (''A''-''A&prime;'') is effectively free. A version of the algorithm could use any weight for the ''A''-''A&prime;'' path, as long as that weight is ''lower'' than all other path weights present in the graph. As the path weight to "jump" must effectively be "free", the value zero (0) could be used to represent this cost—if zero is not being used for another purpose already (such as designating invalid paths). In the two examples above, non-existent paths between nodes are shown as a blank square.
 
===Benchmarks===
For benchmarking of TSP algorithms, [http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/ '''TSPLIB'''] is a library of sample instances of the TSP and related problems is maintained, see the TSPLIB external reference. Many of them are lists of actual cities and layouts of actual [[Printed circuit board|printed circuits]].
 
==Human performance on TSP==
The TSP, in particular the [[Euclidean distance|Euclidean]] variant of the problem, has attracted the attention of researchers in [[cognitive psychology]]. It is observed that humans are able to produce good quality solutions quickly. The first issue of the [http://docs.lib.purdue.edu/jps/ Journal of Problem Solving] is devoted to the topic of human performance on TSP.
 
==TSP path length for random pointset in a square==
Suppose ''N'' points are randomly distributed in a 1×1 square with ''N''>>1. Consider many such squares. Suppose we want to know the average of the shortest path length (i.e. TSP solution) of each square.
 
===Lower bound===
*By assuming ''i'' to be a point in the tour sequence and that its next neighbor as its latter in the path one obtains the lower bound:
 
::<math>\tfrac{1}{2} \sqrt{N}.</math>
 
*A better lower bound is obtained by assuming ''i''<nowiki>'</nowiki>s latter is ''i''<nowiki>'</nowiki>s next, and ''i''<nowiki>'</nowiki>s former is ''i''<nowiki>'</nowiki>s after next:
 
::<math>\left( \tfrac{1}{4} + \tfrac{3}{8} \right)\sqrt{N} = \tfrac{5}{8}\sqrt{N}</math>
 
*An even better lower bound obtained by dividing the path sequence into two parts as ''before_i'' and ''behind_i'' with each part containing ''N''/2 points, and then deleting the ''before_i'' part to form a diluted pointset (see discussion):
 
::<math>\frac{1}{\sqrt{2}}\sqrt{N}.</math>
 
*David S. Johnson<ref>[http://www.research.att.com/~dsj/papers/HKsoda.pdf David S. Johnson]</ref> obtained a lower bound by computer experiment:
 
::<math>0.7080\sqrt{N}+0.522,</math>
 
:where 0.522 comes from the points near square boundary which have fewer neighbors.
 
*Christine L. Valenzuela and Antonia J. Jones <ref>[http://users.cs.cf.ac.uk/Antonia.J.Jones/Papers/EJORHeldKarp/HeldKarp.pdf Christine L. Valenzuela and Antonia J. Jones]</ref> obtained another lower bound by computer experiment:
::<math>0.7078\sqrt{N}+0.551</math>
 
==Analyst's travelling salesman problem==
There is an analogous problem in [[geometric measure theory]] which asks the following: under what conditions may a subset ''E'' of [[Euclidean space]] be contained in a [[rectifiable curve]] (that is, when is there a curve with finite length that visits every point in ''E'')? This problem is known as the [[analyst's traveling salesman theorem|analyst's travelling salesman problem]] or the [[geometric travelling salesman problem]].
 
== Free software for solving TSP ==
{| class="wikitable"
|-
!Name<br>(alphabetically)
!License
!API language
!Brief info
|-
|[http://www.math.uwaterloo.ca/tsp/concorde.html Concorde]||free for academic||only executable||requires a linear solver installation for its MILP subproblem
|-
|[http://www.andrew.cmu.edu/user/neils/tsp/ DynOpt]||?||C||an ANSI C implementation a dynamic programming based algorithm developed by Balas and Simonetti, approximate solution
|-
|[http://www.akira.ruc.dk/~keld/research/LKH/ LKH] ||research only|| C || an effective implementation of the Lin-Kernighan heuristic for Euclidean traveling salesman problem
|-
|[[OpenOpt]] ||[[BSD]]|| Python || exact and approximate solvers, STSP / ATSP, can handle multigraphs, constraints, multiobjective problems, see its [http://openopt.org/TSP TSP] page for details and examples
|-
|[[OptaPlanner]] ||[[Apache License]]|| Java || Open Source Java constraint solver with TSP and VRP examples.
|-
|[http://tsp.r-forge.r-project.org/ R TSP package]||[[GPL]]||[[R (programming language)|R]]|| infrastructure and solvers for STSP / ATSP, interface to Concorde
|-
|[http://tspsg.info/ TSP Solver and Generator] ||[[GPL]]|| C++ || branch and bound algorithm
|-
|[http://www.rz.uni-karlsruhe.de/~lh71/ TSPGA]||?||C||approximate solution of the STSP using the "pgapack" package
|}
 
== Popular culture ==
 
''[[Travelling Salesman (2012 film)|Travelling Salesman]]'', by director Timothy Lanzone, is the story of 4 mathematicians hired by the U.S. government to solve the most elusive problem in computer-science history: [[P vs. NP]].<ref>{{cite web|last=Geere|first=Duncan|title='Travelling Salesman' movie considers the repercussions if P equals NP|url=http://www.wired.co.uk/news/archive/2012-04/26/travelling-salesman|publisher=Wired|accessdate=26 April 2012}}</ref>
 
==See also==
 
* [[Canadian traveller problem]]
* [[Route inspection problem]] (also known as "Chinese postman problem")
* [[Set TSP problem]]
* [[Seven Bridges of Königsberg]]
* [[Traveling tourist problem]]
* [[Tube Challenge]]
* [[Vehicle routing problem]]
 
==Notes==
 
{{Reflist|30em}}
 
==References==
 
{{refbegin|2}}
*{{Citation
| last1 = Applegate
| first1 = D. L.
| last2 = Bixby
| first2 = R. M.
| last3 = Chvátal
| first3 = V.
| last4 = Cook|author4-link=William J. Cook
| year = 2006
| title = The Traveling Salesman Problem|first4 =W. J.
| isbn = 0-691-12993-2}}.
*{{citation
| last = Arora | first = Sanjeev | author-link = Sanjeev Arora
| doi = 10.1145/290179.290180
| issue = 5
| journal = [[Journal of the ACM]]
| mr = 1668147
| pages = 753–782
| title = Polynomial time approximation schemes for Euclidean traveling salesman and other geometric problems
| volume = 45
| year = 1998}}.
*{{Citation
|last= Bellman
|first= R.
|contribution= Combinatorial Processes and Dynamic Programming
|title=  Combinatorial Analysis, Proceedings of Symposia in Applied Mathematics 10,
|editor1= Bellman, R., Hall, M., Jr. (eds.)
|pages= 217–249
|publisher= American Mathematical Society
|year=1960 }}.
*{{Citation
|last= Bellman
|first= R.
|title= Dynamic Programming Treatment of the Travelling Salesman Problem
|journal= J. Assoc. Comput. Mach. |volume=9|pages= 61–63 |year=1962|doi=10.1145/321105.321111}}.
*{{citation
| last1 = Berman | first1 = Piotr
| last2 = Karpinski | first2 = Marek | author2-link = Marek Karpinski
| contribution = 8/7-approximation algorithm for (1,2)-TSP
| doi = 10.1145/1109557.1109627
| id = {{ECCC|2005|05|069}}
| pages = 641–648
| title = Proc. 17th ACM-SIAM Symposium on Discrete Algorithms (SODA '06)
| year = 2006
| isbn = 0898716055}}.
*{{Citation
|last=Christofides|first=N.|year= 1976
|title=Worst-case analysis of a new heuristic for the travelling salesman problem
|series=Technical Report 388|publisher=Graduate School of Industrial Administration, Carnegie-Mellon University, Pittsburgh}}.
*{{Citation|last1=Hassin|first1= R.|last2= Rubinstein|first2= S.|year=2000
|title=Better approximations for max TSP
|journal=Information Processing Letters|volume=75|pages=181–186|doi=10.1016/S0020-0190(00)00097-1|issue=4}}.
*{{Citation
| last1 = Held
| first1 = M.
| author1-link = Michael Held
| last2 = Karp
| first2 = R. M.
| author2-link = Richard Karp
| year = 1962
| title = A Dynamic Programming Approach to Sequencing Problems
| journal = Journal of the Society for Industrial and Applied Mathematics
| volume = 10
| issue = 1
| pages = 196–210
| doi = 10.1137/0110015}}.
*{{Citation |last1= Kaplan|first1=H.|last2=Lewenstein |first2=L. | last3=Shafrir|first3=N. |last4= Sviridenko|first4=M.|contribution= Approximation Algorithms for Asymmetric TSP by Decomposing Directed Regular Multigraphs
|title= In Proc. 44th IEEE Symp. on Foundations of Comput. Sci |pages= 56–65|year= 2004}}.
*{{Citation
|last1= Kosaraju|first1= S. R.|last2= Park|first2=J. K.
|last3= Stein|first3= C. |year=1994
|contribution=Long tours and short superstrings'
|title=Proc. 35th Ann. IEEE Symp. on Foundations of Comput. Sci
|publisher= IEEE Computer Society|pages= 166–177}}.
*{{Citation
|last1= Orponen|first1= P. | last2=Mannila |first2= H. | author2-link = Heikki Mannila
|year=1987
|title=On approximation preserving reductions: Complete problems and robust measures'
|journal= Technical Report C-1987–28, Department of Computer Science, University of Helsinki}}.
*{{Citation
|last1=Padberg|first1=M.|last2=Rinaldi|first2=G.
|title=A Branch-and-Cut Algorithm for the Resolution of Large-Scale Symmetric Traveling Salesman Problems
|journal = Siam Review
|year = 1991
|pages = 60–100
|doi = 10.1137/1033004}}.
*{{citation
| last = Papadimitriou | first = Christos H. | author-link = Christos Papadimitriou
| issue = 3
| journal = Theoretical Computer Science
| mr = 0455550
| pages = 237–244
| title = The Euclidean traveling salesman problem is NP-complete
| volume = 4
| year = 1977
| doi = 10.1016/0304-3975(77)90012-3}}.
*{{Citation
|last1=Papadimitriou|first1=C. H.|last2= Yannakakis|first2= M.
|year=1993
|title=The traveling salesman problem with distances one and two
|journal= Math. Oper. Res.|volume= 18|pages= 1–11
|doi=10.1287/moor.18.1.1}}.
*{{Citation
|last=Serdyukov|first= A. I.|year= 1984
|title=An algorithm with an estimate for the traveling salesman problem of the maximum'
|journal=Upravlyaemye Sistemy |volume= 25|pages= 80–86}}.
*{{Citation
|last= Woeginger|first= G.J.|contribution= Exact Algorithms for NP-Hard Problems: A Survey
|title=Combinatorial Optimization – Eureka, You Shrink! Lecture notes in computer science, vol. 2570
|pages= 185–207|publisher= Springer |year=2003 }}.
{{refend}}
 
==Further reading==
*{{citation|first=Leonard|last=Adleman|authorlink=Leonard Adleman|url=http://www.usc.edu/dept/molecular-science/papers/fp-sci94.pdf|title=Molecular Computation of Solutions To Combinatorial Problems|year=1994|bibcode=1994Sci...266.1021A|volume=266|pages=1021–4|journal=Science|doi=10.1126/science.7973651|pmid=7973651|issue=5187}}
*{{citation|first=S.|last=Arora|authorlink=Sanjeev Arora|url=http://graphics.stanford.edu/courses/cs468-06-winter/Papers/arora-tsp.pdf|title=Polynomial time approximation schemes for Euclidean traveling salesman and other geometric problems|journal=Journal of the ACM|volume=45|year=1998|pages=753–782|issue=5|doi=10.1145/290179.290180}}.
*{{citation|first1=Gilbert|last1=Babin|first2=Stéphanie|last2=Deneault|first3=Gilbert|last3=Laportey|year=2005|url=http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.89.9953|title=Improvements to the Or-opt Heuristic for the Symmetric Traveling Salesman Problem|series=Cahiers du GERAD|volume=G-2005-02|publisher=Group for Research in Decision Analysis|location=Montreal}}.
*{{citation|first1=William|last1=Cook|authorlink=William J. Cook|title=In Pursuit of the Travelling Salesman: Mathematics at the Limits of Computation| year = 2011 |
publisher = Princeton University Press | isbn = 978-0-691-15270-7}}.
*{{citation|first1=William|last1=Cook|author1-link=William J. Cook|first2=Daniel|last2=Espinoza|first3=Marcos|last3=Goycoolea|title=Computing with domino-parity inequalities for the TSP|journal=INFORMS Journal on Computing|volume=19|issue=3|year=2007|pages=356–365|doi=10.1287/ijoc.1060.0204}}.
*{{citation|first1=T. H.|last1=Cormen|author1-link=Thomas H. Cormen|first2=C. E.|last2=Leiserson|author2-link=Charles E. Leiserson|first3=R. L.|last3=Rivest|author3-link=Ronald L. Rivest|first4=C.|last4=Stein|author4-link=Clifford Stein|year=2001|title=[[Introduction to Algorithms]]|edition=2nd|publisher=MIT Press and McGraw-Hill|isbn=0-262-03293-7|contribution=35.2: The traveling-salesman problem|pages=1027–1033}}.
*{{citation|first1=G. B.|last1=Dantzig|author1-link=George Dantzig|first2=R.|last2=Fulkerson|first3=S. M.|last3=Johnson|author3-link=Selmer M. Johnson|author2-link=D. R. Fulkerson|title=Solution of a large-scale traveling salesman problem|journal=Operations Research|volume=2|year=1954|pages=393–410|doi=10.1287/opre.2.4.393|jstor=166695|issue=4}}.
*{{citation|first1=M. R.|last1=Garey|author1-link=Michael R. Garey|first2=D. S.|last2=Johnson|author2-link=David S. Johnson | year = 1979 | title = Computers and Intractability: A Guide to the Theory of NP-Completeness | publisher = W.H. Freeman | isbn = 0-7167-1045-5|contribution=A2.3: ND22–24|pages=211–212}}.
*{{citation|first=D. E.|last=Goldberg|title=Genetic Algorithms in Search, Optimization & Machine Learning|publisher=Addison-Wesley|location=New York|year=1989|isbn=0-201-15767-5|bibcode=1989gaso.book.....G|journal=Reading: Addison-Wesley}}.
*{{citation|first1=G.|last1=Gutin|first2=A.|last2=Yeo|first3=A.|last3=Zverovich|title=Traveling salesman should not be greedy: domination analysis of greedy-type heuristics for the TSP|journal=Discrete Applied Mathematics|volume=117|year=2002|pages=81–86|issue=1–3|doi=10.1016/S0166-218X(01)00195-0}}.
*{{citation|first1 = G.|last1=Gutin|first2=A. P.|last2=Punnen | title = The Traveling Salesman Problem and Its Variations | year = 2006 | publisher = Springer | isbn = 0-387-44459-9}}.
*{{citation|first1=D. S.|last1=Johnson|author1-link=David S. Johnson|first2=L. A.|last2=McGeoch|contribution=The Traveling Salesman Problem: A Case Study in Local Optimization|title=Local Search in Combinatorial Optimisation|editor1-first=E. H. L.|editor1-last=Aarts|editor2-first=J. K.|editor2-last=Lenstra|editor2-link=Jan Karel Lenstra|publisher=John Wiley and Sons Ltd|year=1997|pages=215–310}}.
*{{citation|first1 = E. L.|last1=Lawler|author1-link=Eugene Lawler|first2=J. K.|last2=Lenstra|author2-link=Jan Karel Lenstra|first3=A. H. G.|last3=Rinnooy Kan|first4=D. B.|last4=Shmoys | title = The Traveling Salesman Problem: A Guided Tour of Combinatorial Optimization | year = 1985 | publisher = John Wiley & Sons | isbn = 0-471-90413-9}}.
*{{citation|first1=J. N.|last1=MacGregor|first2=T.|last2=Ormerod|year=1996|title=Human performance on the traveling salesman problem|journal=Perception & Psychophysics|volume=58|issue=4|pages=527–539|url=http://www.psych.lancs.ac.uk/people/uploads/TomOrmerod20030716T112601.pdf|doi=10.3758/BF03213088}}.
*{{citation|first=J. S. B.|last=Mitchell|authorlink=Joseph S. B. Mitchell|year=1999|url=http://citeseer.ist.psu.edu/622594.html|title=Guillotine subdivisions approximate polygonal subdivisions: A simple polynomial-time approximation scheme for geometric TSP, ''k''-MST, and related problems|journal=SIAM Journal on Computing|volume=28 |pages=1298–1309 |doi=10.1137/S0097539796309764|issue=4}}.
*{{citation|first1=S.|last1=Rao |first2=W. |last2=Smith|contribution=Approximating geometrical graphs via 'spanners' and 'banyans' |title=[[Symposium on Theory of Computing|Proc. 30th Annual ACM Symposium on Theory of Computing]] |year=1998 |pages=540–550}}.
*{{citation |first1=Daniel J. |last1=Rosenkrantz |first2=Richard E. |last2=Stearns |first3=Philip M., II |last3= Lewis |title=An Analysis of Several Heuristics for the Traveling Salesman Problem |journal=SIAM Journal on Computing |volume=6 |issue=5 |pages = 563–581 |year=1977 |doi=10.1137/0206041}}.
*{{citation |first1=D. |last1=Vickers |first2= M. |last2= Butavicius |first3= M. |last3= Lee|first4=A.|last4= Medvedev |year=2001 |title= Human performance on visually presented traveling salesman problems|journal= Psychological Research|volume=65 |pages=34–45 |doi=10.1007/s004260000031|pmid=11505612 |issue=1}}.
*{{citation |first1=Chris |last1=Walshaw |title=A Multilevel Approach to the Travelling Salesman Problem|publisher=CMS Press |year=2000}}.
*{{citation |first1=Chris |last1=Walshaw |title=A Multilevel Lin-Kernighan-Helsgaun Algorithm for the Travelling Salesman Problem |publisher=CMS Press |year=2001}}.
 
==External links==
{{Commons category|Traveling salesman problem}}
* [http://www.math.uwaterloo.ca/tsp/index.html Traveling Salesman Problem] at [[University of Waterloo]]
* [http://www.iwr.uni-heidelberg.de/groups/comopt/software/TSPLIB95/ TSPLIB] at the [[University of Heidelberg]]
* ''[http://demonstrations.wolfram.com/TravelingSalesmanProblem/ Traveling Salesman Problem]'' by Jon McLoone at the Wolfram Demonstrations Project
* [http://www.adaptivebox.net/CILib/code/tspcodes_link.html Source code library for the travelling salesman problem]
* [http://tsp.r-forge.r-project.org/ TSP solvers in R] for symmetric and asymmetric TSPs. Implements various insertion, nearest neighbor and 2-opt heuristics and an interface to Concorde and Chained Lin-Kernighan heuristics.
* [http://www.imdb.com/title/tt1801123/ Traveling Salesman movie (on IMDB)]
* "[http://www.ibm.com/developerworks/cloud/library/cl-optimizepythoncloud1/index.html Traveling Salesman in Python and Linear Optimization, IBM Developerworks with Source Code]" by Noah Gift
 
{{DEFAULTSORT:Travelling Salesman Problem}}
[[Category:Travelling salesman problem| ]]
[[Category:NP-complete problems]]
[[Category:Operations research]]
[[Category:Graph algorithms]]
[[Category:Computational problems in graph theory]]
[[Category:Hamiltonian paths and cycles]]
 
{{Link FA|de}}

Latest revision as of 23:25, 12 September 2014

The name of the writer is Numbers. Hiring is his occupation. To gather cash is 1 of the things I adore most. Her family lives in Minnesota.

my web blog; diet meal delivery