# tsp_greedy

tsp_greedy, a Python code which reads a file of city-to-city distances, and solves a small traveling salesperson problem (TSP) using the greedy algorithm. It picks a starting city at random, and then successively visits the nearest unvisited city.

The user must prepare a file beforehand, containing the city-to-city distances. The program will request the name of this file, and then read it in as a matrix d. An example of such a file is:

```        0  3  4  2  7
3  0  4  6  3
4  4  0  5  8
2  6  5  0  6
7  3  8  6  0
```
The distance file d should be square, symmetric, and have a zero diagonal.

A tour of n cities can be represented as a permutation p on the integers 0 through n-1. The cost of the tour, that is, the length, is the sum

```        cost = sum ( 0 <= i < n ) ( d(p(i),p(i+1)) )
```
where p(n) is understood to mean p(0).

The greedy algorithm starts at one of the cities, and then successively moves to the nearest unvisited city, producing a tour. The tour may depend on the starting city, and so all n cities are tried. At the end, the shortest observed tour is reported.

### Languages:

tsp_greedy is available in a MATLAB version and a Python version.

### Related Data and Programs:

change_making, a Python code which considers the change making problem, in which a given sum is to be formed using coins of various denominations.

partition_problem, a Python code which seeks solutions of the partition problem, splitting a set of integers into two subsets with equal sum.

satisfy, a Python code which demonstrates, for a particular circuit, an exhaustive search for solutions of the circuit satisfiability problem.

subset_sum, a Python code which seeks solutions of the subset sum problem.

tsp, a dataset directory which contains test data for the traveling salesperson problem;

tsp_brute, a Python code which reads a file of city-to-city distances and solves the traveling salesperson problem, using brute force.

### Reference:

1. Gerhard Reinelt,
TSPLIB - A Traveling Salesman Problem Library,
ORSA Journal on Computing,
Volume 3, Number 4, Fall 1991, pages 376-384.

### Source Code:

• five.txt, a 5 city distance matrix, whose minimal tour has length 21.
• fifteen.txt, a 15 city distance matrix, whose minimal tour has length 291.
• fortyeight.txt, a 48 city distance matrix, whose minimal tour has length 33,523.
• seventeen.txt, a 17 city distance matrix, whose minimal tour has length 2,085.

Last revised on 06 March 2022.