tsp_nearest


tsp_nearest, a Fortran90 code which is given a list of city coordinates, and seeks the shortest round trip for traveling salesperson problem (TSP) using the nearest neighbor algorithm. It picks a starting city at random, and then successively visits the nearest unvisited city.

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

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

The 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 information on this web page is distributed under the MIT license.

Languages:

tsp_nearest is available in a C version and a C++ version and a Fortran90 version and a MATLAB version and an Octave version and a Python version.

Related Data and Programs:

tsp_nearest_test

concorde, examples which call concorde(), which solves the traveling salesman problem (TSP), mixed integer programming, and related network optimization problems.

subset_sum_backtrack, a Fortran90 code which uses backtracking to solve the subset sum problem, to find a subset of a set of integers which has a given sum.

tsp, a dataset directory which contains test data for the traveling salesperson problem (TSP) including the AT&T 48 state capital test, and Dantzig's 42 city test;

tsp_anneal, a Fortran90 code which reads a table of city locations, and uses simulated annealing to solve the traveling salesperson problem (TSP), based on a Numerical Recipes code. Graphics files are created for processing by gnuplot().

tsp_att48, a Fortran90 code which returns the (x,y) coordinates of the cities that constitute the AT&T 48 state challenge for the Traveling Salesman Problem (TSP). Graphics files are created for processing by gnuplot().

tsp_brute, a Fortran90 code which is given a table of city locations, and solves a (small) traveling salesperson problem (TSP), using brute force.

tsp_dantzig42, a Fortran90 code which returns the (x,y) coordinates of the cities that constitute the Dantzig 42 state challenge for the Traveling Salesman Problem (TSP). The minimal tour is known to have length 699. Graphics files are created for processing by gnuplot().

tsp_display, a Fortran90 code which displays the solution of a Traveling Salesman Problem (TSP). Graphics files are created for processing by gnuplot().

tsp_io, a Fortran90 code which reads or writes files from the TSPLIB collection of traveling salesman problems (TSP).

tsp_lau, a Fortran90 code which implements a heuristic algorithm for the solution of the traveling salesperson problem (TSP).

Reference:

  1. William Cook,
    In Pursuit of the Traveling Salesman,
    Princeton University Press, 2012,
    ISBN13 978-0-691-16352-9.
  2. 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 June 2026.