dijikstra 旅行商问题_『数学建模』TSP和MTSP问题

b434e2ba1f4b3a9b66763d8de929d73e.png

2020.7.14更新,补充一下后续获奖情况。

这次比赛我们小队获得了三等奖,为本次比赛中唯一获奖的大一学生队伍。

完整问题及详细地参赛论文地址:

2019-12-02 校内数模新手赛​blog.csdn.net

数模问题梗概:

先给出一张地铁路线图,主人公小p希望能从某两个给定的地铁站之一出发,采取某种路径遍历该路线图上所有的地铁中转站,最终回到给定的两个起始站之一(同前所述)。现要求你在两种条件下分别给出对应的最优路径

  1. 小p在一天内遍历完所有的中转站,并使得所用时间最少。
  2. 小p将该遍历任务分配成五天完成,使得总用时最少。

问题分析:

该问题中,首先可以应用图论的知识,将该路线图抽象成一张无向图,两地铁站间往来所用时间视为距离,保留中转站作为节点。构建出这样一张图以后,进行分析可以发现,给定两起始点事实上等价于一个起始点,因为我们总可以利用这两个起始点间的最短路径来优化方案。

因此,问题简化成从一个起始点出发,遍历所有点,再次回到起始点。那么很容易就联想到两个相关的数学模型:哈密顿回路旅行商问题。简单分析后,可以发现与本题相关的显

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dijkstra最短路径算法不能直接用来解决旅行商问题(TSP),因为TSP要求的是最短的回路路径,而Dijkstra算法只能求解单源最短路径问题。 要解决TSP问题,需要使用其他算法,如回溯算法、分支限界算法、遗传算法等。其中,分支限界算法是比较常用的一种方法,它可以通过剪枝和限制搜索空间的方式,快速找到TSP问题的最优解。 下面是基于分支限界算法求解TSP问题的简要流程: 1.根据给定的城市距离矩阵构建完全图,其中每个城市为图中的一个节点,距离为边的权值。 2.选择一个起点城市,将其作为路径的第一个节点。 3.根据分支限界算法的思想,每次只扩展当前路径的一个节点,记录扩展过的节点和路径长度,并记录当前最优解。 4.对于每个未扩展的节点,计算从当前节点到该节点的距离,并将该节点加入路径中。 5.对于加入路径的节点,更新当前路径长度,并判断是否达到终点。如果已经到达终点,则比较当前路径长度与最优解,如果更小则更新最优解。 6.对于未到达终点的节点,根据当前路径长度和最优解的大小关系,进行剪枝操作,排除掉不可能成为最优解的路径。 7.重复步骤4-6,直到搜索完所有可能的路径。 8.返回最优解。 需要注意的是,TSP问题是NP难问题,因此对于大规模的问题,即使使用最优的算法也需要大量的计算时间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值