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.

Licensing:

The computer code and data files described and made available on this web page are distributed under the MIT license

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:


Last revised on 06 March 2022.