[英]How to find the minimum connectors to connect selected vertices (subset of vertices)
[英]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.