贪婪算法求解TSP问题:
来源:互联网 发布:用python做数据分析 编辑:程序博客网 时间:2024/05/16 01:12
贪婪算法求解TSP问题:
贪婪算法(greedy algorithm)
贪心法,又称贪心算法、贪婪算法、或称贪婪法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。
贪心算法在有最优子结构的问题中尤为有效。最优子结构的意思是局部最优解能决定全局最优解。简单地说,问题能够分解成子问题来解决,子问题的最优解能递推到最终问题的最优解。
TSP问题
旅行推销员问题(英语:Travelling salesman problem, TSP)是这样一个问题:给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路。它是组合优化中的一个NP困难问题,在运筹学和理论计算机科学中非常重要。
- 为了简化问题,这里使用数字来代替各点
- A——1
- B——2
- C——3
- D——4
- E——5
代码块
#include <iostream>using namespace std;#define n 5int main(){ int dis[n][n]; int i; //int k = 1; int index = 1; int l = 1; int max = 1000; int disSum = 0; int flag = 0; int c[n]; int N = 4; c[0] = 0; dis[0][1] = 2; dis[0][2] = 10; dis[0][3] = 5; dis[0][4] = 1; dis[1][0] = 2; dis[1][2] = 7; dis[1][3] = 8; dis[1][4] = 4; dis[2][0] = 10; dis[2][1] = 7; dis[2][3] = 3; dis[2][4] = 6; dis[3][0] = 5; dis[3][1] = 8; dis[3][2] = 3; dis[3][4] = 9; dis[4][0] = 1; dis[4][1] = 4;dis[4][2] = 6; dis[4][3] = 9; while(index < n) { int k = 1; while(k < n && N >=0) { i = 0; while(i < l) { if(k == c[i]) { k = k+1; flag = 1; i = 0; } else { i = i+1; flag = 0; } } if(flag == 0 && dis[c[index-1]][k] < max ) { max = dis[c[index-1]][k]; c[index] = k; k = k+1; l = index+1; } else// if(flag == 1 || dis[c[index-1]][k] > max) { k = k+1; } } cout << "the distance between "<< c[index-1] << " and " << c[index] << " is " << max << "\n"; disSum = disSum + max; index = index + 1; //k = 1; max = 1000; N = N-1; } cout << "the first city is " << c[0] << "\n"; for(int x = 1; x < n; x++) { printf("the next city is %d \n",c[x]);//cout << c[x] << " "; } cout << "the shortest diastance is " << disSum << "\n" ; system("pause"); }
0 0
- 贪婪算法求解TSP问题:
- 贪婪算法实现tsp(担货郎问题)
- 遗传算法求解TSP问题
- 遗传算法求解TSP问题
- 遗传算法求解TSP问题
- 免疫算法求解TSP问题
- 模拟退火算法求解TSP问题
- 模拟退火算法求解TSP问题
- 模拟退火算法求解TSP问题
- Matlab 遗传算法求解TSP问题
- 蚁群算法求解TSP问题
- 用遗传算法求解TSP问题
- JAVA 基于贪心算法求解TSP问题
- 模拟退火算法求解TSP问题
- 模拟退火算法求解TSP问题
- 蚁群算法求解TSP问题
- 遗传算法求解TSP问题的总结
- 利用贪心算法求解tsp问题
- Android DecorView浅析
- bitset c++ 用法
- 两种代码风格解决强连通分量解决加多少条边使整个图连通&多少个点可以到达所有点
- 10B - Cinema Cashier
- Android知识点目录
- 贪婪算法求解TSP问题:
- POJ 2041 Unreliable Message
- this关键字笔记
- Android背景渐变色(shape,gradient)
- Cython使用,python提供c++接口
- Linux下vim编辑器的用法
- 向量范数与矩阵范数
- javaEE技术路线图
- 最佳加法表达式