算法与数据结构1800题 图

327 阅读4分钟

A
度数之和为边数的两倍,一定为偶数
边数至少为顶点个数-1
图可以是只有一个顶点,而没有任何一条边,但是不能没有任何顶点

如果想要保证在任何情况下都是连通的:
n个顶点组成完全图,然后另一个顶点连一条边:
6*5/2 + 1 = 16

B

C

简单路径:任何环都不出现,只要没有环,就是简单路径,只要有环,就不是简单路径
回路:顶点和终点相同
简单回路: 只有顶点和终点重合,中间不出现其他任何回路,就是简单回路(只有一个大回路)
一个图如果能够进行拓扑排序,那么这个图一定不包含回路,包含回路,就无法进行拓扑排序

C
遍历表的同时,将边遍历了

枚举法

动态规划
迪杰斯特拉算法:求单点到其他点的最短路径
弗洛伊德算法:求任一点之间的最短路径
贪心:
普里姆算法:求最小生成树(贪心)
克鲁斯卡尔算法:求最小生成树(另一种贪心算法)
遍历:
深度优先算法
广度优先算法


A

最小生成树可能不唯一,但是最小生成树的代价一定唯一
只有当图中具有较小的相等取值的时候,才可能生成不同的最小生成树,如果当图中权值都不相同,则声称的最小生成树一定唯一
有些边的权值比较小,但是可能与已经在集合中的点构成回路,这样最小生成树中就不包含这个点
如果图中的所有边的权值不相同,则Prim算法和克鲁斯卡尔算法生成的最小生成树一定相同

无向图: 顶点的度,等于顶点的边数,等于邻接矩阵中一行或者一列的和
有向图: 顶点的度,等于入度+出度,等于邻接矩阵的顶点对应的行的和+列的和
无向图,邻接矩阵一定对称
有向图,邻接矩阵不一定对称,如果不对称,一定是有向图

C应该也不对吧
D

事件的最早开始时间,往后退,各条路径中最大的
事件的最迟开始时间,从后往前推,各条路径中最小的
活动的最早开始时间,与出发事件的最早开始时间相同
活动的最迟开始时间,等于结束事件的最迟开始时间-活动持续时间

prim算法和kruskal算法都是贪心算法:
prim算法,每次取与已有点集合相连的边中最小的
kruskal算法每次只取最小的

C
无向图的连通分量,指的就是无向图的极大连通子图
图的遍历,必须要强调,所有点遍历且只能遍历一次

A
路径:由顶点和相邻顶点序偶构成的边所形成的序列

B

B

A

连通n个顶点的无向图,需要n-1条边,连通n个顶点的有向图,需要n条边

B 有向图如果是连通的,说明任意点顶点之间都有路径

C
有向图如果是强连通,则任意两顶点之间都有路径

D

D

最少具有1个,最多具有n个连通分量

B,C

A

B

不会做

D

无向图的极小联通子图:
既保持图的连通,又使得边数最少
生成树:
连通图的生成树是包含图中全部顶点的一个极小连通子图,如果图中的顶点数为n,则生成树有n-1条边,如果减少一条边,就会变成非连通图,如果加上一条边,就会形成一个回路,非连通图中,连通分量的生成树构成了非连通图的生成森林

A
邻接表包括顶点向量和边向量

D
无向图中顶点的度,就是此顶点对应的链表的度

C
邻接表,包括顶点表和边表,链表指的就是边表

表节点,不包括顶点表中的节点

BCD
临界多重表:
每条边对应一个节点,每个顶点对应顶点表中的一个顶点

B
树和图计算节点的方式是不一样的

C
连通,强连通,指的是有路径就可以,而不管是否是直连
而完全图,表示的是,任意两点之间,必须有线直连
完全图,一定是连通图,而连通图,不一定是完全图

B

没有说明是有向图还是无向图的邻接矩阵

D