graph-theory - 寻找图中的循环

标签 graph-theory graph-algorithm cycle

我们给出一个简单的无向图G=(V,E)V的子集S

我们被告知,S 的所有顶点都在 G 中形成一个简单的循环(长度 |S|)。

现在,我们要找到精确的循环(或其任何循环移位)(S 的所有顶点的序列)。我们怎样才能找到它?有什么办法吗?

我尝试了DFS/BFS,但它似乎工作不正常。

例如:如果 G 中有 4 个顶点 A、B、C、D,边为 (A,C)、(A,D)、(B,C) ,(B,D)。令给定 S= {A, B, C, D}

那么我们的答案应该是ADBCA(或BCADB或其任何循环移位)。

最佳答案

首先,你需要迭代S中的所有节点。如果有任何节点的顶点少于两个,那么你将找不到这样的循环。然后,您需要生成包含所有节点的回溯路径,检查每个节点的最后一个节点和第一个节点之间是否存在顶点。如果你找到了这样一条路径,那么你就找到了这样一个循环。如果不是,则您使用的节点集中不存在这样的循环。

关于graph-theory - 寻找图中的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35687499/

相关文章:

algorithm - 以最少的步数销毁图形

excel - Excel中通过VBA获取第一层先前单元格的地址

algorithm - 区域分配问题

algorithm - 拓扑排序,但具有某种分组

ruby - 如何打破Ruby中的外循环?

c++ - 如何找到覆盖有向循环图中所有节点的最短路径?

algorithm - 有没有一种有效的方法可以在函数图中找到最短路径?

algorithm - 查找距离 d 处的顶点

python - 使用类在 python 中创建图形数据结构

c++ - 使用邻接矩阵在 C++ 上的有向图中查找所有循环的算法