在图中,如何确定两个顶点是否形成一座桥,以及一旦桥断开连接,哪些顶点将成为哪个子图的一部分?
In a graph, how do you determine if two vertices form a bridge and which vertices will be part of which subgraph once the bridge is disconnected?
我正在使用邻接表在 C# 中创建我的图形。
在此图中,#4 和#5 形成一座桥,断开连接时将创建两个子图:
- {1,2,3,4}
- {5,6,7,8}
我的问题分为两部分:
- 如何确定#4 和#5 是否形成桥?
- 如何找出哪些顶点属于哪个子图,以便我可以为每个子图创建新图?
您可以在 O(V+E)
, read here
中找到图表中的所有桥梁
之后,标记桥并使用 DFS 找到连接的组件:
for each node:
if (not visited)
components++
dfs(node)
在dfs遍历中不要通过标记为桥的边。
我正在使用邻接表在 C# 中创建我的图形。
在此图中,#4 和#5 形成一座桥,断开连接时将创建两个子图:
- {1,2,3,4}
- {5,6,7,8}
我的问题分为两部分:
- 如何确定#4 和#5 是否形成桥?
- 如何找出哪些顶点属于哪个子图,以便我可以为每个子图创建新图?
您可以在 O(V+E)
, read here
之后,标记桥并使用 DFS 找到连接的组件:
for each node:
if (not visited)
components++
dfs(node)
在dfs遍历中不要通过标记为桥的边。