408-图基础
- 图的定义
线性表中我们把数据元素叫元素,树中将数据元素叫结点,在图中数据元素,我们则称之为顶点(Vertex)。
图( Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。
需要注意的是线性表中可以没有数据元素,称为空表。树中可以没有结点,叫做空树。但是图不能没有顶点。
- 边
无向边:若顶点v到v之间的边没有方向,则称这条边为无向边(Edge),用无序偶对(vi,vj)来表示。如果图中全都是无向边,则称该图为无向图。
有向边:若从顶点vi到vj的边有方向,则称这条边为有向边,也称为弧(Arc )。可以写作<vi,vj>。注意不能写作<vj,vi>。
总结:无向边用小括号“()”表示,而有向边则是用尖括号“<>”表示。
图上的边或弧上带权则称为网。
在图中,若不存在顶点到其自身的边,且同一条边不重复出现,则称这样的图为简单图。我们主要讨论的都是简单图。
在无向图中,如果任意两个顶点之间都存在边,则称该图为无向完全图。
在有向图中,如果任意两个顶点之间都存在方向互为相反的两条弧,则称该图为有向完全图。
有很少条边或弧的图称为稀疏图,反之称为稠密图。
对于无向图G= (V{E),如果边(v') ∈E,则称顶点v和V互为邻接点(Adjacent),即v和v相邻接。
顶点v的度(Degree)是和v相关联的边的数目,记为TD(v)。
- 连通图
在无向图G中,如果从顶点vi到顶点vj有路径,则称vi和vj是连通的。如果对于图中任意两个顶点vi和vj都是连通的,则称G是连通图(ConnectedGraph)。
无向图中的极大连通子图称为连通分量。
在有向图G中,如果对于每一对vi、vj∈V、v≠V,从vi到vj和从vj到vi都存在路径,则称G是强连通图。有向图中的极大强连通子图称做有向图的强连通分量。
所谓的一个连通图的生成树是一个极小的连通子图,它含有图中全部的n个顶点,但只有足以构成一棵树的n-1条边。
- 图的储存结构
邻接矩阵储存方式:用两个数组来表示一个图,一个一维数组来储存顶点信息,一个二维数组(又叫邻接矩阵)来储存边的信息。
邻接表储存方式:将邻接矩阵中的二维数组改成n个链表,第i个链表储存i点到其他顶点的边的信息,可以节约储存空间。
链式前向星:参考这篇博客有关SPFA,Dijkstra和l链式前向星 - redintonc - 博客园 (cnblogs.com)
边集数组:将所有边储存在一个一维数组中,在最小生成树算法中会用来寻找权值最小的边。
- 拓扑图
AOV网:在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,我们称为 AOV 网(Activity On VertexNetwork )。AOV网中的弧表示活动之间存在的某种制约关系。比如先要完成某个活动才能完成下一个活动。
AOE网:因此在前面讲了AOV 网的基础上,我们来介绍一个新的概念。在一个表示工程的带权有向图中,用顶点表示事件,用有向边表示活动,用边上的权值表示活动的持续时间,这种有向图的边表示活动的网,我们称之为AOE 网(Activity On EdgeNetwork)。我们把 AOE 网中没有入边的顶点称为始点或源点,没有出边的顶点称为汇点。
两者之间的区别:
AOV网
是一个——有向无回路的图
顶点——表示活动
用弧——表示活动间的优先关系的有向图称为-顶点表示活动的网
AOE网
是一个——带权的有向无环图
边——表示活动
顶点——表示事件(Event),弧表示活动
权——表示活动持续的时间
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 分享4款.NET开源、免费、实用的商城系统
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 5. Nginx 负载均衡配置案例(附有详细截图说明++)