dag中的最短路径但必须经过m-A型边缘和n型-B边缘

时间:2014-03-10 09:19:09

标签: algorithm graph shortest-path directed-acyclic-graphs

每个边都有一个dag(有向无环图),每个边都有一个类型,A型或B型

例如:

Imgur

(红色边缘表示A型,黑色边缘表示B型边缘)

问题定义如下:

given two vertices s, t, find a shortest path between these two vertices
subject to the usage of m type-A edges and n type-B edges,
or report no such path exists
例如,给定A,D和m = 1,n = 2,找到A和D之间的最短路径,同时满足约束

在这种情况下,最短路径为A,B,C,D,最短路径长度为7

我的脑海中浮现出一个想法,首先,我们进行拓扑排序, 然后使用拓扑顺序作为检查序列,跟踪最短路径长度和从A开始的遍历边缘

簿记记录将如下所示,

[ Number_of_Type_A Number_of_Type_B Shortest_length Prescessor ]

并继续考虑传入边缘,就像在dag中找到最短路径的常用方法一样

e.g。

Imgur

(我错过了边缘3(B,D))

考虑A:

[0, 0, 0, NIL]

考虑B:(1个传入边缘)

[1, 0, 1, A]

考虑C :( 2个传入边缘)

[1, 1, 3, B] and 
[1, 0, 1, A]

考虑D :( 2个传入边缘)

[1, 2, 7, C] and
[1, 1, 5, C] and 
[2, 0, 4, B]

由于存在使用1个A型和2个B型边的路径,并且可以在记录中找到最短路径和长度并追溯前辈

所以就是这样。

(时间复杂度是...... O(V + E)?我想可能比这更大,但我不知道如何分析它)

我不确定这是解决这个问题的正确方法。

还有其他方法可以解决这个问题吗?一般来说这个问题到底是什么?

感谢您的帮助!

0 个答案:

没有答案