【问题标题】:checking Directed Graph for bridges检查桥梁的有向图
【发布时间】:2011-10-14 12:50:00
【问题描述】:

我正在寻找一种快速算法来确定给定的有向图是否包含桥...
不关心这座桥的位置.. 只关心图表是否包含它。

【问题讨论】:

标签: algorithm graph


【解决方案1】:

如果图是有向图,类似于无向图的桥,如果移除边会增加图的强连通分量的数量,我们将其称为强桥。 为了测试有向图是否具有强大的桥梁,您需要运行本文中详述的算法: Giuseppe F. Italiano、Luigi Laura、Federico Santaroni:在线性时间中寻找牢固的桥梁和牢固的关节点。理论。计算。科学。 447:74-84(2012) http://dx.doi.org/10.1016/j.tcs.2011.11.011

【讨论】:

    【解决方案2】:

    请注意,当且仅当它不包含在任何循环中时,边才是桥,因此如果您的图不是强连接的,则它应该包含桥。

    在您的图表上运行Tarjan strongly connected components algorithm。如果结果与你的图表不同,那就是一座桥。

    【讨论】:

    • 我知道这个算法..但我认为会有更简单的方法来做到这一点,因为我不想要桥的位置......我只想检查它是否是强连接还是不...
    • @AhmadIbrahem 我相信这是最快的方法:en.wikipedia.org/wiki/Strongly_connected_component
    • @SaeedAmiri 如果图是强连通的,则所有边都包含在一个循环中
    • 如果存在不属于任何循环的平行有向边怎么办?我认为这些边缘不会被归类为桥梁。
    【解决方案3】:

    我刚刚找到了一个更好或更简单的解决方案..
    选择任何节点运行一个简单的 dfs 并检查是否访问了每个节点然后反转所有边并从同一个节点开始检查是否可以再次访问所有节点,如果不能,那么它肯定包含一个桥。

    【讨论】:

    • 是的,但是它的复杂性是 O(E*E) 而在 O(E) 中是可能的
    猜你喜欢
    • 1970-01-01
    • 2012-06-28
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 2012-02-13
    • 2021-03-11
    相关资源
    最近更新 更多