Algorithms_in_C++ 1.0.0
Set of algorithms implemented in C++.
Loading...
Searching...
No Matches
travelling_salesman_problem.cpp File Reference

[Travelling Salesman Problem] (https://en.wikipedia.org/wiki/Travelling_salesman_problem) implementation More...

#include <algorithm>
#include <cassert>
#include <iostream>
#include <limits>
#include <vector>
Include dependency graph for travelling_salesman_problem.cpp:

Namespaces

namespace  graph
 Graph Algorithms.
 

Functions

int graph::TravellingSalesmanProblem (std::vector< std::vector< uint32_t > > *cities, int32_t src, uint32_t V)
 Function calculates the minimum path distance that will cover all the cities starting from the source.
 
static void tests ()
 Self-test implementations.
 
int main ()
 Main function.
 

Detailed Description

[Travelling Salesman Problem] (https://en.wikipedia.org/wiki/Travelling_salesman_problem) implementation

Author
Mayank Mamgain

Travelling salesman problem asks: 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? TSP can be modeled as an undirected weighted graph, such that cities are the graph's vertices, paths are the graph's edges, and a path's distance is the edge's weight. It is a minimization problem starting and finishing at a specified vertex after having visited each other vertex exactly once. This is the naive implementation of the problem.

Function Documentation

◆ main()

int main ( void )

Main function.

Returns
0 on exit
104 {
105 tests(); // run self-test implementations
107 {0, 5, 10, 15}, {5, 0, 20, 30}, {10, 20, 0, 35}, {15, 30, 35, 0}};
108 uint32_t V = cities.size();
110 return 0;
111}
T endl(T... args)
int TravellingSalesmanProblem(std::vector< std::vector< uint32_t > > *cities, int32_t src, uint32_t V)
Function calculates the minimum path distance that will cover all the cities starting from the source...
Definition travelling_salesman_problem.cpp:40
T size(T... args)
static void tests()
Self-test implementations.
Definition travelling_salesman_problem.cpp:77
Here is the call graph for this function:

◆ tests()

static void tests ( )
static

Self-test implementations.

Returns
void
77 {
78 std::cout << "Initiatinig Predefined Tests..." << std::endl;
79 std::cout << "Initiating Test 1..." << std::endl;
81 {0, 20, 42, 35}, {20, 0, 30, 34}, {42, 30, 0, 12}, {35, 34, 12, 0}};
82 uint32_t V = cities.size();
83 assert(graph::TravellingSalesmanProblem(&cities, 0, V) == 97);
84 std::cout << "1st test passed..." << std::endl;
85
86 std::cout << "Initiating Test 2..." << std::endl;
87 cities = {{0, 5, 10, 15}, {5, 0, 20, 30}, {10, 20, 0, 35}, {15, 30, 35, 0}};
88 V = cities.size();
89 assert(graph::TravellingSalesmanProblem(&cities, 0, V) == 75);
90 std::cout << "2nd test passed..." << std::endl;
91
92 std::cout << "Initiating Test 3..." << std::endl;
93 cities = {
94 {0, 10, 15, 20}, {10, 0, 35, 25}, {15, 35, 0, 30}, {20, 25, 30, 0}};
95 V = cities.size();
96 assert(graph::TravellingSalesmanProblem(&cities, 0, V) == 80);
97 std::cout << "3rd test passed..." << std::endl;
98}
Here is the call graph for this function: