Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 增量图中的圈检测_Algorithm_Graph - Fatal编程技术网

Algorithm 增量图中的圈检测

Algorithm 增量图中的圈检测,algorithm,graph,Algorithm,Graph,假设我有一个初始为空的图,它将以递增的方式添加边(一个接一个),那么检测和识别出现循环的最佳方法是什么 每次添加新边时,是否必须检查整个图形中的循环?这种方法没有利用已经进行的计算。有没有我还没有找到的算法 谢谢。您可以使用此处的算法首先检查新边的两端是否已连接 编辑: 如注释中所述,此解决方案仅适用于无向图。对于有向图,下面的链接可能会有所帮助。我的直觉告诉我,你可以以某种方式重新排序拓扑顺序。这个答案假设一个无向图,我认为这就是OP所寻找的。但值得澄清。另外,最好添加一个关于联合查找/不相交

假设我有一个初始为空的图,它将以递增的方式添加边(一个接一个),那么检测和识别出现循环的最佳方法是什么

每次添加新边时,是否必须检查整个图形中的循环?这种方法没有利用已经进行的计算。有没有我还没有找到的算法

谢谢。

您可以使用此处的算法首先检查新边的两端是否已连接

编辑:

如注释中所述,此解决方案仅适用于无向图。对于有向图,下面的链接可能会有所帮助。

我的直觉告诉我,你可以以某种方式重新排序拓扑顺序。这个答案假设一个无向图,我认为这就是OP所寻找的。但值得澄清。另外,最好添加一个关于联合查找/不相交集联合数据结构的引用。我忘了提到它确实是一个无向图。我已经实现了联合查找算法,我可以检测两个顶点是否连接。如何找到新边可能创建的所有循环?@zync,如果端点(u,v)已连接,则新边将只添加一条从u到v的路径。因此,从u到v的路径k的数量应增加1。然后可以计算在该过程中创建的循环数。C(k,2)。