408第一季 - 数据结构 - 图

图的概念

完全图

无向图的完全图可以这么想:如果有4个点,每个点都会连向3个点,每个点也都会有来回的边,所以除以2

有向图就不用除以2

连通分量

不多解释

极大连通子图的意思就是让你把所有连起来的都圈出来

强连通图和强连通分量

这个是特指有向图的,有向图很强

入度,出度

每个边算2次,一条边就是出度和入度

并且等于边数

题目

1

bro,你是不是想 7-1 = 6?

那你完了,这里有个狗屎关键词 任何情况下 ,要考虑最坏的

那你是不是想(7 * 6)/2 = 21

那你完了,因为题目还有个狗屎关键词 最少

所以正确的思路就是,你其他6个顶点全部都拉满了,最后再多一条连到第七个顶点,这样你再怎么阴间操作,你都不可能孤立任何一个顶点

所以是(5*6)/2 + 1 = 16

c

2

这个性质记下,这里是至少

a

3

(4*5)/2 + 1 = 11

一样,无论你怎么针对,都能连到一起去

d

4

A : 16条就一定连通了

B : 22条就一定连通了

C: 29条才连通 ,又要至少,所以选C

5

均小于3,又要顶点最少,那可以把他们的度全变成2来保证顶点的个数最少

b

6

其实从上面的题可以知道,连通的条件很苛刻的

所以举例子就知道了

选D , 6 > 4+1, 6个顶点5条就能连通,但这里最多才4条

图的存储

邻接矩阵

看图就行了

每个顶点的出度是看行的,入度是看列的

无向图的邻接矩阵是对称的(并且唯一)

对称的不一定是无向图,但不对称的一定不是无向图

无向图每行和对应的每列 度是一样的,也就是出度和入度一样

因为存很多0没有意义,谁是0

邻接表

有向图只看出度

其他的十字链表什么的最终季再说,各种代码也是

题目

1

出度是看行的,入度是看列的

c

图的遍历

这小结只考过选择题,没有代码题

这里广度优先,从2开始的,第一层先是1和6,第二层对应着1的5和6的3,7,第三层对应着5没有,3是4,7是8

当然是不唯一的,还可以这样

然后是深度遍历

深度遍历就是愣头青,一直冲

一开始是2,随便走1还是6,这里走1,然后是5,然后回去回到1再回到2 ,此时已经记下了215

然后2还有方向走6,6这里走3还是7都行,我们走3,3这里走4还是7都行,我们走7,然后走8,然后走4,然后原路返回就行

题目

1

a应该是bhf

d

2

自己走,愣头青

d