数据结构-----图
什么是图
图是数据结构中一种多对多的结构。而图又分为有向图和无向图。
接下来我们将会介绍两种图的概念和存储方式
有向图
若E是有向边(也称弧)的有限集合时,则图G为有向图。弧是顶点的有序对,记为<v, w>,其中v,w是顶点,v称为弧尾,w称为弧头,<v,w>称为从顶点v到顶点w的弧,也称v邻接到w,或w邻接自v。
无向图
若E是无向边(简称边)的有限集合时,则图G为无向图。边是顶点的无序对,记为(v, w)或(w,v),因为(v,w)=(w,v), 其中v,w是顶点。可以说顶点w和顶点v互为邻接点。边(v, w)依附于顶点w和v,或者说边(v, w)和顶点v, w相关联。
连通分量
在无向图中,若从顶点v vv到顶点w ww有路径存在,则称v vv和w ww是连通的。若图G GG中任意两个顶点都是连通的,则称图G GG为连通图,否则称为非连通图。无向图中的极大连通子图称为连通分量。若一个图有n nn个顶点,并且边数小于n − 1 n-1n−1,则此图必是非连通图。
强联通分量
在有向图中,若从顶点v vv到顶点w ww和从顶点w ww到项点v vv之间都有路径,则称这两个顶点是强连通的。若图中任何一对顶点都是强连通的,则称此图为强连通图。有向图中的极大强连通子图称为有向图的强连通分量。
顶点的度、入度和出度
图中每个顶点的度定义为以该项点为一个端点的边的数目。
对于无向图,顶点v的度是指依附于该顶点的边的条数,记为T D ( v ) TD(v)TD(v)。
在具有n个顶点、e 条边的无向图中,即无向图的全部顶点的度的和等于边数的2倍,因为每条边和两个顶点相关联。
对于有向图,顶点v vv的度分为入度和出度,入度是以顶点v vv为终点的有向边的数目,记为I D ( v ) ID(v)ID(v); 而出度是以顶点v vv为起点的有向边的数目,记为O D ( v ) OD(v)OD(v)。顶点v vv的度等于其入度和出度之和,即T D ( v ) = I D ( v ) + O D ( v ) 。 TD(v) = ID(v) + OD(v)。TD(v)=ID(v)+OD(v)。
在具有n个顶点、e 条边的有向图中即有向图的全部顶点的入度之和与出度之和相等,并且等于边数。这是因为每条有向边都有一个起点和终点。
边的权和网
在一个图中,每条边都可以标上具有某种含义的数值,该数值称为该边的权值。这种边上带有权值的图称为带权图,也称网。
图的存储方式
领接矩阵表示法
图没有顺序映像的存储结构,但可以借助数组来表示数据元素之间的关系。
建立一个顶点表(记录各个顶点信息)和一个邻接矩阵(表示各个顶点之间关系)
顶点表:(a,b,c,d)
邻接矩阵:
分析1:无向图的邻接矩阵是对称的;
分析2:顶点i 的度=第i 行 (列) 中1 的个数;
特别:完全图的邻接矩阵中,对角元素为0,其余全1。
有向带权图和它的邻接矩阵:
有向图的邻接矩阵可能是不对称的。
邻接矩阵法优点:容易实现图的操作,如:判断顶点之间是否有边(弧)、找顶点的邻接点等等。
邻接矩阵法缺点:首先n个顶点需要N×N个单元存储边(弧);空间效率为O(n2)。对稀疏图而言尤其浪费空间。其次,矩阵结构是静态的,其大小N需要预先估计,然后创建的矩阵。然而,图的规模往往是动态变化的,N的估计过大会造成更多的空间浪费,如果估计过小则经常会出现空间不够用的情况。
领接表法
邻接矩阵的空间效率之所以低,是因为其中大量的单元所对应的边有可能并未在图中出现,这是静态数组结构不可避免的问题。既然如此,则可以将静态的存储结构改为动态的链式存储结构。按照这一思路可以得到图的另一种表示形式,它其实是对邻接矩阵法的一种改进,即邻接表。
每个单链表附设一个头结点(设为2个域),存vi信息;
每个单链表的头结点用顺序存储结构存储。
对每个顶点vi 建立一个单链表,把与vi有关联的边的信息(即度或出度边)链接起来,表中每个结点都设为3个域;
对于n个顶点e条边的无向图,邻接表中除了n个头结点外,只有2e个表结点,空间效率为O(n+2e)。若是稀疏图(e<<n2),则比邻接矩阵表示法O(n2)省空间。
顶点vi的度恰为顶点vi的邻接表中边表结点的个数;
对于n个顶点e条边的无向图,邻接表中除了n个头结点外,只有2e个表结点,空间效率为O(n+2e)。若是稀疏图(e<<n2),则比邻接矩阵表示法O(n2)省空间。
顶点vi的度恰为顶点vi的邻接表中边表结点的个数;
邻接表的优点:空间效率高;容易寻找顶点的邻接点;
邻接表的缺点:判断两顶点间是否有边或弧,需搜索两结点对应的单链表,没有邻接矩阵方便。
邻接表与邻接矩阵联系:邻接表中每个链表对应于邻接矩阵中的一行,链表中结点个数等于一行中非零元素的个数。
用途:邻接矩阵多用于稠密图的存储(e接近n(n-1)/2);而邻接表多用于稀疏图的存储(e<<n2)