zoukankan      html  css  js  c++  java
  • 算法导论图论图的表示 课后题答案

    图的表示课后题答案

    1.课后题22.1-1

    给一个图的邻接表,计算出每个顶点的出度需要多长时间?计算出每个顶点的入度需要多长时间?

    出度:O(V+E)

    入度:O(VE)

    2.课后题22-1-3

    求图G=(V,E)的转置图G=(V,ET),也就是将图G中所有边反向

    (1)矩阵O(V2)

    for (i=1; i<=V; i++)

         for(j=i+1; j<=V; j++)

    if(A[i][j] && !A[j][i])

    {

    A[i][j]=0;

    A[j][i]=1;

    }

    (2)邻接表O(VE)

        Allocate V list pointers for GT (Adj'[])

    for(i=1; i<=V, i++)

        for every vertex v in Adj[i]

        add vertex i to Adj'[v]

    3.课后题22-1-4

    给一个多重图的邻接表表示,给出一个O(V+E),的时间算法,来计算其等价无向图G`=(V,E`)的邻接表表示,多重边用一条边表示,去掉自环

    (1)创建一个新的邻接表

    (2)如果一个点Vi出现在Vj的链表中,把Vj拷贝到新的邻接表Vi中

    (3)对所有的点重复(2)

    (4)创建一个新的邻接表,和标记边数组

    (5)对每个链表首节点进行检查,是否有自环,是否标记过这个边

    (6)有自环消除

    (7)对没有标记过的边进行标记,并且把点复制到新的邻接表中

    4.课后题22-1-5

    求一个图边的平方

    矩阵O(V3)

    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))

    Procedure G-Square (V(G),E(G))

        V(G2)ßV(G)

        For each u 属于 V(G)

            For each v 属于 adj[u]

                For each w 属于 adj[v]

                    E[G2]ß{(u,w)} 并 E[G2]

    5.课后题22.1-6

    给一个图的邻接矩阵,在O(V)的时间内,求一个图中通用的汇,即入度|V|-1,出度0

        

    设第u个点为汇,即第u行全为0,第u列除第u行为0外其余全为1

    如果第A[u][v]=1,u不可能是汇点;第A[u][v]=0;v不可能是汇点

    算法:

    Is-sink(A,k)

    {

        Let A be |V|*|V|

        For jß1 to |V|

            Do if akj=1 //检查第k行从1到n列是否有1,也就是是否有出度

                Then return false

        For iß1 to |V| //检查第k列从1到n行(非k行)是否有0,也就是是否无入度

            Do if akj=0 and i!=k

                Then return false

    Return true

    }

     

    UNIVERSAL-SINK(A)

        Let A be |A|*|A|

        i=j=1;

        while i<=|V| && j<=|V|

            do if aij=1

                then ißi+1

                else jßj+1

        sß0

        if i>|V|

            then return "there is no universal sink"

        else if is-sink(A,i)==false

            then return "there is no universal sink"

        else then return i "is universal sink"

     

    6. 课后习题22.1-7和22.1-8不会,还望牛人指点

  • 相关阅读:
    软件开发各列阶段需要达到的目标和生成的成果
    SQL Server 2005 Express附加数据库为“只读”的解决方法
    System.Web.HttpException: Request timed out.
    [收藏]javascript keycode大全
    MS SQL Server中的CONVERT日期格式化大全
    转贴 对于大型公司项目平台选择j2ee的几层认识(一)
    项目经理:做好项目开始阶段的九条经验(1) 项目 技术应用
    .Net Core 实现账户充值,还款,用户登录(WebApi的安全)
    JS如何通过月份,计算月份相差几个月
    .Net core Api后台获取数据,异步方法中,数据需采用Linq分页
  • 原文地址:https://www.cnblogs.com/inpeace7/p/2452546.html
Copyright © 2011-2022 走看看