一、图的定义
树的表示是分层的,例如父子关系,而其他关系只能间接的表示,例如同级关系。而图却不受这种限制。图是由顶点(或结点)及顶点之间的关系组成的集合。通常,图中的顶点数量或者一个顶点与其他顶点之间的连线的个数不受限制。
图是由顶点集合(Vertex)及顶点间的关系集合组成的一种数据结构:Graph=( V, E )
V = {x | x ∈某个数据对象 } 是顶点的有穷非空集合;
E ={ (x, y) | x, y ∈V } 是顶点之间关系的有穷集合,也叫做边(Edge)集合。
下图的都是图的表示
可能有人会提出异议,G2和G3怎么会是图,明明就是二叉树和线性表嘛。不错,你们说的是对的,但是根据图的定义我们不难发现,二叉树和线性表也符合图的特征。大家来看,二叉树的所有结点是不是相当于顶点的集合,结点间都存在一定的关系;线性表也是一样,也就是说二叉树和线性表是特殊的图。只不过图比线性表和树更加复杂罢了。
在线性表中,数据元素之间仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继;在树形结构中,数据元素之间有着明显的层次关系,并且每一层上的数据元素可能和下一层中多个元素相关,但只能和上一层中的一个元素相关;而在图形结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。
图是一种扩展的树结构,每个结点可以指向任意的其它结点。链表是特殊的树结构,树是特殊的图结构。图这种数据结构常用于网络规划和路径路径规划等领域。GPS相关产品中大量应用了图结构和图算法。
二、相关术语
-
无向边:若顶点 x 和 y 之间的边没有方向,则称该边为无向边(x, y),(x, y) 与
(y,x) 意义相同,表示 x 和 y 之间有连接。 -
无向图:若图中任意两个顶点之间的边均是无向边,则称该图为无向图(如上图G1,G2)。
-
有向边:若顶点 x 和 y 之间的边有方向,则称该边为有向边<x, y>,<x, y> 与
<y, x> 意义不同,表示从 x 连接到 y,x 称为尾,y 称为头。 -
有向图:若图中任意两个顶点之间的边均是有向边,则称该图