# C++ Program to Implement Nearest Neighbour Algorithm

C++Server Side ProgrammingProgramming

#### C in Depth: The Complete C Programming Guide for Beginners

45 Lectures 4.5 hours

#### Practical C++: Learn C++ Basics Step by Step

Most Popular

50 Lectures 4.5 hours

#### Master C and Embedded C Programming- Learn as you go

66 Lectures 5.5 hours

This is a C++ program to implement Nearest Neighbour Algorithm which is used to implement traveling salesman problem to compute the minimum cost required to visit all the nodes by traversing across the edges only once.

## Required functions and pseudocodes

### Algorithm

Begin
Initialize c = 0, cost = 1000;
Initialize g[][].
function swap() is used to swap two values x and y.
function cal_sum() to calculate the cost which take array a[] and size of array as input.
Initialize sum =0.
for i = 0 to n
compute s+= g[a[i %3]][a[(i+ 1) %3]];
if (cost >s)
cost = s
function permute() is used to perform permutation:
If there is one lement in array
call cal_sum().
else
for j = i to n
swap (a+i) with (a + j)
cal_sum(a+1,n)
swap (a+i) with (a + j)
End

## Example Code

#include<iostream>
using namespace std;

int c = 0, cost = 1000;
int g[3 ] = { {1,2,3},{4,5,8},{6,7,10}};

void swap(int *x, int *y) {
int t;
t = *x;
*x = *y;
*y = t;
}

void cal_sum(int *a, int n) {
int i, s= 0;
for (i = 0; i <= n; i++) {
s+= g[a[i %3]][a[(i+ 1) %3]];
}
if (cost >s) {
cost = s;
}
}

void permute(int *a,int i,int n) {
int j, k;
if (i == n) {
cal_sum (a,n);
} else {
for (j = i; j <= n; j++) {
swap((a + i), (a + j));
cal_sum(a+1,n);
swap((a + i), (a + j));
}
}
}

int main() {
int i, j;
int a[] = {1,2,3};//take array elements
permute(a, 0,2);
cout << "minimum cost:" << cost << endl;
}

## Output

minimum cost:3