考点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](https://img-blog.csdnimg.cn/img_convert/34c1359c336ea0cd7a295a9a15bb3487.png)
![f39a4f9c61b2724de0d608f7b2a2ff56.png](https://img-blog.csdnimg.cn/img_convert/f39a4f9c61b2724de0d608f7b2a2ff56.png)
Q2
[2017统考真题]使用Prim算法求带权连通图的最小(代价)生成树(MST).请回答下列问题: 1) 对下列图G,从顶点A开始求G的MST,依次给出按算法选出的边。 2) 图G的MST是唯一的吗? 3) 对任意的带权连通图,满足什么条件时,其MST是唯一的?![ae76e9fc9d4665ddcb905be88d97e397.png](https://img-blog.csdnimg.cn/img_convert/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](https://img-blog.csdnimg.cn/img_convert/dd667591075c988df3b3d41bd6ae4447.png)
Q4
下面关于求关键路径的说法不正确的是( )。
A、求关键路径是以拓扑排序为基础的
B、一个事件的最早开始时间同以该事件为尾的弧的活动最早开始时间相同
C、一个事件的最迟开始时间为以该事件为尾的弧的活动最迟开始时间与该活动的持续时间的差
D、关键活动一定位于关键路径上
(点击选项查看答案)A4
一个事件的最迟开始时间是以该事件为头的弧的活动的最迟开始时间与该活动持续时间的差,故C错误。 【知识点速记】 1)顶点表示事件,弧表示活动 。 2)如果顶点A->B有弧,如果让弧表示为L,则A为L的弧尾,B为L的弧头,即有箭头的那一端叫头。 一个事件的最早开始时间与以该事件为尾的弧的活动最早开始时间相同。 一个事件的最迟开始时间为以该事件为头的弧的活动最迟开始时间与该活动的持续时间的差。 3)关键活动一定位于关键路径上。往期数据结构推文集合
![954290fa8c4df45ef34335dc7039460c.gif](https://img-blog.csdnimg.cn/img_convert/954290fa8c4df45ef34335dc7039460c.gif)
抓码计算机考研qq群
总群:625590924
广大:1143982604
暨大:1071137230
广工:938111325
华工:428389734
深大:729770764
浙大:978938582
厦大:1125268501
中大:921801084
南航:281118241
华农:515681663
重邮:736197896
北邮:1126650806
南邮:1109929146
广外:976231252
东北大学:1128523098
华南师大:428389734
南昌大学:923249141
![5745beaf74c326a0d409f8367c5a2d82.png](https://img-blog.csdnimg.cn/img_convert/5745beaf74c326a0d409f8367c5a2d82.png)
给个“在看”支持一下我
![34ba1b8612d310c7e4b6a2d49d028bde.png](https://img-blog.csdnimg.cn/img_convert/34ba1b8612d310c7e4b6a2d49d028bde.png)