在节点和边列表中查找循环引用

时间:2016-04-01 16:53:47

标签: c# sql angularjs algorithm

我有一个节点列表形式的数据结构

 [ID: 1, Name: "Node 1"],
 [ID: 2, Name: "Node 2"],
 [ID: 3, Name: "Node 3"],
 [ID: 4, Name: "Node 4"]

形式的边
 [StartNode: 1, EndNode: 2],
 [StartNode: 2, EndNode: 3]

等等。

此数据存储在SQL中,并使用C#和Angular进行处理。节点可以多重连接,但破坏接口的一件事是循环引用。我不能拥有节点1 - >节点2 - >节点3 - >节点1.

不知何故,循环引用已经渗透到我们的数据库中,但我无法弄清楚它在哪里。它可能是一个小小的'圆圈,它们不应该连接在一起的三个节点,但我不能确定。

如何编写某种递归算法来找出循环引用的位置?我可以通过SQL中的一系列连接来完成此操作吗?

1 个答案:

答案 0 :(得分:0)

我假设你正在使用SQL服务器。在这种情况下,https://dba.stackexchange.com/questions/45158/how-to-write-a-query-which-finds-all-circular-references-when-a-table-references显示了如何编写递归查询以在数据库中查找循环引用。

或者,您必须从数据库中提取所有数据才能使用标准图算法。