数据结构复习之五(图)

(一)图的基本概念

简单图 ①不存在重复边②不存在顶点到自身的边

完全图 ①任意两顶点之间都存在边

(二)图的存储及基本操作

邻接矩阵法 存储顶点之间关系的二维数组称为邻接矩阵

邻接表法 为图中每个顶点建立一个单链表, 存放连接该顶点的边(或出去的边)

十字链表 




邻接多重表(只适用于无向图)

与十字链表相比, 把邻接多重表的入边表下一个改成某一顶点关联边的下一个, 把出边表下一个改成另一顶点关联边的下一个. 参考链接同上.

(三)图的遍历

深度优先搜索

广度优先搜索

(四)图的相关应用

最小生成树

Prim算法 贪心, 每次把不在生成树中的最近顶点添加到生成树中

方法类似于下面的最短路径算法

Kruskal算法 贪心, 每次选择最短的边 但是不能产生回路

最短路径

Dijkstra算法 贪心, 每次选择最近的点

data数组 存放从v0到其他顶点的最短路径长度

path数组 存放从源点到顶点i之间的最短路径的前驱节点

在每个循环内部都是 更新最短路径长度->查找最短路径->选定一个点

Floyd算法

递推产生一个n阶方阵序列 表示从i到j的最短路径长度 表示经过第k个顶点的运算步骤 三层循环, 时间复杂度O(顶点^3)

拓扑排序 AOV网 Activity On Vertex

重复以下步骤①从图中选择一个没有前驱的顶点并输出

②从图中删除该顶点和所有以它为起点的有向边

关键路径 AOE网 Activity On Edge


猜你喜欢

转载自blog.csdn.net/u010099177/article/details/80758855