如何设计伪代码来检测非有向图是否具有运行时间为O的C4循环(|V³|)

时间:2017-05-15 22:20:25

标签: graph graph-theory

这种情况在运行时O(|V³|)特定并且找到C4循环。有人能帮我吗?谢谢!

1 个答案:

答案 0 :(得分:0)

  1. 查找all cycles in the graph
  2. 每个周期:
    1. 生成一个边缘不同的深度(或广度)搜索树的森林,这些搜索树根据周期中的顶点生成,并在到达周期的任何顶点时终止。
    2. 连接循环点的路径由DFS树的根和叶给出。
    3. 如果存在两个(顶点和边缘不同)路径,则u 1 - > v 1 和u 2 - > v 2 ,使得顶点有序u 1 < u 2 < v 1 <循环周围的v 2 (在任一方向上),然后图表有一个完整的K 4 次要。
  3. 对于v个顶点,e个边和c个基本周期,Johnson找到基本周期的算法是<beans> <mongo:mongo host="localhost" port="27017"> <mongo:options connections-per-host="8" threads-allowed-to-block-for-connection-multiplier="4" connect-timeout="1000" max-wait-time="1500}" auto-connect-retry="true" socket-keep-alive="true" socket-timeout="1500" slave-ok="true" write-number="1" write-timeout="0" write-fsync="true"/> </mongo:mongo/> </beans>

    DFS(或BFS)为O((v+e)(c+1)),因此每个周期重复一次也是O(v+e)

    然后,您需要对路径进行排序,并找到具有交替端点(针对每个循环)的不同路径,这可能是您所需的复杂性。