最短路径,黄色和黑色边缘

时间:2013-01-02 18:13:51

标签: algorithm graph graph-theory shortest-path

给定有向和加权图G =(V,E) 没有负加权边缘。
每条边都是彩色的(黑色或黄色)。

我需要找到一个算法,找到给定s∈V的最短路径,而每条路径必须遵循这条规则:color(v i ,v i + 1 )= color(v i + 3 ,v i + 4 ),∀i:1≤i≤k-4,而路径为v 1 →...→v k 。 算法需要在O(| V | + | E | log(| V |))中。

2 个答案:

答案 0 :(得分:4)

作为提示:尝试修改Dijkstra算法以存储两个不同的优先级队列:一个包含从起始节点到目标节点以黄色边缘结束的路径的开销,以及从起始节点开始的路径的开销到以黑色边缘结束的目标节点。然后,更新逻辑以找到要选择考虑两个队列的下一个节点,并更改减小键逻辑以确保使用正确的信息更新正确的队列。这可以通过正常Dijkstra算法的常数因子开销来完成,因此需要时间O(| E | + | V | log | V |)。

希望这有帮助!

答案 1 :(得分:2)

您可以修改Dijkstra的算法,如templatetypedef建议,或修改图形以适应约束。

您可以使用DFA识别颜色约束,并将其与加权图形相结合,以获得可以应用未修改的Dijkstra的图形,从而实现典型的Dijkstra运行时。

约束的确切开销取决于DFA的大小,但它是常量,因为DFA不依赖于输入。