我正尝试在表示城市服务的按区域加权图中解决问题,该图具有约300个节点和700个边缘。
节点是由地铁站定义的,边缘是字符串,其中包含它们所属的线的信息以及在该边缘中行进的时间(边缘的权重)。
我必须确定两个站点之间的最快路径,并给出 unordered 的列表(如果命令了它们,则所有站点之间的最短路径排列就足够了)强制站点,它可以还要经过其他车站
搜索了此问题之后,我看到了一些创建子图+应用DFS的建议。因此,我创建了一个图,其中以起点桩号+强制桩号+终点桩号为新顶点,并以带有每个桩号之间的最短路径信息+行驶时间的信息作为边缘。
我现在遇到的问题是:我如何在这个新的子图上应用DFS,以使上次访问的站强制成为我作为目的地的站?
很抱歉,这个问题很久!
答案 0 :(得分:0)
首先需要为您的问题定义一些内容:强制性站点是您仅需要访问 站点才能到达目的地的站点吗?还是在它们之间是否有其他未知站不是强制性的,而是可能需要在最短路径中进行?
假设此图包含循环:
如果强制性站点列表是到达目的地所需的所有站点,则可以在所有强制性节点的子图上使用Dijkstra算法解决此问题。
在另一种情况下,它将更加复杂(实际上是NP困难的),请参见以下答案以获取更深入的解决方案:Shortest path that traverses a list of required edges
答案 1 :(得分:0)