有向图的平方

习题

在这里插入图片描述

算法

for each w from 0 to |V| - 1 //初始化标志数组
	flag[w] = false 

for each vertex u in V[G] //对于图G的每个顶点u
	for each v in adj[u] //顶点u的每条出边<u, v>
		for each w in adj[v] //顶点v的每条出边<v, w>
			if flag[w] == false
				flag[w] = true //设置标志
				add edge(u, w) to E2 //添加边<u, w>到图G的平方
	
	//清除标志的时间复杂度与边数相关
	for each v in adj[u]
		for each w in adj[v]
			flag[w] = false //清除标志			
				

总结

计算图G的k次幂可考虑反复平方法


版权声明:本文为m0_37722811原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。