问题描述
我对图表有疑问。
在我的 API 中,我需要检查一个包含对象 ID 之间关系的列表在保存到数据库之前是否有一个圆圈。
提供给我的信息如下所示:
[
{10,2},{20,32},{45,90}
]
因此,我需要检查关系的形式和循环与否。
示例:
如果我有[{1,6},{3,1},4},{4,3},{5,{6,5}]
将有 2 个圈子:
- 第一个将是
3
→4
→3
和
- 第二个将是
6
→4
→3
→1
→6
注意事项:
我需要使用的语言是 C#。该程序必须尽可能快,而且我无权访问数据库以在那里创建任何函数。另外,我不需要获得所有可能的圈子。我只需要一个圈子就足够了,以便返回 TRUE
或 FALSE
。
谁能给我一些建议?
解决方法
您在这里提到的问题只是在有向图中找到一个循环。您可以在 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>
中实现它。