V
- the graph vertex typeE
- the graph edge typepublic class HeldKarpTSP<V,E> extends Object implements TSPAlgorithm<V,E>
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?".
This is an implementation of the Held-Karp algorithm which returns a optimal, minimum-cost Hamiltonian tour. The implementation requires the input graph to contain at least one vertex. The running time is $O(2^{|V|} \times |V|^2)$ and it takes $O(2^{|V|} \times |V|)$ extra memory.
See wikipedia for more details about TSP.
See wikipedia for more details about the dynamic programming algorithm.
Constructor and Description |
---|
HeldKarpTSP()
Construct a new instance
|
Modifier and Type | Method and Description |
---|---|
GraphPath<V,E> |
getTour(Graph<V,E> graph)
Computes a minimum-cost Hamiltonian tour.
|
public GraphPath<V,E> getTour(Graph<V,E> graph)
getTour
in interface HamiltonianCycleAlgorithm<V,E>
getTour
in interface TSPAlgorithm<V,E>
graph
- the input graphIllegalArgumentException
- if the graph contains no verticesIllegalArgumentException
- if the graph contains more than 31 verticesCopyright © 2018. All rights reserved.