数据结构与C++

数据结构与C++ 知识量:9 - 32 - 91

7.1 图的基本概念><

图的定义和术语- 7.1.1 -

图(Graph)是由顶点(Vertices)和边(Edges)组成的数据结构。在图论中,顶点是对象的表示,边则是对象之间的关系。这种关系可以是方向性的,也可以是双向的。图可以表示为一个有序对G=(V,E),其中V是顶点的集合,E是边的集合。边的定义取决于图的结构,一条边可以连接两个顶点,或者表示从一个顶点到另一个顶点的路径。

在有向图中,边表示从一个顶点到另一个顶点的单向关系。而在无向图中,边表示两个顶点之间的双向关系。

此外,图的度(Degree)是指一个顶点的边的数量。对于有向图,度可以分为入度(In-degree)和出度(Out-degree)。入度是指指向该顶点的边的数量,出度是指从该顶点出发的边的数量。

子图(Subgraph)是指一个图G的顶点集和边集的子集,且这个子集仍然构成一个图。一个图G的导出子图(Induced Subgraph)是指以G的某个顶点集为顶点集,以两端点均在给定顶点集中的全体边为边集的子图。

图的相关术语包括:

  • 顶点(Vertex):图中的基本元素,通常用圆圈表示。

  • 边(Edge):连接两个顶点的线段,表示顶点之间的某种关系。

  • 权重(Weight):边的数值属性,表示连接两个顶点之间的某种代价或距离。

  • 路径(Path):从图中的一个顶点到另一个顶点的序列,每个顶点只经过一次。

  • 环(Cycle):路径的闭合形式,即起点和终点相同的路径。

  • 连通性(Connectivity):图中的顶点之间是否可以通过边相互连接。

  • 树(Tree):一种特殊的图,满足连通性且无环。

  • 最小生成树(Minimum Spanning Tree):连接所有顶点的边的最小权重总和。

  • 网络(Network):具有多个连通子图的图。

  • 图着色(Graph Coloring):将顶点或边着色,使得相邻的顶点或边具有不同的颜色。

  • 匹配(Matching):边与边的配对关系,每条边只与其相邻的边配对。

  • 平面图(Planar Graph):可以画在平面上,且边不相交的图。

  • 二分图(Bipartite Graph):顶点可以分成两个互不相交的子集,且每条边都连接两个不同子集的顶点。

  • 欧拉路径(Eulerian Path):通过图中的每条边恰好一次的路径。

  • 哈密尔顿路径(Hamiltonian Path):通过图中的每个顶点恰好一次的路径。

图的基本操作- 7.1.2 -

图的基本操作包括创建图、销毁图、定位顶点、获取顶点、获取邻接顶点等。

  • 创建图:根据给定的顶点和边集合,构造一个图。在创建图时,需要定义顶点和边的数据结构,并确定它们之间的关系。

  • 销毁图:删除已经创建的图,释放相关的内存空间。在销毁图时,需要逐个删除所有的顶点和边,并释放相关的内存空间。

  • 定位顶点:根据给定的顶点标识符或属性值,查找图中的特定顶点。在定位顶点时,可以使用图的数据结构提供的查找函数或遍历算法来找到对应的顶点。

  • 获取顶点:获取指定顶点的属性值或相关信息。在获取顶点时,可以通过访问顶点的数据结构来获取相关信息。

  • 获取邻接顶点:获取与指定顶点相邻的顶点集合。在获取邻接顶点时,可以通过遍历图的边来找到与指定顶点相邻的所有顶点。