数据结构—图
图(Graph)是一种比线性表和树更为复杂的数据结构。
线性结构:是研究数据元素之间的一对一关系。在这种结构中,除第一个和最后一个元素外,任何一个元素都有唯一的一个直接前驱和直接后继。
树结构:是研究数据元素之间的一对多的关系。在这种结构中,每个元素对下(层)可以有0个或多个元素相联系,对上(层)只有唯一的一个元素相关,数据元素之间有明显的层次关系。
图结构:是研究数据元素之间的多对多的关系。在这种结构中,任意两个元素之间可能存在关系。即结点之间的关系可以是任意的,图中任意元素之间都可能相关。
(一)图的定义和术语
一个图(G)是由二个集合V和E构成的二元组,记为G=(V,E) 。其中:V是图中顶点(Vertex)的非空有限集合;E是图中边的有限集合。从数据结构的逻辑关系角度来看,图中任何一个顶点都有可能与图中其他顶点有关系,而图中所有定点都有可能与某一顶点有关系。将顶点集合为空的图称为空图。其形式化定义为:
G=(V ,E)
V={v|vÎdata object}
E={<v,w>| v,wÎV∧p(v,w)}
P(v,w)表示从顶点v到顶点w有一条直接通路。
弧(Arc) :表示两个顶点v和w之间存在一个关系,用顶点偶对<v,w>表示。通常根据图的顶点偶对将图分为有向图和无向图。
有向图(Digraph):若图中每条边都是有方向的(图G的关系集合E(G)中,顶点偶对<v,w>的v和w之间是有序的),称图G是有向图。在有向图中,若<v,w>ÎE(G) ,表示从顶