#include<iostream>
#include<queue>
#define MAXNUM 100
#define INF 65535
using namespace std;
class Node{
public:
Node(){}
public:
int depth; //深度
int dis; //当前已走过的长度
int lval; //距离上界即从当前节点走到尾 + 已走过的贪心距离
int uval; //从当前节点到尾的贪心长度
int route[MAXNUM]; //路径存储
friend bool operator<(Node a,Node b){
return a.uval > b.uval;
}
};
class TSP{
public:
priority_queue<Node> q; //优先队列存储节点
int minsum; //距离下届
int bestv; //最优解
int num; //节点个数
int edge; //边个数
int adj[MAXNUM][MAXNUM]; //临界矩阵存储
int *bestroute; //最优路径
int *minest_edge; //每个节点的最小出边
public:
/* 初始化函数 */
void Initial(){
cout<<"please input the number of nodes and edges: "<<endl;
cin>>num>>edge;
bestv = INF;
minest_edge = new int[num * 2];
bestroute = new int[num * 2];
for(int i = 1;i <= num;i
分支限界法求解TSP问题
最新推荐文章于 2022-11-20 09:22:27 发布