大话数据结构之图
1.图的定义
1.图(Graph)是由定点的有穷非空结合和顶点之间的边的集合组成的。常表示为G(V,E), 其中G表示一个图,V是图G中顶点的集合,E是图G中边的集合。
2.在无向图中,如果任意两个顶点之间都存在边,则称该图为无向完全图。
3.在有向图中,如果任意两个顶点之间都存在方向互为相反方向的两条弧,则该图成为有向完全图。
4.有很少条边或者弧的图成为稀疏图,反之成为稠密图。
5.图的边或者弧相关的系数叫做权,这种带权的图通常称为网。
6.在无向图G当中,如果任意两个顶点都是连通的,称为连通图。
7.无向图图的顶点的边数叫做度,有向图的顶点分为入度和出度。
8.无向图中连通n个顶点n-1条边叫生成树。有向图中入读为0其余项入度为1的叫有向树。一个有向图由若干棵有向树构成森林。‘
2. 图的存储结构
2.1 邻接矩阵
2.2 邻接表
2.3 十字链表
2.4 邻接多重表
2.5 边数集合
3.图的遍历
3.1 深度优先遍历
3.2 广度优先遍历
4. 最小生成树
4.1 构成连通网的最小代价生成树称为最小生成树(Minimum Cost Spanning Tree)。
4.1.1 普里姆(Prim)算法
4.1.2 克鲁斯卡尔(Kruskal)算法
5.最短路径
对于网图来说,最短路径是指两顶点之间经过的边上权值之和最少的路径,并且我们称路径上的第一个点为源点,最后一个点是终点。
5.1 迪杰斯特拉(Dijkstra)算法
5.2 弗洛伊德(Floyd)算法
6.拓扑排序
1.在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示的活动的网,成为AOV(Activity On Vertex Network).
2.拓扑序列排序其实就是对有向图构造拓扑序列的过程。
3.对AOV网排序的基本思路: 从AOV网中选择一个入度为0的顶点输出,然后删除此顶点,并删除以此顶点为尾的弧,继续重复此步骤,直到输出全部顶点或者AOV网中不存在入度为0 的点为止。
4.拓扑排序主要解决一个工程能否顺利进行的问题
7.关键路径
1.关键路径解决工程完成需要的最短时间;
2.在表示一个工程的带权有向图中,用顶点表示事件,用有向边表示活动,用边上的权值表示活动的持续时间,这当中有向图的边表示活动的网,称之为AOE网(Activity On Edge Network)。
3.路径上各个活动所持续的时间之和成为路径长度,从源点到汇点具有最大长度的路径称为关键路径,在关键路径上的活动称为关键活动。
4.只需要找到所有活动的最早开始时间和最晚开始时间,并比较他们,如果相等则意味着此活动是关键活动,活动键的路径称为关键路径。
Reference:
1.大话数据结构