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