图是循环搜索

问题描述

我对图表有疑问。

在我的 API 中,我需要检查一个包含对象 ID 之间关系的列表在保存到数据库之前是否有一个圆圈。

提供给我的信息如下所示:

[
{10,2},{20,32},{45,90}
]

因此,我需要检查关系的形式和循环与否。

示例:

如果我有
[{1,6},{3,1},4},{4,3},{5,{6,5}]
将有 2 个圈子:

  • 一个将是 343
  • 第二个将是 64316

注意事项:
我需要使用的语言是 C#。该程序必须尽可能快,而且我无权访问数据库以在那里创建任何函数。另外,我不需要获得所有可能的圈子。我只需要一个圈子就足够了,以便返回 TRUEFALSE

谁能给我一些建议?

解决方法

您在这里提到的问题只是在有向图中找到一个循环。您可以在 best algorithm for detecting cycles in a directed graph 上关注此堆栈溢出帖子。我认为@KurtPeek 已经给出了一个很好的答案,包括详细的解释和示例 python 代码。考虑阅读该帖子并在 <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div class="home"> <div v-if="images"> <div v-for="image in images" :key="image.href" class="image-div"> <p>{{image.href}}</p> <!-- Error Check --> {{image}}<!-- This renders the whole data array--> </div> </div> </div> 中实现它。