给出算法A,该算法使用非负边缘权重从DAG G中的源顶点s计算最长路径。运行算法A以在DAG G中找到最长路径的最少次数是多少?
一种方法是找出多个源顶点,这可以在O(| Edges |)中实现。然后将这些顶点中的每一个作为源顶点运行算法A。这将需要运行算法A NumberOfSourceVertices次。
我们可以做得更好吗?
答案 0 :(得分:3)
是的,我们可以做得更好。将新节点z
添加到G
。对于每个标识的源顶点s
,将边(z, s, 0)
(零边权重)添加到G。
在修改后的A
上运行G
一次。