algorithm - 修改 Dijkstra 算法以处理具有不止一种可能成本的边

标签 algorithm graph dijkstra

我们有一个有向加权图,其中两个节点之间的边可以具有多个可能的成本值(更准确地说,最多 2 个成本)。我需要使用 Dijkstra 算法的时间相关变体,它可以处理从一个节点到另一个节点的两种可能方式,节点之间的成本(边成本)取决于我们到达源节点的时间和我们将要使用的边缘类型。当从一个节点遍历到另一个节点时,只会选择这些边中的一条,并将其成本添加到相同的总成本中。

我目前将一条边的两种可能成本建模为相同节点之间的两条单独的边。

我发现了一个类似的问题here并建议通过复制节点来扩充图形。然而,这不允许返回到原始图,并且意味着复制所有节点以及它们与原始节点之间可能存在的边的开销。

对于如何以尽可能少的开销解决这个问题,您有什么建议吗? (原图估计很大)

谢谢

编辑: 我在第一段中提供了有关该问题的更多详细信息

最佳答案

出于算法目的,您可以安全地忽略两个成本中最大的一个。

假设在两个顶点之间存在一条使用最大成本的最短路径,您可以将其更改为使用最小成本并且路径将花费更少,这与假设相矛盾。

关于algorithm - 修改 Dijkstra 算法以处理具有不止一种可能成本的边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23376897/

相关文章:

c - 使用链表与大数组进行搜索

algorithm - 获取二维数组中的相邻元素?

graph - 具有最小优先级队列的 Dijkstra 算法

algorithm - Dijkstra 处理一个下降沿并给出正确的解决方案,一旦给出不正确的解决方案

algorithm - 高斯混合模型的EM算法实现

c# - 确保数组在 C# 中是连续的

c++ - boost 图 : Shortest path that pass through a set of points

c++ - 如何使用扩展的球形扇形(圆锥)来迭代坐标球?

python - 在二维空间中可视化加权图(权重作为顶点之间的距离)

algorithm - 为什么使用 Dijkstra 算法而不是最佳(最便宜)优先搜索?