给定一个有向图G,找到一个顶点v的最佳方法是什么,这样在G中有一条从v到每个其他顶点的路径?
此算法应在线性时间内运行。是否有现有的算法可以解决这个问题?如果没有,我会理解如何在线性时间内解决这个问题(我只能想到那些肯定不需要线性时间的解决方案)。
答案 0 :(得分:3)
制作所有顶点的列表L.
选择一个;把它叫做V.从V开始,走图形,在你走的时候从列表中删除点,并保持一堆未被访问的边。当你找到一个循环(你访问的某些顶点不在列表中)时,从堆栈中弹出一个边缘并继续。
如果堆栈为空,且L不为空,则从L中选择一个新顶点,将其称为V,然后像以前一样继续。
当L最终为空时,你最后选择的V就是答案。
答案 1 :(得分:2)
这可以在边数的线性时间内完成。
答案 2 :(得分:0)
我想我得到了正确答案。
这是一个充分而必要的条件。