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不会,还望牛人指点

  • 相关阅读:
    noi 2011 noi嘉年华 动态规划
    最小乘积生成树
    noi 2009 二叉查找树 动态规划
    noi 2010 超级钢琴 划分树
    noi 2011 阿狸的打字机 AC自动机
    noi 2009 变换序列 贪心
    poj 3659 Cell Phone Network 动态规划
    noi 2010 航空管制 贪心
    IDEA14下配置SVN
    在SpringMVC框架下建立Web项目时web.xml到底该写些什么呢?
  • 原文地址:https://www.cnblogs.com/inpeace7/p/2452546.html
Copyright © 2011-2022 走看看