在图形中,如何确定两个顶点是否形成桥梁,以及桥梁断开后哪些顶点将成为哪个子图的一部分?

时间:2018-01-25 00:57:49

标签: c# data-structures graph graph-algorithm adjacency-list

我使用邻接列表在C#中创建我的图表。

enter image description here

在此图中,#4和#5构成了一个桥梁,当断开连接时将创建两个子图:

  • {1,2,3,4}
  • {5,6,7,8}

我的问题分为两部分:

  1. 如何确定#4和#5是否形成桥梁?
  2. 如何找出哪个顶点属于哪个子图,以便为每个子图创建新图?

1 个答案:

答案 0 :(得分:2)

您可以在O(V+E)read here

中找到图表中的所有桥梁

之后,使用DFS标记桥并找到连接的组件:

for each node:
        if (not visited)
            components++
            dfs(node)

在dfs遍历中,不要通过标记为桥的边。