图综合练习--拓扑排序_图的概念那么多,这几个易漏点你都会吗?(内附知识点讲解汇总)...

考点1:图的遍历

Q1

下列关于广度优先算法的说法中,正确的是( )。

I. 当各边的权值相等时,广度优先算法可以解决单源最短路径问题

II. 当各边的权值不等时,广度优先算法可用来解决单源最短路径问题

II.广度优先遍历算法类似于树中的后序遍历算法

IV. 实现图的广度优先算法时,使用的数据结构是队列

A、I、IV

B、II、II、IV

C、II、 IV

D、 I、II、IV

(点击选项查看答案)

A1

广度优先搜索从源点开始,一层一层地向外层扩展遍历图的顶点,故无法考虑到边权值,它只适合用于求边权值相等的图的单源最短路径。II 错误。 广度优先搜索需要用到队列,深度优先搜索需要用到栈,IV 正确。 【知识点速记】 (1)广度优先遍历用于: ①查找最短路径  ②求任意两顶点间的最短路径 (2)广度优先遍历相当于树的二叉树的层次遍历,故实现它需要用到队列。 深度优先遍历的思想就是从初始顶点开始,一直访问其相邻的结点,要利用一个栈记住上一个访问过的结点,故实现它需要用到栈。

Q2

对于一个使用邻接表存储的有向图G,可以利用深度优先遍历方法,对该图中结点进行拓扑排序。其基本思想是:在遍历过程中,每访问一个顶点,就将其邻接到的顶点的入度减一,并对其未访问的、入度为0的邻接到的顶点进行递归。请写出在遍历图的同时进行拓扑排序的算法。

A2

在进行拓扑排序之前必须先判断该图是否存在环,若存在环则不能进行拓扑排序。若从有向图某个顶点v出发遍历,在dfs(v)结束之前,出现从顶点u到顶点v的回边,图中必存在环。这里设定visited访问数组和finished数组为全局变量,若finished[i]=1,表示顶点i的邻接点已搜索完毕。由于dfs产生的是逆拓扑排序,故设一类型是指向邻接表的边结点的全局指针变量final,在dfs函数退出时,把顶点v插入到final所指的链表中,链表中的结点就是一个正常的拓扑序列。
 int visited[]=0; finished[]=0; flag=1;   //flag测试拓扑排序是否成功    ArcNode  *final=null;    //final是指向顶点链表的指针,初始化为0    void  dfs(AdjList g,vertype v)       //以顶点v开始深度优先遍历有向图g,顶点信息就是顶点编号.{ArcNode *t;  //指向边结点的临时变量       printf("%d",v); visited[v]=1; p=g[v].firstarc;       while(p!=null)         {j=p->adjvex;          if (visited[j]==1 && finished[j]==0) flag=0 //dfs结束前出现回边            else if(visited[j]==0) {dfs(g,j); finished[j]=1;}           p=p->next;         }t=(ArcNode *)malloc(sizeof(ArcNode));//申请边结点        t->adjvex=v; t->next=final; final=t;    //将该顶点插入链表      }    int dfs-Topsort(Adjlist g)      //对以邻接表为存储结构的有向图进行拓扑排序,拓扑排序成功返回1,否则返回0      {i=1;       while (flag && i <=n)         if (visited[i]==0) {dfs(g,i); finished[i]=1; }       return(flag);//flag为1表示排序成功,否则表示失败  }
【知识点速记】深度优先遍历应用: (1)查找图中的路径 (2)寻找连通分量 (3)判断是否有环

考点2:图的应用

Q1

下列关于图的说法中,正确的是( )。

I.有向图中顶点V的度等于其邻接矩阵中第V行中1的个数

II.无向图的邻接矩阵一定是对称矩阵,有向图的邻接矩阵一定是非对称矩阵

I.在图G的最小生成树G,中,某条边的权值可能会超过未选边的权值

IV.若有向无环图的拓扑序列唯一,则可以唯一确定该图

A、I、II和III

B、II和IV

C、III

D、IV

(点击选项查看答案)

A1

I中,有向图邻接矩阵的第V行中1的个数是顶点V的出度,有向图中顶点的度为入度和出度之和,I错误。 II中,无向图的邻接矩阵一定是对称矩阵,但当有向图中任意两个顶点之间有边相连,且是两条方向相反的有向边时,有向图的邻接矩阵也是一个对称矩阵,II 错。 III中,最小生成树中的n - 1条边并不能保证是图中权值最小的n-1条边,因为权值最小的n- 1条边并不一定能使图连通。 IV中,有向无环图的拓扑序列唯一并不能唯一确定该图, 34c1359c336ea0cd7a295a9a15bb3487.png 该图的拓扑序列为1->2->3->4 f39a4f9c61b2724de0d608f7b2a2ff56.png 该图的拓扑序列也为1->2->3->4, 故IV错。 【知识点速记】 (1)有向图中顶点的度为入度和出度之和 (2)最小生成树中的n - 1条边并不能保证是图中权值最小的n-1条边 (3)有向无环图的拓扑序列唯一并不能唯一确定该图

Q2

[2017统考真题]使用Prim算法求带权连通图的最小(代价)生成树(MST).请回答下列问题:  1) 对下列图G,从顶点A开始求G的MST,依次给出按算法选出的边。  2) 图G的MST是唯一的吗?   3) 对任意的带权连通图,满足什么条件时,其MST是唯一的? ae76e9fc9d4665ddcb905be88d97e397.png

A2

01

Prim算法从一个任意的顶点开始,一直到覆盖图中的所有顶点为止。算法的每一步 在连接树集合S的顶点和其他顶点的边中,选择一条权值最小的边加入集合S。当算法终止时,S就是最小生成树。

① S中顶点为A,可供选择的边分别为(A, D),(A, B),(A, E), 其中(A, D)边上的权值最小,选择(A, D)加入S。

② S中顶点为A, D,可供选择的边分别为(A, B),(A, E),(D, E),(C,D),其中((D, E)边上的权值最小,选择(D, E),加入S。

③ S中顶点为A,D, E,可供选择的边分别为(A, B),(C, D),(C,E),其中(C, E)边上的权值最小,选择(C, E)加入S。

④ S中顶点为A,D,E, C,可供选择的边分别为(A, B),(B, C),其中(B, C)边上的权值最小选择(B, C)加入S。

⑤ 当图中的所有顶点都被遍历完后,S就是最小生成树。

故依次选出的边为(A, D),(D, E),(C, E), (B, C)

02

图G的MST是唯一的。第1)题的最小生成树包括了图中权值最小的4条边,其他边都比这4条边大,所以此图的MST唯一。但不是所有图的MST都是唯一的。

03

由第1、2问可知,当带权连通图的任意一个环中所包含的边的权值均不相同时,其MST是唯一的。

Q3

[2012统考真题]若用邻接矩阵存储有向图,矩阵中主对角线以下的元素均为零,则关于该图拓扑序列的结论是( )。

A、存在,且唯一

B、存在,且不唯一

C、存在,可能不唯一

D、无法确定是否存在

(点击选项查看答案)

A3

题中指明矩阵中主对角线以下的元素均为零,则说明图中存在从顶点i到顶点j的边,而不存在从顶点j到顶点i的边,这说明图中没有环,故该图的拓扑序列一定存在。 我们来看图G的邻接矩阵A: dd667591075c988df3b3d41bd6ae4447.png 该图的拓扑序列就不唯一。 【知识点速记】 图G的邻接矩阵对角线以上的元素全为1,对角线以下的元素全为0,则该图的拓扑序列唯一。

Q4

下面关于求关键路径的说法不正确的是(    )。

A、求关键路径是以拓扑排序为基础的

B、一个事件的最早开始时间同以该事件为尾的弧的活动最早开始时间相同

C、一个事件的最迟开始时间为以该事件为尾的弧的活动最迟开始时间与该活动的持续时间的差

D、关键活动一定位于关键路径上

(点击选项查看答案)

A4

一个事件的最迟开始时间是以该事件为头的弧的活动的最迟开始时间与该活动持续时间的差,故C错误。 【知识点速记】 1)顶点表示事件,弧表示活动 。 2)如果顶点A->B有弧,如果让弧表示为L,则A为L的弧尾,B为L的弧头,即有箭头的那一端叫头。 一个事件的最早开始时间与以该事件为尾的弧的活动最早开始时间相同。 一个事件的最迟开始时间为以该事件为头的弧的活动最迟开始时间与该活动的持续时间的差。 3)关键活动一定位于关键路径上。

往期数据结构推文集合

193b68fa6f3ea30d0b0abc243f1db527.png

dc7fe9e108c2952fd0eb345d07e417c8.png

2278d5e77f6c11b496dc35e5004a50f8.png

686bda8fb56a9fe7f44f5efd483c23c4.png

cde2d7a3403997602b09c27555cf4c4c.png

954290fa8c4df45ef34335dc7039460c.gif

 抓码计算机考研qq群 

总群:625590924

广大:1143982604

暨大:1071137230

广工:938111325

华工:428389734

深大:729770764

浙大:978938582

厦大:1125268501

中大:921801084

南航:281118241

华农:515681663

重邮:736197896

北邮:1126650806

南邮:1109929146

广外:976231252

东北大学:1128523098

华南师大:428389734

南昌大学:923249141

5745beaf74c326a0d409f8367c5a2d82.png

给个“在看”支持一下我

34ba1b8612d310c7e4b6a2d49d028bde.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值