您的位置:首页 > 其它

基本图算法之图的表示——习题思路(2)

2015-12-24 11:43 344 查看
22.1-6 当采用邻接矩阵表示时,大多数图算法需要的时间都是Ω (V2),但也有一些例外,证明在给定了一个有向图G的邻接矩阵后,可以在O(V)时间内,确定G中是否包含一个通用的汇,即入度为|V|-1,出度为0的顶点。

对于G[i][j]=0,说明节点i到节点j没有边,节点i可能是通用汇点,继续判断i与其他顶点是否有边,右走j+1。G[i][j]=1,则i不可能是通用汇点,判断下一个节点,下走i+1。知道最后一行或最后一列停止,检查该节点是不是通用汇点。这样时间就是O(V),因为只有V次循环。

示意性伪码

universalsink(G)
i=0
j=0
while(i<|V| and j<|v|)
if G[i][j]==0
j=j+1
else if G[i][j]==1
i=i+1
if i==|v|
return false
if j==|v|
check(G,i)

check(G,k)
for i=0 to|v|
if  G[k][i]!=0
return false
for j=0 to|v|
if j!=k and G[j][k]!=1
return false
return true
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: