图的基本概念
图:
图由节点的有穷集合V和边的集合E组成。为了与树形结构进行区别,在图结构中常常将节点成为顶点,边是顶点的有序偶对。若两个顶点之间存在一条边,则表示这两个顶点具有相邻关系。
有向图和无向图:
a是有向图,即每条边都有方向;b是无向图,即每条边都没有方向
弧:
在有向图中,通常将边称为弧,含箭头的一端称为弧头,另一端称为弧尾,记作<vi,vj>,他表示从顶点vi到顶点vj有一条边。
顶点的度、入度和出度
在无向图中,边记作(vi,vj),它等价于在有向图中存在<vi,vj>和<vj,vi>两条边。与顶点v相关的边的条数称为顶点v的度。在图b中,顶点D的度为2.在有向图中,指向顶点v的边的条数称为顶点的入度,由顶点v发出的边的条数称为顶点v的出度。在图a中,顶点C的入度为0、出度为2,顶点D的入度为1、出度为1。
有向完全图和无向完全图
若有向图中有n个顶点,则最多有n(n-1)条边(即图中任意两个顶点之间都有两条边相连),将具有n(n-1)条边的有向图称为有向完全图。在无向图中有n个顶点,则最多有n(n-1)/2条边(即图中任意两个顶点之间都有一条边相连),将具有n(n-1)/2条边的无向图称为无向完全图。
**路径和路径长度 **
在一个图中,路径Wie相邻顶点序偶所构成的序列。路径长度是指路径上边的数目。在图a中,<C,B>、<B,A>是一条路径,长度为2;在图b中(D,C)、(C,B)、(B,A)是一条路径,长度为3.
权和网
图中每条边都可以附有一个对应的数,这种与边界相关的数称为权。权可以表示从一个顶点到另一个顶点的距离或者花费的代价,边上带有权的图称为带权图,也称为网
图的存储结构
邻接矩阵
邻接矩阵是表示顶点之间相邻关系的矩阵。设G=(V,E)是具有n个顶点的图,顶点序号依次为0,1,……,n-1,则G的邻接矩阵是具有如下定义的n阶方阵A:
A[i][j]=1表示顶点i与顶点j邻接,即i与j之间存在边或者弧
A[i][j]=0表示顶点i与顶点j不邻接
邻接矩阵是图的顺序存储结构,有邻接矩阵的行数或者列数克制图中的顶点数。对于无向图,邻接矩阵是对称的,矩阵中1的个数为图中总边数的两倍,矩阵中第i行dij列的元素之和即为顶点i的度。对于有向图,矩阵中1的个数为图的边数,矩阵中第i行的元素即为顶点i的出度,第j列元素之和即为顶点j的入度
下列图一为无权图,图二为有权图
邻接表
邻接表是图的一种链式存储结构。所谓邻接表就是对图中每个顶点i建立一个单链表,每个单链表的第一个结点存放有关顶点的信息,把这一结点看做链表的表头,其余结点存放有关边的信息,因此,邻接表有单链表的表头形成的顶点和点链表其余结点形成的边表两部分组成。一般的顶点表存放顶点信息和指向第一个边结点指针,边表结点存放与当前顶点相邻接顶点的序号和指向下一个边结点的指针