1、图和线性表,树的对比:
---- 在线性表中,数据元素之间是被串起来的,仅有线性关系,每个数据元素只有一个直接前驱和一个后继。
---- 在树型结构中,数据元素之间有着明显的层次关系,并且每一层上的数据元素可能和下一层中多个元素相关,但只能和上一层中
一个元素相关。这和一对父母可以有多个孩子,但是每个孩子却只能有一对父母是一个道理。
---- 图是一种较线性表和树更加复杂的数据结构。在图形结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。
2、定义:图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成。
---- 通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点(vertex)的集合,E是图G中边(edge)的集合。
---- 线性表中我们把数据元素叫元素,树中将数据元素叫结点,在图中数据元素,我们称之为顶点(Vertex)。
---- 线性表中可以没有数据元素,称为空表。树中可以没有结点,叫做空树。
在图结构中,不允许没有顶点。在定义中,若V是顶点的集合,则强调了顶点集合V有穷非空。
---- 线性表中,相邻的数据元素之间具有线性关系,树结构中,相邻两层的结点具有层次关系,而图中,任意两个顶点之间都可能有关系,
顶点之间的逻辑关系用边来表示,边集可以是空的。
3、边
---- 无向边/无向图:若顶点vi到vj之间的边没有方向,则称这条边为无向边(Edge),用无序偶对(vi,vj)【小圆括号】来表示。
如果图中任意两个顶点之间的边都是无向边,则称该图为无向图(Undirected graphs)
G1=(V1,{E1}),其中顶点集合V1={A,B,C,D};边集合E1={(A,B), (B,C), (C,D), (D,A), (A,C)}
---- 有向边/有向图:若从顶点vi到vj的边有方向,则称这条边为有向边。也称为弧(Arc)。用有序偶<vi,vj>【小尖括号】来表示。
vi称为弧尾(Tail),vj称为弧头(Head)。如果图中任意两个顶点之间的边都是有向边,则称该图为有向图(Directed graphs)。
在图中,若不存在顶点到其自身的边,且同一条边不重复出现,则称这样的图为简单图。
在无向图中,如果任意两个顶点之间都存在边,则称该图为无向完全图。含有nx(n-1)/2条边。