是否存在具有一点扭曲的最短路径算法

时间:2015-11-19 16:22:02

标签: algorithm graph shortest-path

我对算法有一个很普遍的问题: 在图中是否存在最短路径算法(有向或无向),具有以下扭曲:路径中的每个添加节点都受到所有其他已存在节点的影响,并且"影响" (换句话说 - 两个椎体之间的边缘的重量,仅为此单一目的而创建)被添加到路径总重量中? 提前谢谢!

编辑:另一个尝试解释:让我们说我想找到从A到Z的最短路径,其间有各种其他节点。问题是,如果我正在查看从A开始然后B开始的路径,并且我尝试计算从A到C的总距离,实际距离是:距离(C)=重量(A,B)+重量( B,C)+重量(A,C),即使在A和C之间没有直接边缘,并且仅为此目的计算。

Edit2:另一种解释:假设我们有:A,B1,B2,C1,C2,D。带有椎体:(A,B1)= 1,(A,B2)= 2,(B1,C1)= 1,(B2,C2)= 2,(C1,D)= 1,(C2,D)= 2。 (等号的右边是边缘权重)。从A到D的最短路径当然是(A-> B1-> C1-> D),但现在允许添加我的bizzare需求:添加到路径的每个节点将其权重添加到当前的所有其他节点因此,以下的总距离实际上是:1 + 1 + 1 + w(A-> C1)+ w(A-> D)+ w(B1-> D)。那些重量可以知道,但不能用于路径本身(A,B1,C1,D)。其中一个可能影响算法想要的结果。

1 个答案:

答案 0 :(得分:0)

你的问题描述(没有进一步指定weight(I, J))打破了标准最短路径算法中的一个假设,即从A到I的最短路径可能不是任何最短路径A到Z的一部分我

A -> B(2), C(1)
B -> D(2)
C -> D(1)
D -> E(2)
with non-edge costs weight(I, J) := 0, except weight(C, E) := 100

从A到D的最短路径是A,C,D,成本2 = 1 + 1,而路径A,B,D的成本是4 = 2 + 2。即便如此,由于weight(C, E),路径A,C,D,E比A,B,D,E贵。

在这种情况下,您将继续计算网络中从开始节点到结束节点的所有可能路径,因为最新的最昂贵的看似路径在到达终端节点时可能仍然会更便宜,因为{{1对于每个节点,计算所有传入路径(从起始节点)的成本,直到计算完所有路径,然后在结束节点选择最便宜的路径。此算法假定weight(X, <end>)或输入为DAG。