zoukankan      html  css  js  c++  java
  • How to find a cycle of length 4?

    此处说的“环”是一个简单环。

    假设图是用邻接矩阵实现,邻接矩阵记为 $A$ ,节点个数为 $n$,边的个数为 $m$。

    如果存在 $i,j$,且 $1 \le i<j \le n$ ,$N(i) \cap N(j) \ge 2$ ,则说明存在一个长度为 4 的环。

    算法如下:

     1 for(i=1 to n)
     2     for(int j=i+1 to n)
     3         count = 0;
     4         for(int k=1 to n)
     5             if(A[j][k]==A[i][k]==1)
     6                 count++;
     7         if(count>=2)
     8             return "exist a cycle of length 4";
     9 return "not exists";

    算法复杂度:$O(n^3)$

    算法正确性证明:

    命题:如果存在 $i,j$,且 $1 \le i<j \le n$ ,$N(i) \cap N(j) \ge 2$ ,则存在一个长度为 4 的环。

    证明. 

    从上图可以看出, $i \rightarrow b \rightarrow j \rightarrow a \rightarrow i$ 是一个长度为 4 的环。

    命题:如果存在一个长度为 4 的环,则存在 $i,j$,且 $1 \le i<j \le n$ ,$N(i) \cap N(j) \ge 2$。

    证明.

    已知图中存在一个长度为 4 的环,如 $a \rightarrow b \rightarrow d \rightarrow c \rightarrow a$,则 $N(a) \cap N(d)=\{c,b\}$,因此得证。

    作者:xiazdong
    出处:http://blog.xiazdong.info
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    Yuan先生的博客网址
    Django的认证系统 auth模块
    Django 中间件使用
    Django Form表单验证
    Django ORM介绍 和字段及字段参数
    ajax 使用
    Java报表之JFreeChart
    POI
    MyBatis
    问题解决方法
  • 原文地址:https://www.cnblogs.com/xiazdong/p/3089737.html
Copyright © 2011-2022 走看看