有向图G

时间:2018-02-17 15:22:49

标签: algorithm graph-algorithm shortest-path dijkstra

昨天我参加了考试,我想检查一下我的问题是否正确回答。

问题:

G =(V,E,w)是有向的简单图(V:顶点集,E:边集,w:非负权函数)。 G的非空子集表示为E(红色) 如果p上有n个红色边,则G中的路径p将被称为n-red。 d_red(u,v)将是从顶点u到顶点v的最轻路径,至少为1红色。如果从u到v的所有路径都是0红色,则d_red(u,v)=无穷大 路径p的权重是作为p的一部分的所有边的总和。

输入:
G =(V,E,w)
s,t是V
的元素 f_red:E - > {true,false}
f_red(红边)=真
f_red(非红边)=假

输出:
d_red(s,t)(包含至少一个红色边缘的最轻路径)。

运行时约束:O(V log V + E)

简而言之,我的解决方案是使用Dijkstra的算法。最初为false的布尔变量用于跟踪是否遇到至少一个红色边缘。使用f_red检查每次迭代,如果f_red(当前边缘)= true,则将变量设置为true。如果变量在结尾处仍然为假,则返回d_red(u,v)= Infinity。

你怎么看?

0 个答案:

没有答案
相关问题