【问题标题】:Modifications of BFS/DFS to check simple paths修改 BFS/DFS 以检查简单路径
【发布时间】:2013-07-07 12:56:08
【问题描述】:

在给定 G=(V,E) 一个有向图的情况下,我必须从 BFS 或 DFS 设计一个算法来执行以下操作:

检查是否存在从s到V中任何其他顶点u的至多一条简单路径。该算法必须在O(|V|+|E|)上。

从前面的算法,我必须设计另一个 O(|V||E|) 算法来检查任意两个顶点 uv.

我希望你能帮助我!提前非常感谢!

【问题讨论】:

  • 欢迎来到 StackOverflow。你试过什么?

标签: algorithm graph depth-first-search


【解决方案1】:

提示:如果路径上从 su 的所有边都是cut edges(桥)怎么办?如果其中任何一个不是最先进的怎么办? :)

注意:我们可以在 O(V+E) 时间内找到所有的桥梁

【讨论】:

  • 很好的解决方案!我阅读了 wiki 链接,但那里描述的线性时间算法,我无法理解。它可以简单地描述它吗?
  • @Aravind:你可以看看here 顺便说一句,如果你喜欢这个解决方案,为什么不投票呢? :) 这就是另一个人可以找到有趣答案的方式 :) 谢谢!
  • 谢谢@MuhammedHedayet!这非常有用。使用你之前发布的代码,我可以找到所有的桥,但是,如何确定 s 到任何仅由桥组成的顶点之间的路径?
  • @Stratford:一个简单的解决方案如下:首先标记所有桥边。在找到网桥的同时,您可以找到每个节点的父节点。因此,您可以从 u 开始,在每一步都跟随父节点到达 s。在跟随路径时,只需检查从 ab 的边是否是桥,其中 ab 是从 us 的路径上的两个顶点,ba 的父节点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多