旅行商问题 打印路径

本文探讨了旅行商问题,寻找从起点出发,经过所有其他点并返回起点的最短路径。通过利用集合(set)来跟踪未访问的点,并采用递归策略,以dist[i][j] + fun(j, set-{j})作为递推公式,逐步求解最短路径。代码实现详细阐述了这一过程。" 86638447,7604327,BadUSB实施:Teensy与Arduino Leonardo的区别,"['arduino', 'teensy', 'BootLoader']
摘要由CSDN通过智能技术生成

从一个起始点(默认第一个点)出发,找到一条花费最短的路径经过所有其他点,然后又回到出发点,除了起始点经过两次,其他所有点必须经过一次且只能经过一次。

这里用到了set, set是一个不包含重复元素的集合,表示还未访问到的点,函数fun( i, set ) 表示从点 i 经过set 中的所有元素的最短路径。


这个问题可以这样分解,枚举 set 中的每个元素,选出点 i 到这个元素的距离 再加上 这个点到 set减去这个点的新集合的最短距离,递推公式为

fun( i, set )= min{ dist[ i ] [ j ] + fun( j, set-{ j} )}, 其中 j 是 set 中的所有元素。fun( j, set-{ j} )又可以依次推下去,直到 set为空,说明没有为访问的点了,这是递归调用的出口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值