数据结构复习——第六章:图

1.图:图G是由顶点集V和边集E组成,顶点集是有穷非空集,边集是有穷集;


2.G中每条边都有方向称有向图;有向边称弧;边的始点称弧尾;边的终点称弧头;G中每条边都没有方向的称无向图。

 

3.顶点n与边数e的关系:无向图的边数e介于0~n(n-1)/2之间,有n(n-1)/2条边的称无向完全图;有向图的边数e介于0~n(n-1)之间,有n(n-1)条边的称有向完全图;


4.无向图中顶点的度是关联与顶点的边数;有向图中顶点的度是入度与出度的和。

所有图均满足:所有顶点的度数和的一半为边数。

 

5.图G(V,E),如V’是V的子集,E’是E的子集,且E’中关联的顶点均在V’中,则G’(V’,E’)是G的子图。

 

6.在有向图中,从顶点出发都有路径到达其它顶点的图称有根图;


7.在无向图中,任意两个顶点都有路径连通称连通图;极大连通子图称连通分量;


8.在有向图中,任意顺序两个顶点都有路径连通称强连通图;极大连通子图称强连通分量;

 

9.将图中每条边赋上权,则称带权图为网络。

 

10.图的存储结构:

(1)邻接矩阵表示法:邻接矩阵是表示顶点间相邻关系的矩阵。n个顶点就是n阶方阵。

无向图是对称矩阵;有向图行是出度,列是入度。

(2)邻接表表示法:对图中所有顶点,把与该顶点相邻接的顶点组成一个单链表,称为邻接表,adjvex|next,如要保存顶点信息加入data;对所有顶点设立头结点,vertex|firstedge,并顺序存储在一个向量中;vertex保存顶点信息,firstedge保存邻接表头指针。


11.邻接矩阵表示法与邻接表表示法的比较:

  1) 邻接矩阵是唯一的,邻接表不唯一;

  2) 存储稀疏图用邻接表,存储稠密图用邻接矩阵;

  3) 求无向图顶点的度都容易,求有向图顶点的度邻接矩阵较方便;

  4) 判断是否是图中的边,邻接矩阵容易,邻接表最坏时间为O(n);

  5) 求边数e,邻接矩阵耗时为O(n^2),与e无关,邻接表的耗时为O(e+n);

 

12.图的遍历:

(1)图的深度优先遍历:类似与树的前序遍历。按访问顶点次序得到的序列称DFS序列。

对邻接表表示的图深度遍历称DFS,时间复杂度为O(n+e); 对邻接矩阵表示的图深度遍历称DFSM,时间复杂度为O(n^2);

(2)图的广度优先遍历:类似与树的层次遍历。按访问顶点次序得到的序列称BFS序列。

对邻接表表示的图广度遍历称BFS,时间复杂度为O(n+e); 对邻接矩阵表示的图广度遍历称BFSM,时间复杂度为O(n^2);

 

13. 将没有回路的连通图定义为树称自由树。


14.生成树:连通图G的一个子图若是一棵包含G中所有顶点的树,该子图称生成树。

有DFS生成树和BFS生成树,BFS生成树的高度最小。

非连通图生成的是森林。


15.最小生成树:将权最小的生成树称最小生成树。(是无向图的算法)

(1)普里姆算法:

   1) 确定顶点S、初始化候选边集T[0~n-2];formvex|tovex|lenght

   2) 选权值最小的T[i]与第1条记录交换;

   3) 从T[1]中将tovex取出替换以下记录的fromvex计算权;若权小则替换,否则不变;

   4) 选权值最小的T[i]与第2条记录交换;

   5) 从T[2]中将tovex取出替换以下记录的fromvex计算权;若权小则替换,否则不变;

   6) 重复n-1次。

初始化时间是O(n),选轻边的循环执行n-1-k次,调整轻边的循环执行n-2-k;算法的时间复杂度为O(n^2),适合于稠密图。

(2)克鲁斯卡尔算法:

   1) 初始化确定顶点集和空边集;对原边集按权值递增顺序排序;

   2) 取第1条边,判断边的2个顶点是不同的树,加入空边集,否则删除;

   3) 重复e次。

对边的排序时间是O(elog2e);初始化时间为O(n);执行时间是O(log2e);算法的时间复杂度为O(elog2e),适合于稀疏图。

 

16. 路径的开始顶点称源点,路径的最后一个顶点称终点;


17.单源最短路径问题:已知有向带权图,求从某个源点出发到其余各个顶点的最短路径;


18.单目标最短路径问题:将图中每条边反向,转换为单源最短路径问题;


19.单顶点对间最短路径问题:以分别对不同顶点转换为单源最短路径问题;


20.所有顶点对间最短路径问题:分别对图中不同顶点对转换为单源最短路径问题;

 

21.迪杰斯特拉算法:

  1) 初始化顶点集S[i],路径权集D[i],前趋集P[i];

  2) 设置S[s]为真,D[s]为0;

  3) 选取D[i]最小的顶点加入顶点集;

  4) 计算非顶点集中顶点的路径权集;

  5) 重复3)n-1次。

算法的时间复杂度为O(n^2)。

 

22.拓扑排序:对一个有向无环图进行拓扑排序,是将图中所有顶点排成一个线性序列,满足弧尾在弧头之前。这样的线性序列称拓扑序列。

(1)无前趋的顶点优先:总是选择入度为0的结点输出并删除该顶点的所有边。

设置各个顶点入度时间是O(n+e),设置栈或队列的时间是O(n),算法时间复杂度为O(n+e)。

(2)无后继的顶点优先:总是选择出度为0的结点输出并删除该顶点的所有边。

设置各个顶点出度时间是O(n+e),设置栈或队列的时间是O(n),算法时间复杂度为O(n+e)。

求得的是逆拓扑序列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值