The travelling-salesman problem
1) Consider city 1 as the starting and ending point.
2) Generate all (n-1)! Permutations of cities.
3) Calculate cost of every permutation and keep track of minimum cost permutation.
4) Return the permutation with minimum cost.
Let the given set of vertices be {1, 2, 3, 4,….n}. Let us consider 1 as starting and ending point of output.
Travelling Salesman Problem (TSP): Given
a set of cities and distance between every pair of cities, the problem is to
find the shortest possible route that visits every city exactly once and
returns to the starting point.
For example, consider the graph
shown in figure
A TSP tour in the graph is 1-2-4-3-1. The cost
of the tour is 10+25+30+15 which is 80.
The problem is a famous NP
hard problem. There is no polynomial time know solution for this problem.
Naive Solution:
1) Consider city 1 as the starting and ending point.
2) Generate all (n-1)! Permutations of cities.
3) Calculate cost of every permutation and keep track of minimum cost permutation.
4) Return the permutation with minimum cost.
Time Complexity: Θ (n!)
Dynamic Programming:
Let the given set of vertices be {1, 2, 3, 4,….n}. Let us consider 1 as starting and ending point of output.
For every other vertex i (other
than 1), we find the minimum cost path with 1 as the starting point, i as the
ending point and all vertices appearing exactly once.
Let the cost of this path be
cost(i), the cost of corresponding Cycle would be cost(i) + dist(i, 1) where
dist(i, 1) is the distance from i to 1.
Finally, we return the minimum of
all [cost(i) + dist(i, 1)] values.
This looks simple so far. Now the
question is how to get cost(i)?
To calculate cost(i) using Dynamic
Programming, we need to have some recursive relation in terms of sub-problems.
Let us define a term C(S, i) be the cost of the minimum cost path
visiting each vertex in set S exactly once, starting at 1 and ending at i.
If size of S is 2, then S must be
{1, i},
C(S, i) = dist(1, i)
Else if size of S is greater than
2.
C(S, i) = min { C(S-{i}, j) + dis(j, i)} where
j belongs to S, j != i and j != 1.
For a set of size n, we consider
n-2 subsets each of size n-1 such that all subsets don’t have nth in them.
Using the above recurrence
relation, we can write dynamic programming based solution. There are at most
O(n x 2n) subproblems, and each one takes linear time to solve. The
total running time is therefore O(n2 x 2n). The time
complexity is much less than O(n!), but still exponential. Space required is
also exponential. So this approach is also infeasible even for slightly higher
number of vertices.
Approximate algorithms for travelling salesman problem.
The approximate algorithms work
only if the problem instance satisfies Triangle-Inequality.
Triangle-Inequality: The least distant path to reach a vertex j from i is
always to reach j directly from i, rather than through some other vertex k (or
vertices), i.e., dis(i, j) is always less than or equal to dis(i, k) + dist(k,
j). The Triangle-Inequality holds in many practical situations.
When the cost function satisfies
the triangle inequality, we can design an approximate algorithm for TSP that
returns a tour whose cost is never more than twice the cost of an optimal tour.
The idea is to use Minimum Spanning Tree
(MST). Following is the MST based algorithm.
Algorithm:
1) Let 1 be the starting and ending point for salesman.
2) Construct MST from with 1 as root using Prim's algorithm.
3) List vertices visited in preorder walk of the constructed MST and add 1 at the end.
1) Let 1 be the starting and ending point for salesman.
2) Construct MST from with 1 as root using Prim's algorithm.
3) List vertices visited in preorder walk of the constructed MST and add 1 at the end.
Let us consider the following example.
The second diagram shows MST
constructed with 1 as root. The preorder traversal of MST is 1-2-4-3. Adding 1
at the end gives 1-2-4-3-1 which is the output of this algorithm.
The approximate algorithm produces
the optimal tour, but it may not produce optimal tour in all cases.
No comments:
Post a Comment