Appearance
图的概念与存储
图是由顶点和边组成的结构,用来刻画对象以及对象之间的联系。形式化地,一个图可以表示为二元组
其中
在入门学习中,我们主要讨论简单图,即不包含重边和自环的图。重边是指在同一对顶点之间出现多条边;自环是指边的两个端点相同。限制在简单图的范围内,可以避免不必要的冗余,使得许多基本性质更加清晰。
度数
顶点的度数描述了它与多少条边相连。在无向图中,顶点
途径、路径与环
图的结构不仅体现在单条边上,还体现在由边串联而成的顶点序列中。
途径(walk)是顶点序列
连通性
一个图整体的紧密程度由连通性刻画。在无向图中,如果任意两个顶点之间都存在一条路径,则称该图为连通图。否则,图会自然地分解为若干连通分量,它们内部各自连通,但彼此之间互不相达。
在有向图中,对应的概念是强连通性。若任意两点之间都存在方向一致的往返路径,则称该图为强连通图。
图的存储方式
为了在计算机中操作图,需要将其表示为适合的数据结构。常见的方式有邻接矩阵与邻接表。
邻接矩阵
设图有
邻接表
为每个顶点维护一个邻居集合,只存储实际存在的边。邻接表在稀疏图上更为高效,遍历邻居时也避免了多余开销。但它无法像矩阵那样在常数时间内判断两点是否相连。
邻接矩阵与邻接表各有优缺点,实际使用时往往根据图的稠密程度来选择。