如何解决这样一个多起点多终点的最短路径问题?

Posted

技术标签:

【中文标题】如何解决这样一个多起点多终点的最短路径问题?【英文标题】:How to solve such a shortest path problem with multiple starting points and multiple ending points? 【发布时间】:2021-12-09 14:51:23 【问题描述】:

在图上,有多个起点和终点。每个起点对应多个终点,每个终点只对应一个起点。我需要在地图上找到从起点到终点的所有路线。不同的路线不能交叉,但允许它们重叠。

一开始我使用 A* 算法来寻找每一条路线,但后一条路线为了不与前一条路线交叉而采取了更多的路径。我想知道有没有算法可以考虑所有路线的总长度。

【问题讨论】:

如果找到最短的非相交路径并不困难,我会感到惊讶。 “不同的路线不能交叉,但允许它们重叠”这句话对我来说没有意义。考虑添加对允许路径的更精确描述。也许一些图片。 对不起,我的英语不好,我添加了一张图片来描述。 【参考方案1】:

请澄清您所说的“交叉路径”是什么意思

我可以看到两种可能性。

A.交叉路径出现在具有四个或更多边的顶点处。一条路径使用两条边进入和离开顶点,第二条路径使用不同的一对边。

B.顶点的 x,y 位置都在同一平面上。当两条边相交时,节点之间就会发生交叉。


算法:

循环开始节点 使用 Dijkstra 查找从起始节点到其所有相应结束节点的最短路径 如果没有发生交叉,则为此起始节点完成 从图中删除交叉节点 ( A ) 或链接 ( B ) 并依次重新计算交叉路径。选择最便宜的。

【讨论】:

以上是关于如何解决这样一个多起点多终点的最短路径问题?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决旅行推销员问题的起点和终点?

最短路径问题

干货最短路径问题

最短路径问题模型汇总

初中阶段最短路径小结 务必保存

HDU2066一个人的旅行---(多起点多终点最短路径)