图✨
知识点:
-
图🤩
-
基本概念
-
主要性质
-
1、线形表可以是空表,树可以是空树,但图不能是空图。图中顶点集V一定非空,但边集E可以为空 2、完全图中,无向图n(n-1)/2条边,有向图n(n-1)条边 3、子图中,并非V和E的任何子集都构成G的子图,因为这样的子集可能不是图,即某些边,关联的顶点不在子图中 4、无向图的连通图,有向图的强连通图,不要主观臆断
-
针对2性质:考察需固定多少边,非连通图无向图至少需要多少个顶点,即求出该边数完全图的顶点+1即可; 若一个图有n个顶点,若边数小于n-1,则此图必是非连通图;
-
确保为n个顶点的图为一个连通图,先去保证n-1为强连通图,然后加一条边即必连通了
-
-
针对4性质:如果强连通图,某顶点只有出度,一定为单独一个强连通分量
-
难题,求森林的树的个数,即根的个数,由于每棵树除根节点外的每个节点对应一条边连接双亲节点,即用结点数-边数=根结点数
-
-
-
-
存储结构
-
邻接矩阵
-
主要性质,王道P211,6题
-
-
邻接表
-
主要性质
-
1、若邻接表中有奇数个边表节点,则图为有向图 2、在有向图邻接表中,顶点v在边表出现的次数,等于v的入度
-
-
-
-
图的遍历
-
深度优先遍历
-
类比树
-
类似于树的先根遍历 不同于,有重复访问,需要设置visited[](只要多边就有可能出现多次访问)
-
-
性质
-
形成的深度生成树个数等于连通分量,等于调用DFS的次数
-
具有工作栈的性质,深度为V
-
可以用于判断有向图中是否存在回路(通过每次递归查看栈中是否存在相同元素)
-
-
-
广度优先遍历
-
类比树
-
类似于树的层次遍历 不同于,有重复访问,需要设置visited[](只要多边就有可能出现多次访问)
-
-
性质
-
形成的广度生成树个数等于连通分量,等于调用BFS的次数
-
需要内存为V的辅助队列
-
当各边的权值相等时,可以解决单源最短路径问题
-
-
-
-
图的应用
-
MST最小生成树
-
prim算法
-
性质
-
1、只能使用带权无向图,而带权有向图由于两个节点之间来和回的权重不一样,无法确定
-
-
思路
-
1、从一个点出发,寻找一颗权值和最小的树,即每次选者权值最小的边,直至所有的顶点都已经加入
-
-
-
Kruskal算法
-
思路
-
1、每次从最小边出发,所有顶点不形成回路
-
-
-
-
-