Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để triển khai thuật toán lân cận gần nhất

Đây là chương trình C ++ để triển khai Thuật toán láng giềng gần nhất được sử dụng để thực hiện bài toán nhân viên bán hàng đi du lịch nhằm tính toán chi phí tối thiểu cần thiết để truy cập tất cả các nút bằng cách đi qua các cạnh chỉ một lần.

Các hàm và mã giả được yêu cầu

Thuật toán

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

Mã mẫu

#include<iostream>
using namespace std;

int c = 0, cost = 1000;
int g[3][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;
}

Đầu ra

minimum cost:3