赞
踩
1、图的定义
2、无向图的结点数、边数、度数、连通性、强连通性等性质之间的关系
3、有向图的结点数、边数、度数、连通性、强连通性等性质之间的关系
4、对无向连通图做一次深度优先搜索,可以访问到所有顶点。
5、若有向图中存在拓扑序列,则该图不存在回路。
6、图的遍历就是从图中某一顶点出发访遍图中其余结点(错误,若图非连通)
7、环路:
8、n个节点的二叉树数目:卡特兰数
1、邻接矩阵
2、邻接表存储
3、十字链表(有向图)
4、邻接多重表(无向图)
5、假设有n个顶点、e条边的有向图用邻接表表示,则删除与某个顶点v相关的所有边的时间复杂度为O(n + e)。
6、广度优先搜索中邻接表的时间复杂度为O(|V| + |E|),我们可得:对于邻接表的时间复杂度的计算要从顶点数和边数两个角度考虑。
7、若邻接矩阵对角线以下(或以上)的元素全为0,则图中必然不存在环,即拓扑序列一定存在,但不能说明拓扑序列唯一。
1、广度优先搜索(BFS)
2、深度优先搜索(DFS)
3、图的遍历与图的连通性
非强连通分量一次调用BFS(G,i)或DFS(G,i)无法访问到该连通分量的所有顶点。
4、DFS(或BFS)可用来计算图的连通分量个数。—— 见例题
5、利用深度优先遍历可以判断图G中是否存在回路。
对于无向图来说,若深度优先遍历过程中遇到了回边,则必定存在环;对于有向图来说,这条回边可能是指向深度优先森林中另一棵生成树上的顶点的弧;但是,从有向图的某个顶点V出发进行深度优先遍历时,若在DFS(v)结束之前出现一条从顶点u到顶点v的回边,且u在生成树上是v的子孙,则有问图必定存在包含顶点v和顶点u的环。
1、最小生成树
Prim算法的时间复杂度为O(|V|2),适用于求解边稠密的图的最小生成树。
Kruskal算法的时间复杂度为O(|E|log|E|),适合于边稀疏而顶点较多的图。
2、最短路径
Dijkatra算法的时间复杂度为O(|V|2)。不适用于带有边带有负权值的图。
Floyd算法的时间复杂度为O(|V|3)。允许图中有带负权值的边,但不允许有包含带负权值的边组成的回路。
3、拓扑排序
时间复杂度为O(|V| + |E|)。
若一个顶点有多个直接后继,则拓扑排序的结果通常不唯一。
4、关键路径
在AOE网中仅有一个入度为0的点,也仅有一个出度为0的点。
关键路径上的所有活动都是关键活动。
网中的关键路径并不唯一,且对于有几条关键路径的网,只提高一条关键路径上的关键活动速度并不能缩短整个工程的工期。
5、深度优先遍历和拓扑排序可以判断出一个有向图是否有环。
6、
1、若具有n个顶点的图是一个环,则它有( )棵生成树。
【解析】因为n个顶点构成的环共有n条边,去掉其中任意一条便是一棵生成树,所以共有n种情况。
【答案】n
2、下列关于无向连通图特性的叙述中,正确的是()。
Ⅰ.所有顶点的度之和为偶数
Ⅱ.边数大于顶点个数减1
Ⅲ.至少有一个顶点的度为1
【解析】每条边都连接了两个结点,在计算顶点的度之和时每条边都被计算了两次(出度和入度),故所有顶点的度之和为边数的两倍,I正确。n个顶点、n-1条边可以构成无向连通图,比如树,Ⅱ错误。顶点数为N(N≥1)的无向完全图中不存在度为1的顶点,画出一个 环 ,这样每个顶点的度都为2 同时满足无向连通。Ⅲ错误。
【答案】仅一
3、若一个具有n个顶点,e条边的无向图是一个森林,则该森林必有多少棵树?
【解析】
设森林中有x棵树,把每棵树根连起来(需要用 x-1 条边连接)构成一棵新的树,也满足树的性质,因此有
连接后边的数目为 n - 1 = x - 1 + e,所以 x = n - e
【答案】n-e
4、如何对无环有向图中的顶点号重新安排使得该图的邻接矩阵中所有的1都集中到对角线以上?
【解析】有两种方法,如下:
方法二:采用拓扑排序对顶点号重新安排。
5、假设有n个顶点,e条边的有向图用邻接表表示,则删除与某个顶点v相关的所有边的时间复杂度是?
【解析】O(n+e)
首先,删除顶点v邻接的边,O(n-1)。
然后遍历边表(剩余全部顶点表结点及其指向的边表),删除所有v的入边。O(n+e)
1、对于一个非连通无向图G,采用深度优先遍历访问所有顶点,在DFSTraverse函数(见考点讲解DFS部分)中调用DFS的次数正好等于()。
A.顶点数
B.边数
C.连通分量数
D.不确定
【解析】
①现在要遍历的是一个<非连通>无向图
②DFS一次可以遍历一个完整的连通图
DFS(或BFS)可用来计算图的连通分量个数,因为一次遍历必然会将一个连通图中的所有顶点都访问到,而对于已经被访问的结点不在调用,故选择C。
连通分量的概念:极大连通子图,也就是“非连通图是由多少连通子图构成的”。
2、用DFS遍历一个无环有向图,并在DFS算法退栈返回时打印相应的顶点,则输出的顶点序列是( )。
A.逆拓扑有序 B.拓扑有序 C.无序的 D.无法确定
【解析】
DFS(深度优先遍历)是一个递归算法,在遍历的过程中,先访问的点被压入栈底(栈是先进后出),再说:拓扑有序是指如果点U到点V有一条弧,则在拓扑序列中U一定在V之前.深度优先算法搜索路径恰恰是一条弧,栈的输出是从最后一个被访问点开始输出,最后一个输出的点是第一个被访问的点.所以是逆的拓扑有序序列
如果是队列:拓扑有序
如果是栈:逆拓扑有序
3、判断一个有向图是否存在回路,除了可以利用拓扑排序方法外,还可以利用( )
A 求关键路径的方法
B 求最短路径的Dijkstra方法
C 深度优先遍历算法
D 广度优先遍历算法
【解析】
A:有争议。求关键路径的前提是无环图。在求关键路径前就需要进行判断是否有环。
B:逐个获得某结点的最短路径。如果存在回路会怎么样?不会怎么样,照样是在排除/采用路径而已。
C:深度优先遍历:如果在遍历过程中欲访问结点已在栈中,则证明有回路。
利用深度优先遍历可以判断图G中是否存在回路。对于无向图来说,若深度优先遍历过程中遇到了回边,则必定存在环;对于有向图来说,这条回边可能是指向深度优先森林中另一棵生成树上的顶点的弧;但是,从有向图的某个顶点V出发进行深度优先遍历时,若在DFS(v)结束之前出现一条从顶点u到顶点v的回边,且u在生成树上是v的子孙,则有问图必定存在包含顶点v和顶点u的环。
D:广度优先遍历:遍历过程中无法检测环,因为是广度优先,形成环的路径是没有被考虑进遍历过程的。
【答案】C (dfs)
1、下面哪一方法可以判断出一个有向图是否有环(回路):( )
A.深度优先遍历
B.拓扑排序
C.求最短路径
D.求关键路径
【解析】
Ⅰ:可以判断。在遍历过程中如果遇到要访问的结点已在栈中就是有环。
[深度优先遍历]的概念:
假定每一个点都没被访问过。从起点开始,找邻接的点。
对每个点,只要存在有向的路径,查找就可以继续,顺藤摸瓜(同时把经过的点给标记成“已访问”)。一旦遇到“已访问”就表示,有环路。
Ⅱ:拓扑是求是判断是否有回路的正统。找不到拓扑序列必定有环。
对于有向图的拓扑排序,
1、计算图中所有点的入度,把入度为0的点加入栈
2、如果栈非空:取出栈顶顶点a,输出该顶点值,删除该顶点
3、从图中删除所有以a为起始点的边,如果删除的边的另一个顶点入度为0,则把它入栈
4、如果图中还存在顶点,则表示图中存在环;否则输出的顶点就是一个拓扑排序序列
Ⅲ:求最短路径本身是不需要有环无环的条件的,因此自然无法判断。
Ⅳ:有争议。求关键路径的前提是无环图。在求关键路径前就需要进行判断是否有环。
【答案】AB
2、以下关于拓扑排序的说法中错误的是( )
I. 如果某有向图存在环路,则该有向图一定不存在拓扑排序
II. 在拓扑排序算法中,为暂存入度为零的顶点可以使用栈,也可以使用队列
III. 若有向图的拓扑有序序列唯一,则图中每个顶点的入度和出度最多为1
【解析】
Ⅰ:没问题。拓扑与有环不可兼得。
Ⅱ:没问题,只要入度为0,以什么样的顺序(栈or队列)都没问题。
Ⅲ:不正确。因为是有向图的原因,所以出入度不可能单1。
【答案】III
3、下列关于图的说法中,正确的是( )。
Ⅰ.(有向图中顶点V的度等于其邻接矩阵中第v行中1的个数
Ⅱ.无向图的邻接矩阵一定是对称矩阵,有向图的邻接矩阵一定是非对称矩阵
Ⅲ.在图G的最小生成树G1中,可能会有某条边的权值超过未选边的权值
IV.如果有向无环图的拓扑序列唯一,则可以唯一确定该图
【解析】
Ⅰ.有向图的度=出度+入度。邻接矩阵第v行中1的个数=出度。不完整。
Ⅱ.无向图的邻接矩阵一定是对称矩阵v,但是有向图的邻接矩阵不一定是非对称矩阵!
Ⅲ.没问题。如果这个选项不对的话,就意味着最小生成树一定是权值最小的n-1条边构成?
IV.拓扑序列唯一,并不能直接画出来图。直接最简例子即可得。
4、若一个有向图具有有序刺拓扑排序序列,那么它的邻接矩阵V定为( )矩阵
A.对称 B.稀疏 C.三角 D.一般
【解析】关键点在于这里“有序”的定义是什么?
放到拓扑序列和邻接矩阵中的含义就是在对顶点进行编号之后,所有的拓扑序列(也就是所有的边)都是由小编号顶点→大编号顶点 或者 大编号顶点→小编号顶点。
那么,把这个条件代入矩阵可得,必为三角矩阵。(小→大是上三角,大→小是下三角)
5、下列AOE网表示一项包含8个活动的工程。通过同时加快若干活动的进度可以缩短整个工程的工期。下列选项中,加快其进度就可以缩短工程工期的是()
A.c和e B.d和e C.f和d D.f和h
【解析】
6、 若用邻接矩阵存储有向图,矩阵中主对角线以下的元素均为零,则关于该图拓扑序列的结论是___。
A.存在,且唯一 B.存在,且不唯一 C.存在,可能不唯一 D.无法确定是否存在
【解析】首先拓扑序列是一定存在的。(结论记住! )
原因:表明只有顶点i到顶点j (i<j)可能有边,而顶点j到顶点i一定没有边,即有向图是一个无环图。
OK,那么问题来了,唯一吗?举例子呗......
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。