在因特网上有许多资源用于Tarjan算法,它可以找到关于单个入口节点的支配树。但是,我只想找到树的单个节点的支配者。
有没有比使用Tarjan的O(m log n)时间算法更简单的方法来计算支配树,然后我们遍历树来查找特定节点的支配者?对于单节点情况,我想比O(m log n)时间更快地完成此操作。
答案 0 :(得分:1)
虽然我不知道任何现有的算法可以做到这一点,但我可以想到一个。
让入口节点为 root , t arget节点(找到其支配者)为 t 。创建一个以 root 为根的DFS树。
现在请注意, t 的支配者集合是DFS树上 t 的祖先的子集,只有前向边和交叉边可以&#34 ;避免"从 root 到 t 的路径上的那些节点。所以:
算法( O(n + m))将是:
不确定这是否更容易。