【问题标题】:check if a graph is singly connected检查一个图是否是单连接的
【发布时间】:2020-09-05 11:54:55
【问题描述】:

我将“算法简介”CLRS 第 3 版第 22 章练习 22.3-13 中的单连通图定义称为 A directed graph G = (V,E) is singly connected if G contains at most one simple path from u to v for all vertices u, v belongs to V。我注意到图中的循环并不一定意味着该图不是单独连接的,因为涉及循环的路径不被视为简单路径。有向图中的一个简单循环可以由一组对应的边唯一地表示。让我们考虑一个满足以下两个属性的有向图:
(1) 它在其 DFS 森林中只有树和后边缘,并且 (2) 表示图中每个简单循环的所有集合都是不相交的(即它们不共享任何边)。 现在我的问题是:满足上述两个条件的每个有向图是否都必须是单连通图?还是仅条件 1 就足以使图形单连接?我找不到任何反例

【问题讨论】:

  • @tobias_k ,考虑由 G = ( (0, 1, 2), ( (0, 1), (1, 2), (2, 0) ) ) 给出的图。你能指出这三个节点循环中的任何这样两条路径吗?
  • 没有看到“定向”位。

标签: algorithm graph graph-algorithm


【解决方案1】:

我找到了一个反例。假设这个有向图 G 有 5 个节点 (0, 1, 2, 3, 4) 和 6 条边 (0,1), (1,2), (2,0), (2,3), (3,4 ), (4,0)。如果我们在集合 (3, 4) 中的任何节点处启动 DFS,我们将只有树和后边。显然,它满足条件 1 但不满足条件 2,并且它不是单连通图,因为从节点 1 到 0 有两条简单路径( 1->2->3->4->0 和 1->2->0 ) .令人惊讶的是,如果我们从任何其他节点(即从 0、1、2)启动 DFS,其 DFS 森林将包含至少一个前向边缘。可以看出,该图中表示简单循环的边集是 {(0,1), (1,2), (2,0)} 和 {(0,1), (1,2), (2 ,3), (3,4), (4,0)} 共享边 (0,1) 和 (1,2)。通过从两个集合之间共有的边中的任何节点(即从 0、1、2)中选择初始节点获得的 DFS 森林产生至少一个前向边,而通过从任何剩余节点中选择初始节点(即从 3 , 4) 在他们的 DFS 森林中只产生树和后向边缘。证明有向图单连通,条件1是不充分的。

【讨论】:

    猜你喜欢
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 2015-10-25
    • 2013-10-29
    • 1970-01-01
    相关资源
    最近更新 更多