为任意两个节点之间的多重加权边寻找最短路径
Posted
技术标签:
【中文标题】为任意两个节点之间的多重加权边寻找最短路径【英文标题】:Finding shortest path for multi-weighted edges between any two nodes 【发布时间】:2015-06-25 13:40:36 【问题描述】:当有多条具有不同权重的边从一个节点到另一个节点时,我们如何使用 Dijkstra 算法找到最短路径,并且从一种模式到另一种模式的边的可用性取决于您所采用的边走到那条路。
当任何两个车站之间有多个火车/航班并且任何中间节点的到达时间应至少比下一个航班/火车的出发时间早几个小时时,这是最便宜路径的旅行计划的情况。
【问题讨论】:
【参考方案1】:算法设计手册第 4.4 章 - 战争故事:给我一张飞机票。
您可以在这里找到它:http://sist.sysu.edu.cn/~isslxm/DSA/textbook/Skiena.-.TheAlgorithmDesignManual.pdf(第 118 页)
【讨论】:
不,没那么简单。在某些情况下,为第 1 到第 2 节点选择最便宜的路径会迫使您从第 2 到第 3 节点选择非常昂贵的路径,这显然不是最便宜的从第一个节点到第三个节点的路径。 手册中只讨论了两个节点。但是如果有 n 个节点,那么每次迭代都是一个 n 阶向量空间,并且最多可以有 n^n 个这样的向量。此外,任何两个目的地之间都可以有不同的中间节点集。 这确实是一个计算难题。以上是关于为任意两个节点之间的多重加权边寻找最短路径的主要内容,如果未能解决你的问题,请参考以下文章