C++ Program to Implement Traveling Salesman Problem using Nearest Neighbour Algorithm
Posted by Superadmin on August 08 2022 07:10:14

C++ Program to Implement Traveling Salesman Problem using Nearest Neighbour Algorithm

 

 

This C++ program implements the Travelling Salesman Problem which computes the minimum cost required to visit all the nodes by traversing across the edges only once.

 

Here is the source code of the C++ program to display the minimum cost by taking an undirected graph as input. This C++ program is successfully compiled and run on DevCpp, a C++ compiler. The program output is given below.

  1. /*
  2. * C++ Program to Implement Traveling Salesman Problem using Nearest neighbour Algorithm
  3.  */
  4. #include<stdio.h>
  5. #include<conio.h>
  6. #include<iostream>
  7. using namespace std;
  8. int c = 0,cost = 999;
  9. int graph[4][4] = { {0, 10, 15, 20},
  10.                     {10, 0, 35, 25},
  11.                     {15, 35, 0, 30},
  12.                     {20, 25, 30, 0}
  13.                   };
  14. void swap (int *x, int *y)
  15. {
  16.     int temp;
  17.     temp = *x;
  18.     *x = *y;
  19.     *y = temp;
  20. }
  21. void copy_array(int *a, int n)
  22. {
  23.     int i, sum = 0;
  24.     for(i = 0; i <= n; i++)
  25.     {
  26.         sum += graph[a[i % 4]][a[(i + 1) % 4]];
  27.     }
  28.     if (cost > sum)
  29.     {
  30.         cost = sum;
  31.     }
  32. }  
  33. void permute(int *a, int i, int n) 
  34. {
  35.    int j, k; 
  36.    if (i == n)
  37.    {
  38.         copy_array(a, n);
  39.    }
  40.    else
  41.    {
  42.         for (j = i; j <= n; j++)
  43.         {
  44.             swap((a + i), (a + j));
  45.             permute(a, i + 1, n);
  46.             swap((a + i), (a + j));
  47.         }
  48.     }
  49. } 
  50. int main()
  51. {
  52.    int i, j;
  53.    int a[] = {0, 1, 2, 3};  
  54.    permute(a, 0, 3);
  55.    cout<<"minimum cost:"<<cost<<endl;
  56.    getch();
  57. }

 

Output
minimum cost:80