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


  • 22.1-1给定一个有向图的邻接表表示,计算该图中每个顶点的出度需要多少时间?计算每个顶点的入度需要多少时间?

    入度:进入该顶点的边的数目。出度:从该顶点出去的边的数目。
    计算出度和入度的时间都为O(v+e),计算出度和入度的过程相当于将邻接链表的顶点和边遍历一遍。


  • 22.1-3有向图G=(V,E)的转置是图 GT =(V, ET ),其中 ET ={(v,u) V × V:{u,v} E},因此 GT 就是将G中所有边反向后形成图。写出根据G计算出 GT 的有效算法(针对邻接表和邻接矩阵两种表示形式分别写出),并分析所给出算法的运行时间。

    邻接链表:对于G的每个节点i,遍历其adj,将i添加到adj中遇到的每个节点的 GT 的adj中。这样就可以求出G的转置。时间就是遍历邻接链表的时间O(v+e)
    邻接矩阵:就是求G的转置矩阵。时间为O( V2 )


  • 22.1-4 给定一个多重图G=(V,E)的邻接表表示,给出一个具有O(V+E)时间的算法,来计算其“等价”的无向图G’=(V,E’)的邻接表表示,其中E’包含E中所有的边,且将两个顶点之间的所有多重边用一条边代表,并去掉E中所有的环。

    遍历邻接链表,对于G中每个节点i,将其adj中未出现过的邻居,且不是i自己的节点加入G’中i的adj中。该算法时间为O(V+E)


  • 22.1-5有向图G=(V,E)的平方是图 G2 =(V, E2 ),该图满足下列条件:(u,w) E2 当且仅当对v V,有(u,v) E,且(v,w) E。亦即,如果图G中顶点u,w之间存在着一条恰好包含两条边的路径时,则 G2 必包含边(u,w)。针对图G的邻接表和邻接矩阵两种表示法,分别写出根据G产生 G2 的有效算法,并分析所给算法的运行时间。

示意性伪码
邻接链表:

G2.V=G.V
for each u in G.V
     for each v in G.Adj[u]
        for each w in G.Adj[v]
            G2.E=G2.E+{(u,w)}

邻接矩阵:

for i =1 to |V|
   for j= 1 to |V|
      G2[i][j]=0
      for k=1 to |V|
          if G[i][k]==1&&G[k][j]==1
              G2[i][j]=1
              break

显然,两种时间复杂度都为O( V3

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lucky_yang_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值