【实验目的】
1、掌握贪心算法求解问题的一般特征和步骤;
2、使用贪心算法编程,求解TSP问题和多机调度问题。
TSP问题
一、实验内容:
采用最近邻点策略:从任意城市出发每次在没有到过的城市中选择最近的一个,直到经过了所有的城市,最后回到出发城市。
如图为最近邻点贪心策略求解TSP问题的过程。
设图G中n个顶点的编号为{1,2,……,n},cij表示顶点i到顶点j的代价(1<=i,j<=n),集合V存储图的顶点,集合P存储经过的边,从顶点w出发采用最近邻点策略求解TSP问题的算法如下:
二、实验源程序及结果截图:
1、实验代码:
#include<iostream>
using namespace std;
int main(){
int n,i,j;
cout<<"请输入城市个数:";
cin>>n;
int V[n+1][n+1];
cout<<"请输入矩阵:\n";
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
cin>>V[i][j];
}
}
int flag[n+1]={
0};
//flag数组表示某顶点是否加入回路,一开始所有顶点都未加入
int w=1,edgeCount=0,TSPLength=0,u,v;
//w为起始点,edgeCount记录加入的边数 ,TSPLengeh表示回路长度
//u为边的起始点,v为边的终点
u=w;flag[w]=1;
while(edgeCount<n-1){
//循环直到边数为n-1
int min=100;
for(i=1