当前位置: 首页 > 面试题库 >

使用SQL在有向图中查找循环

夹谷山
2023-03-14
问题内容

在查找循环方面已经存在一些问题,但是我没有找到SQL的解决方案(首选MSSQL)。

这些表将是Node(NodeID INT)和Edge(EdgeID INT,NodeID1 INT,NodeID2 INT)

在有向图中找到周期的性能很好的解决方案是什么?


问题答案:

该解决方案非常简单明了,但时间更长:

首先,将生成通过该图的所有路径的列表,以使任何路径都不会包含同一条边。

从此信息中,我们获取在同一节点中开始和结束的路径的列表。

从“最终”边缘列表中,我们基于前两个步骤的计算来重建带有循环的所有路径。

我在TSQL的博客上发布了完整的解决方案。



 类似资料:
  • 因此,我为DFS编写了以下代码: 现在,我读到,在一个无向图中,如果当DFS时,它再次返回到同一个顶点,有一个循环。所以我做的是这样,, 但是,我的检查周期函数返回true,即使他们没有周期。那是为什么呢?我的功能有问题吗?没有执行问题,否则我早就调试了,但他们似乎在我的逻辑中有问题。

  • 嗨,我在纠结这个问题。其内容如下: 首先,我们如何知道图中有多少个循环,以及如何检查这些循环? 还有,为什么是evlogv?根据我的理解,你应该遍历所有的顶点,因此使它成为vlogv。 这是我个人的学习,所以如果任何人有一个例子,他们可以使用,它将大大帮助我!我并不是真的在寻找伪代码--只是一个通用算法来理解如何使用从一个节点到所有节点的最短路径来帮助我们解决这个问题。谢谢你!

  • 我试图找到在Kotlin中对枚举进行“反向查找”的最佳方法。我从Effective Java中得到的一个收获是,在枚举中引入了一个静态映射来处理反向查找。通过一个简单的枚举将其移植到Kotlin上,我会得到如下所示的代码: 我的问题是,这是最好的方法,还是有更好的方法?如果我有几个遵循类似模式的枚举怎么办?在Kotlin中是否有一种方法可以使此代码在枚举之间更加可重用?

  • 在OSMnx中,街道的定向是为了保持单向性,因此,当我尝试使用Networkx查找最短路径时,我得到NetworkXNoPath:No path to(osmid)。如何解决此问题?我需要在具有单向街道的网络中找到最短路径。 见下面的代码:

  • 我在这里读到一篇关于在有向图中求圈的讨论。现在,OP声称我们需要验证两件事: 从到有一个后沿 在递归堆栈中 为什么我们需要第二次测试?你能举个例子来说明它的必要性吗?

  • 我们可以用这里所述的算法求有向图中的圈数。我需要理解算法。 (1)最后那句话到底有什么用处?对algo的工作原理进行简短的描述会很有帮助。由于算法基本上是统计从一个节点返回到同一节点的周期数,所以我们可以使用另一个数组,称之为v,并做以下技巧: (2)我不能实现我刚才写的算法。这是主要的问题,但我认为我需要理解上面的(1)来理解打印所有循环的代码。 我了解到互联网上有算法,我正在尝试使用这个算法。