分支限界法 tsp java_基于分支限界法的旅行商问题(TSP)一

//分支限界法

#include#include#include#include

const int INF = 100000;const int MAX_N = 22;using namespacestd;//n*n的一个矩阵

intn;int cost[MAX_N][MAX_N];//最少3个点,最多MAX_N个点

structNode

{bool visited[MAX_N];//标记哪些点走了

int s;//第一个点

int s_p;//第一个点的邻接点

int e;//最后一个点

int e_p;//最后一个点的邻接点

int k;//走过的点数

int sumv;//经过路径的距离

int lb;//目标函数的值(目标结果)

bool operator

}

};

priority_queue pq;//创建一个优先队列

int low, up;//下界和上界

bool dfs_visited[MAX_N];//在dfs过程中搜索过//确定上界,利用dfs(属于贪心算法),贪心法的结果是一个大于实际值的估测结果

int dfs(int u, int k, int l)//当前节点,目标节点,已经消耗的路径

{if (k == n) return l + cost[u][1];//如果已经检查了n个节点,则直接返回路径消耗+第n个节点回归起点的消耗

int minlen =INF, p;for (int i = 1; i <= n; i++)

{if (!dfs_visited[i] && minlen > cos

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值