Tarjan算法求点双联通分量的思路
时间: 2024-05-22 09:08:56 浏览: 102
Tarjan算法求强连通分量
Tarjan算法是一种求解无向图点双联通分量的经典算法。它的思路是利用DFS(深度优先搜索)对图进行遍历,同时维护一个栈,记录遍历过程中经过的节点,并判断是否存在新的点双联通分量。具体步骤如下:
1. 初始化DFS序列和low数组。DFS序列是指在遍历时每个节点被访问的顺序,low数组则记录每个节点能够到达的最小DFS序号。
2. 从任意未被访问的节点开始DFS遍历。在遍历过程中,对于每个节点v,记录其DFS序号并将其入栈。
3. 如果节点v的某个邻接节点w未被访问,则继续以w为起点进行DFS遍历,并将w加入栈中。
4. 在回溯过程中,更新节点v的low值,即v能够到达的最小DFS序号。同时,如果发现v的low值大于等于v的父节点u的DFS序号,则说明v和u之间存在一个点双联通分量。将栈中从v到栈顶的所有节点取出,组成一个新的点双联通分量。
5. 当遍历完所有节点后,得到图中所有的点双联通分量。
阅读全文