1.前言
线性表 每个元素只有一个直接前驱和一个直接后继 一对一的关系
树形结构 数据元素之间是层次关系 一对多的关系
2.图的定义:
1)图(Graph)是由顶点的有穷非空集合和顶点之间边的结合组成
表示方式:G(V,E)其中G表示一个图,V是G中顶点的集合,E是图G中边的集合。
注意:
线性表中我们把数据元素叫元素;树中叫做结点;在图中数据元素我们叫做顶点(Vertex)
线性表可以没有数据元素,成为空表;树中可以没有结点,叫做空树;而图结构在强调顶点集合V要有穷非空
线性表相邻元素是线性关系,树结构中,相邻两层的结点具有层次关系,而图结构中任意两顶点之间都可能有关系,顶点之间的逻辑关系用边来表示,边集可以为空
2)无向边:若顶点Vi到Vj之间的边没有方向,则称为这条边为无向边(Edge),用无序偶(Vi,Vj)来表示
上图G1是一个无向图,G1=(V1,E1)其中
V1={A,B,C,D}
E1={(A,B),(B,C),(C,D),(D,A),(A,C)}
3)有向边:若从顶点Vi到Vj的边有方向,则称这条边为有向边,也称为弧(Arc),用有序偶<Vi,Vj>来表示,Vi称为弧尾,Vj称为弧头
上图G2是一个无向边,G2=(V2,E2)其中
V2={A,B,C,D}
E2={<B,A>,<B,C>,<C,A>,<A,D>}
4)简单图:在图结构中,若不存在顶点到其自身的边,且同一条边不重复出现,则这样的图为简单图
以下两个不属于简单图:
5)无向完全图:在无向图中,如果任意两个顶点之间都存在边,则称为无向完全图。含n个顶点的无向完全图有n*(n-1)/2条边
6)有向完全图:在有向图中,如果任意两个顶点之间都存在方向互为相反的两条弧,则称为有向完全图。含n个顶点的有向完全图有n*(n-1)条边
7)稀疏图和稠密图:这里的稀疏和稠密是模糊的概念,都是相对而言的,通常认为边或弧数小于n*logn(n是顶点的个数)的图称为稀疏图,反之称为稠密图
上图中,图中的边或弧所带的与它相关的数字,称这种与图的边或弧相关的数叫做权(Weight),带权的图通常称为网(network)
3.图中的关系
1)假设两图G1=(V1,E3)和G2=(V2,E2),如果V2属于V1,E2属于E1,则称G2 为G1的子图(subgraph)
2)对于无向图G=(V,E),如果边(V1,V2)属于E,则称顶点V1和V2互为邻接点,即V1和V2相邻接。边(V1,V2)依附于顶点V1和V2,或者说边(V1,V2)与顶点
V1和V2相关联。
顶点V的度是和V相关联的边的数目,记为TD(V)入下图,顶点A与B互为邻接点,边(A,B)依附于顶点A与B上,顶点A的度为3
3)对于有向图G=(V,E),如果<V1,V2>属于E,则称顶点V1邻接到顶点V2,顶点V2邻接自顶点V1.
以顶点V为头的弧的数目称为V的入度,记为ID(V),以V为尾的弧的数目称为V的出度记为OD(V),因此顶点V的度为TD(V)=ID(V)+OD(V)
下图顶点A的入度为2,出度为1,所以顶点A的度为3
4)顶点与边的关系
无向图G=(V,E)中从顶点V1到顶点V2的路径下图中用红线列举了从顶点B 到顶点D的四种不同路径:
如果G是有向图,则路径也是有向的
下图用红线列举顶点B到顶点D的两种路径,而顶点A到顶点B就不存在路径啦:
路径的长度是路径上的边或弧的数目。
第一个顶点到最后一个顶点相同的路径称为回路或环路。
序列中顶点不重复楚翔的路径称为简单路径,除了第一个顶点和最后一个顶点之外,其余顶点不重复出现的回路,称为简单回路或简单环。下图左侧是检点环,右侧则不是。
4.连通图
在无向图G中,如果从顶点V1 到顶点V2有路径,则称为V1 和V2是连通的,如果对于图中任意两个顶点Vi和Vj都是连通的,则称G是连通图
下图左侧不是连通图,右侧是连通图
无向图中的极大连接子图称为连通分量。
注意:
首先要是子图,并且子图是要连通的;
连通子图含有极大顶点数;
具有极大顶点数的连通子图包含依附于这些顶点的所有边
在有向图G中,如果对于每一对Vi到Vj都存在路径,则称G是强连通图。
有向图中的极大强连通子图称为有向图的强连通分量。
下图左侧并不是强连通图,右侧是。并且右侧是左侧的极大强连通子图,也是左侧的强连通分量。
所谓的一个连通图的生成树是一个极小的连通子图,它含有图中全部的n个顶点。但只有足以构成一棵树的n-1条边
如果一个有向图恰有一个顶点入度为0,其余顶点的入度为1,则是一棵树。