您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

查找图是否有周期

查找图是否有周期

首先,我假设这是一个有向图。如果无向图包含单个边,则其周期很短。

递归CTE唯一棘手的部分是在遇到周期时停止-因此您不会得到无限递归。

试试这个:

with cte as (
      select e.object_a, e.object_b, iscycle = 0
      from edges e
      union all
      select cte.object_a, e.object_b,
             (case when cte.object_a = e.object_b then 1 else 0 end) as iscycle
      from cte join
           edges e
           on cte.object_b = e.object_a
      where iscycle = 0
     )
select max(iscycle)
from cte;
其他 2022/1/1 18:53:24 有445人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶