Algorithm 在图中查找闭合路径的伪代码

Algorithm 在图中查找闭合路径的伪代码,algorithm,graph-theory,pseudocode,Algorithm,Graph Theory,Pseudocode,我有一个图的邻接矩阵,它通过在相应的邻接矩阵[I,j]=1中有一个1来跟踪节点之间的边; 通过这个邻接矩阵,我希望找出图中存在的所有长度为4的闭合路径。谁能给我提供一个伪代码。感谢您对DFS找到起始节点的每个节点和记录节点应用深度受限的深度优先搜索。 有关搜索,请参见此处的伪代码:。您只需要添加以下内容 if(node' == node && node'.depth==4) memorize(node) 这听起来像是家庭作业,所以我不会把所有的东西都泄露出去。但这里有一个提示:

我有一个图的邻接矩阵,它通过在相应的邻接矩阵[I,j]=1中有一个1来跟踪节点之间的边;
通过这个邻接矩阵,我希望找出图中存在的所有长度为4的闭合路径。谁能给我提供一个伪代码。感谢您

对DFS找到起始节点的每个节点和记录节点应用深度受限的深度优先搜索。 有关搜索,请参见此处的伪代码:。您只需要添加以下内容

if(node' == node && node'.depth==4) memorize(node)

这听起来像是家庭作业,所以我不会把所有的东西都泄露出去。但这里有一个提示:既然你对寻找长度为4的循环感兴趣,就取邻接矩阵的四次方,沿着对角线扫描。如果任何条目M[i,i]不为零,则存在一个包含顶点i的循环。

也许这不是计算它的最佳方法,它位于^4上,但一种非常简单的方法是扫描所有顶点

a, b, c, d such that b > a, c > b, d > c
您可以检查然后检查以下每个周期:

1. ([a,b] && [b,c] && [c,d] && [d,a]) 2. ([a,b] && [b,d] && [d,c] && [c,a]) 3. ([a,d] && [d,b] && [b,c] && [c,a]) 1: 2: 3: A---B A---B A B | | \ / |\ /| | | X | X | | | / \ |/ \| D---C D---C C D 你基本上是在检查每个有序的顶点集合a,b,c,d的三种方式,它们可以形成一个循环

所以伪代码应该是:

for a = 0 to <lastVertex>
 for b = a + 1 to <lastVertex>
  for c = b + 1 to <lastVertex>
   for d = c + 1 to <lastVertex>

    if(IsCycle(a,b,c,d)) AddToList([a,b,c,d])
    if(IsCycle(a,b,d,c)) AddToList([a,b,d,c])
    if(IsCycle(a,c,b,d)) AddToList([a,c,b,d])

   next d
  next c
 next b    
next a

它怎么可能是C、java和伪代码?