首页 > 其他分享 >旅行商问题简析

旅行商问题简析

时间:2023-05-04 11:48:41浏览次数:85  
标签:旅行 指派 路径 算法 问题 简析 节点

旅行商问题是一个很经典的图论问题。

不重复的旅行商问题用数学语言叙述如上所示,式中xij表示节点i到节点j,cij则表示节点i到节点j的路径长度;第一个约束保证一个节点只出发一次,第二个约束保证一个节点值到达一次。

解决非对称旅行商问题的常用方法是指派算法。指派算法的实质是匈牙利算法,需要寻找增广路径,做二分图匹配。算法详解:(32条消息) 分配(指派)问题_指派问题_skycrygg的博客-CSDN博客

实际生活中,面对的旅行商问题大多是可重复的,也就是节点、路径可重复遍历。解决这一类问题的常用方法是floyd算法,该算法是基于贪心算法,时间复杂度较高为O(n3).

for k in range(n):
    for i in range(n):
        for j in range(n):
            if dis[i][k]+dis[k][j]<dis[i][j]:#dis表示为路径矩阵
                dis[i][j]=dis[i][k]+dis[j][k] #找到经过k点时路径更短,接受这个更短的路径长度
                path[i][j]=k #路由矩阵记录路径

当地图足够大时,floyd算法的运算量将十分可怕,所以现代算法更喜欢使用启发式的算法来解决可重复的旅行商问题。

为了方便进一步思考,笔者也给出了一个送货员问题,读者不妨尝试解答这个简单的问题:

一个城镇有N个地方,他们都是连通的,而且是路径可以往复的,每段路径的长度也是已知的,现在送货员接到了n个单,从起点出发必须要经历到n个指定的点,怎样才能使他行进的总路程最短呢?示意图如下,黑点为指定的点,橘点为起点,其他点为普通点。

 

标签:旅行,指派,路径,算法,问题,简析,节点
From: https://www.cnblogs.com/xmds/p/17370664.html

相关文章

  • SpringBoot项目部署在外置Tomcat正常启动,但项目没有被加载的问题
    最近打算部署个SpringBoot项目到外置Tomcat运行,但是发现tomcat启动成功,访问却一直404,刚开始以为是Tomcat的问题,就一直在改Tomcat配置。最后发现tomcat启动时根本就没加载到项目,因为控制台没有打印"SpringBoot"的项目标志经过一番百度查找,最后发现是因为项目启动类没有继承Spring......
  • RTThread使用DMA串口接收数据不连续的问题
    RTThread使用DMA接收串口数据的问题问题/现象解决方式解决方式①解决方式②其它疑问问题/现象使用RTThread的DMA接收串口数据,数据不连续,即IDLE中断没有起到作为一个frame的判定.经过对serial和drv_uarts源码的分析,得出原因:graphLRRX_INT[USART1_IRQHandler]-......
  • 记录一件很神奇的类型转换问题(springboot项目+echarts)
    今天博主在应付学校的实验,想要使用echarts绘制一张很简单的条形图(博主是初学者),如下(时间还未作排序) 对于横轴,我封装了一个dateList,这个datelist是用java,将数据库中date类型的数据,提取其年月拼装而成的,代码如下:Stringdate=String.valueOf(art.getArticleCreateTime().getYea......
  • a标签download属性跨域问题
    1.如果是加载了非同源的内容,该属性将失效,等于导航功能2.在服务端设置Content-Disposition,使用HTTP响应头Content-disposition进行处理3.先下载数据文件,生成Blob对象,再使用URL.createObjectURL()创建一个非跨域的数据源,然后写入a标签支持下载......
  • 使用电脑时的一些问题
    目录windows终端在vim内粘贴多行的时候会错位windows终端在vim内粘贴多行的时候会错位在JSON文件里把这一段注释掉{"command":"paste","keys":"ctrl+v"},......
  • [动态规划-背包问题入门] 原理,运用,实战
    背包问题--动态规划经典类型动态规划是将问题细分为有限个小问题并通过递推或递归来求得最终值。具象化来说,就是对某一问题的答案,我们转化为dp[n],而对于0<=i<n,dp[i][j]的值会根据前后上下的相关值来变化(i.e.dp[i-1][j]或dp[i][j-1])。注意这时算法强调的不是【容量】,而是......
  • 跨域问题(CORS / Access-Control-Allow-Origin)
    1、前言   最近在项目中,调用EurekaREST接口时,出现了CORS跨越问题(Cross-originresourcesharing),在此与大家进行分享,避免多走些弯路。   项目前端(http://localhost:9000)通过Ajax方式调用EurekaREST接口(http://localhost:8761/eureka/apps)时,却没有任何反应,则通过F12查......
  • nginx配置导致过长数据截断问题
    使用jsfetch请求php的时候,出现了TheoperationwasabortSyntaxError:JSON.parse:unterminatedstringatlinexxxoftheJSONdata错误,nginx日志出现了2022/04/0918:58:19[crit]759465#759465:*5007open()"xxx/nginx/fastcgi_temp/6/07/0000000076"failed(13:Perm......
  • 最少硬币支付问题 c的幂次方证明
    假设硬币的面值为\(c^0,c^1,...,c^k\),其中c是一个大于1的整数,k是一个大于等于1的整数。设\(a_i\)是找n分钱的最优解中面值\(c^i\)的硬币的数量,那么对于\(i=0,1,...,k-1\),有\(a_i<c\)。这是因为如果\(a_i>=c\),那么可以用一个面值\(c^{i+1}\)的硬币替换c个面值\(c^i\)的硬币,......
  • 多线程解决数据安全问题
      只需要再引发安全问题的部分加lock就行。加锁的话其他进程不能访问的。 ......