您的位置:首页 > 其它

How to find a cycle of length 4?

2013-05-20 22:28 183 查看
此处说的“环”是一个简单环。

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

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

算法如下:

for(i=1 to n)
for(int j=i+1 to n)
count = 0;
for(int k=1 to n)
if(A[j][k]==A[i][k]==1)
count++;
if(count>=2)
return "exist a cycle of length 4";
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\}$,因此得证。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐