使用k条路径访问所有节点的最短路径算法

问题描述

我正在尝试编写一种遍历具有k条不同路径的访问所有节点的方法,以使我一次访问所有节点。可以从每个其他节点到达每个节点,并且我们所有人都是从相同的起始位置开始,而终止位置不明确。我们只想在最短的时间内访问所有节点。

有点像有k个推销员的旅行推销员,对返回我们的起点没有限制

任何想法或方向都会有所帮助

解决方法

这可能是NP难题,因此最佳解决方案将需要很长时间才能运行。

我也可能会选择一个随机贪婪的解决方案,该解决方案通常会工作得很好:

  1. 随机选择K个起点,将其标记为已访问。
  2. 跨所有路径的起点/终点(沿任一方向)跳转到下一个最接近的未访问点。将该地点标记为已访问。
  3. 重复步骤2,直到没有未访问的点为止。注意使用的路径和总距离。
  4. 重复1-3次X,返回使用X次行程总距离较短的路径。

可能在#3上可以进行一些后处理优化,以提高性能。 IE:再次运行算法(1-3),但将每个路径的终点用作起点。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...