图及其应用

1.图的概念

(1)简单图:无重复边且没有顶点到自身的边(数据结构都是简单图)
(2)度:无向图为依附该点的边数,有向图为出度和入度的和
(3)简单路径:中间顶点不重复的路径
(4)对于无向图,为连通和连通图;对于有向图,为强连通和强连通图
(5)对于n个顶点的图:为无向图,为连通则最少n-1条边,不为连通最多Cn-1(2)条边

                为有向图,为强连通,则最少n条边

(6)极大连通子图:(1)为无向图中,子图必须连通且包含尽可能多的点和边

             (2)为有向图中,子图必须强连通且包含尽可能多的点和边

(7)连通分量和强连通分量:无向图的极大连通子图和有向图的极大连通子图
(8)无向连通图的生成树:为包含所有点的极小连通子图(即包含所有点且边尽可能少)(n个点则有n-1条边)
(9)无向/有向完全图:任意两个点有边/任意两个点存在方向相反的两条弧

2.图的存储

(1)邻接矩阵法:
无向图:第i个节点的度:某行(列)的非零元素的个数
有向图:第i节点的出度:第i行的非零元素的个数
求度,出度,入度的时间复杂度:O(v) 时间复杂度:O(v*2)
适合存储稠密图

性质:
图及其应用_第1张图片

(2)邻接表法
图及其应用_第2张图片

性质:邻居表法表示不唯一,但矩阵是唯一的,适合存储稀疏图

(3)十字链表法(只存储有向图)
图及其应用_第3张图片

图及其应用_第4张图片

(4)邻接多重表
图及其应用_第5张图片

总结:
图及其应用_第6张图片

3.图的应用

(1)最小生成树:带权连通图的权值之和最小的生成树

Prim算法:不停的加顶点(O(v平方),适合边稠图)
Krusal算法:不停选最小的边,使边两边的点连通(O(elog2e),适合边疏图)

(2)最短路径
图及其应用_第7张图片

图及其应用_第8张图片

(3)有向无环图
图及其应用_第9张图片
图及其应用_第10张图片

(4)拓扑排序

图及其应用_第11张图片

图及其应用_第12张图片

图及其应用_第13张图片

性质:(1)拓扑和逆拓扑可能不唯一

 (2)拓扑和逆拓扑内不能有环

(5)关键路径(性质,方法可突击)
图及其应用_第14张图片

图及其应用_第15张图片

图及其应用_第16张图片

你可能感兴趣的:(数据结构程序员)