Algorithm 检测两个顶点之间路径中的循环

Algorithm 检测两个顶点之间路径中的循环,algorithm,graph,Algorithm,Graph,我感兴趣的是,在有向图G中,两个给定顶点s和T之间的某条路径上是否有一个圈 i、 如果S和T之间至少有一条路径存在循环,且时间复杂度为O(|V |+| e |),则e返回“true”。我只需要一些伪代码的算法 我想用Kosaraju Sharir的算法,问题是即使s和T在同一个强连通分量中,答案也不一定是“真的”,因为循环只从T开始,从s到T的路径很简单 谢谢。什么算周期?如果两者都在同一个强连接组件中,那么答案应该是“真的”,因为从S到T的路径上的某个中间节点C可以回到S,这是一个循环如果S,

我感兴趣的是,在有向图G中,两个给定顶点s和T之间的某条路径上是否有一个圈

i、 如果S和T之间至少有一条路径存在循环,且时间复杂度为
O(|V |+| e |)
,则e返回“true”。我只需要一些伪代码的算法

我想用Kosaraju Sharir的算法,问题是即使s和T在同一个强连通分量中,答案也不一定是“真的”,因为循环只从T开始,从s到T的路径很简单


谢谢。

什么算周期?如果两者都在同一个强连接组件中,那么答案应该是“真的”,因为从S到T的路径上的某个中间节点C可以回到S,这是一个循环如果
S,T
在同一个SCC中,那么就有一个路径
S->T
,和
T->S
(SCC的定义)。然后,让我们看看路径
s->…->T->…->s->…->T
。这条路径包含一个循环。但是,另一种方法是不正确的,请看图
{s,a,b,T},{(s,a),(a,b),(a,T)}
。在
S
T
之间的某个路径中有一个循环:
S->a->b->a->T
,但是SCC是
{S},{a,b},{T}
。需要澄清:您真的想要一个从S到T的路径,该路径包含一个既不包含S也不包含T的循环吗?因为如果没有附加条件,具有强连接组件的示例似乎没有意义。\n什么算作一个循环?它最多应该通过一次任何边吗?如果两者处于同一个强连接状态连接组件答案应为“真”,因为从S到T路径上的某个中间节点C可以返回到S,这是一个循环如果
S,T
在同一个SCC中,则存在路径
S->…->T
,和
T->…->S
(SCC的定义)然后,让我们看看路径
s->…->T->…->s->…->T
。这条路径包含一个循环。但是,另一种方式是不正确的,看看图
{s,a,b,T},{(s,a),(a,b),(b,a),(a,T)}
,{T} 。需要澄清:您真的想要一个从S到T的路径,该路径包含一个既不包含S也不包含T的循环吗?询问是因为如果没有附加条件,具有强连接组件的示例似乎没有意义\