繁体   English   中英

如何在图形中找到连接器?

[英]How to find connectors in a graph?

我在这里有点挣扎,因为老实说我的大脑被炸了,我不知道该怎么做。

我的任务是在无向、未加权的图中找到连接器。

该任务声称:在无向图中,如果至少有两个其他顶点 x 和 w,x 和 w 之间的每条路径都经过 v ,则顶点 v 是连接器

不要误会我的意思,我明白这意味着什么,但我正在无可救药地这样做。 当我浏览这张图时(建议我使用DFS ),我到底想做什么?

我只是想走在正确的道路上完成这个。

任何帮助深表感谢!

您所描述的连接器是切割顶点(或关节点): https : //en.wikipedia.org/wiki/Biconnected_component

为了找到无向图中的所有关节点,我们可以使用修改后的 DFS 算法。 总体思路是在图上运行 DFS,同时用 2 个变量标记每个节点 n:整数 LOW(n) 和整数 dfs(n)。 如果节点 v 的邻居 w 具有 LOW(w) >= dfs(v),则节点 v 是一个关节点。 伪代码描述如下:

Execute DFS(v)
When a vertex v is first discovered, LOW(v) = dfs(v) 
For each of v’s neighbors w
    if w is undiscovered 
        execute DFS(w)
        LOW(v) = min of {LOW(v), LOW(w)}
        if LOW(w) ≥ dfs(v), v is connector!!!!!Store it.
    else if w is v’s parent, do nothing
    else (w is not v’s parent but has already been discovered)
        LOW(v) = min of {LOW(v), dfs(w)}

该算法的运行时间与基本的 DFS 算法相同:O(V+E),其中 V 是图中的顶点数,E 是图中的边数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM