数据结构(二十八)图的定义和基本概念
一、图的定义
线性表中的数据元素之间是被串起来的,仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继。
树形结构中的数据元素之间有明显的层次关系,并且每一层上的数据元素可能和下一层中多个元素相关,但只能和上一层中一个元素相关。
图是一种较线性表和树更加复杂的数据结构,图形结构中结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。
图的定义:图(Graph)是由顶点的有穷非空集合(Vertex)和顶点之间边的集合(Edge)组成,通常表示为:G(V,E)。
- 线性表中把数据元素叫元素,树中把数据元素叫结点,图中把数据元素叫顶点。
- 图结构中,顶点集合V有穷非空,即不允许没有顶点;但是E可以为空,即只有顶点没有边,称为零图。
- 无向边:顶点u到v之间的边没有方向,此时(u,v)和(v,u)等同。
- 有向边:从u到v的边有方向,则为有向边,也成为弧(Arc),用<u,v>表示,其中u为弧尾(Tail),v为弧头(Head)。
二、图的其他概念
1.有向图:图中任意两个顶点之间的边都是有向边,则称该图为有向图(Directed Graph)。
2.无向图:图中任意两个顶点之间的边都是无向边,则称该图为无向图(Undirected Graph)。
3.简单图:图中不存在顶点到其自身的边,且同一条边不重复出现,则称该图为简单图,这里研究的都是简单图。
4.无向完全图:无向图中,任意两个顶点之间都存在边,则称该图为无向完全图。含有n个顶点的无向完全图有n(n-1)/2条边。
5.有向完全图:有向图中,任意两个顶点之间都存在边,则称该图为有向完全图。含有n个顶点的有向完全图有n(n-1)条边。
6.稀疏图和稠密图:在具有n个顶点、e条边的图中,若含有较少的边,则称图为稀疏图;反之,称图为稠密图。
7.权和网:在一个图中,每条边或弧可以表上具有某种实际含义的数值,次数值称为该边或弧上的权(Weight)。边或弧上标识权的图称为网(Network)。
8.子图:假设有两个图G(V,E)和G1(V1,E1),如果V1属于V且E1属于E,则称G1为G的子图(Subgraph)。如果G1是G的子图,且V1=V,则G1是G的生成子图。
9.领接点:无向图中,若存在一条边(u,v),则称顶点u与v互为领接点,边(u,v)是顶点u和v关联的边。有向图中,若存在一条弧<u,v>,则称顶点u领接到v,顶点v领接自顶点u,弧<u,v>与顶点u和v相关联。
10.顶点的度:顶点的度(Degree)是图中与该顶点相关联边的数目。无向图中,顶点v的度是和v相关联的边的数目,记为TD(v),无向图中边数就是各顶点度数和的一半。有向图中,以顶点v为头的弧的数目称为v的入度(InDegree),记为ID(v);以v为尾的弧的数目称为v的出度(OutDegree),记为OD(v),顶点v的度为TD(v)=ID(v)+OD(v),有向图中的边数等于各顶点的出度和等于各顶点的入度和。
11.路径与路径长度:无向图G(V,E)中从顶点v到顶点v1的路径(Path)是一个顶点序列(v=v0,v1,...=v)。有向图中路径也是有向的。路径的长度是路径上的边或弧的数目。
12.回路:第一个顶点和最后一个顶点相同的路径称为回路或环(Cycle)。序列中顶点不重复出现的路径称为初等(简单)路径。除了第一个顶点和最后一个顶点之外,其余顶点不重复出现的回路,称为初等(简单)回路或初等(简单)环。
13.连通图:在无向图中,若从顶点u到顶点v有路径,则称u和v是连通的。如果对于图中的任意两个顶点均是连通的,则称该图是连通图(Connected Graph)。无向图中的极大连通子图称为连通分量。
14.强连通图与强联通分量:有向图中,若任意两个顶点均连通,则称该图为强连通图。有向图中的极大强连通子图称为强连通分量,强连通图只有一个强连通分量,即其本身;非强连接图有多个强连通分量。
15.生成树和生成森林:一个连通图的生成树是一个极小的连通子图,它含有图中全部的n个顶点,但只有足以构成一棵树的n-1条边。如果一个图有n个顶点和小于n-1条边,则是非连通图,如果它多于n-1条边,必定构成一个环,因为这条边使得它依附的那两个顶点之间有了第二条路径。如果一个有向图恰有一个顶点的入度为0,其余顶点的入度均为1,则是一棵有向树。入度为0其实就是相当于树中的根结点,其余顶点入度为1就是说树的非根结点的双亲只有一个。一个有向图的生成森林由若干棵有由若干棵有向树组成,含有图中全部顶点,但只有足以构成若干棵不想交的有向树的弧。