From 5598a4fe593c664bdb63d4bee84d0a0a947530d1 Mon Sep 17 00:00:00 2001 From: Rohit Patil <32801968+RohitPatilRRP@users.noreply.github.com> Date: Fri, 4 Oct 2019 22:06:42 +0530 Subject: [PATCH] added travelling salesman problem --- TravellingSalesMan/tsp.cpp | 50 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 TravellingSalesMan/tsp.cpp diff --git a/TravellingSalesMan/tsp.cpp b/TravellingSalesMan/tsp.cpp new file mode 100644 index 00000000..a3dea18c --- /dev/null +++ b/TravellingSalesMan/tsp.cpp @@ -0,0 +1,50 @@ +// CPP program to implement traveling salesman +// problem using naive approach. +#include +using namespace std; +#define V 4 + +// implementation of traveling Salesman Problem +int travllingSalesmanProblem(int graph[][V], int s) +{ + // store all vertex apart from source vertex + vector vertex; + for (int i = 0; i < V; i++) + if (i != s) + vertex.push_back(i); + + // store minimum weight Hamiltonian Cycle. + int min_path = INT_MAX; + do { + + // store current Path weight(cost) + int current_pathweight = 0; + + // compute current path weight + int k = s; + for (int i = 0; i < vertex.size(); i++) { + current_pathweight += graph[k][vertex[i]]; + k = vertex[i]; + } + current_pathweight += graph[k][s]; + + // update minimum + min_path = min(min_path, current_pathweight); + + } while (next_permutation(vertex.begin(), vertex.end())); + + return min_path; +} + +// driver program to test above function +int main() +{ + // matrix representation of graph + int graph[][V] = { { 0, 10, 15, 20 }, + { 10, 0, 35, 25 }, + { 15, 35, 0, 30 }, + { 20, 25, 30, 0 } }; + int s = 0; + cout << travllingSalesmanProblem(graph, s) << endl; + return 0; +}