我正在寻找一种能够找到包含给定顶点的非常基本(即最短)周期的算法。
换句话说,如果顶点v1参与两个循环,例如一个用v1,v2,v3,另一个用v1,v2,v4,v5,v6。我希望算法给我v1,v2,v3循环作为输出。
有谁知道哪种算法会这样做?
此外,这个算法的复杂性可能是什么。
提前致谢。
答案 0 :(得分:3)
从给定的顶点v0开始bfs。一旦bfs考虑与v0相邻的顶点v1,并且v0不是bfs树中的v1的父节点,则停止。从v0到v1加上(v1,v0)边缘的找到路径是您的最短周期。由于bfs,复杂性为O(n + m)。