我有一个节点列表形式的数据结构
[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中的一系列连接来完成此操作吗?
答案 0 :(得分:0)
我假设你正在使用SQL服务器。在这种情况下,https://dba.stackexchange.com/questions/45158/how-to-write-a-query-which-finds-all-circular-references-when-a-table-references显示了如何编写递归查询以在数据库中查找循环引用。
或者,您必须从数据库中提取所有数据才能使用标准图算法。