图的定义与基本术语
图Graph的定义
图是一种网状数据结构,形式化定义如下:
集合DataObject中的所有元素具有相同的特性,V中数据元素常称为顶点(vertex),VR是两个顶点之间关系的集合,P(x,y)表示x和y之间有特定的关联属性P。
若<x,y>∈R <x,y>,则 <x,y>表示从顶点x到顶点y的一条弧arc,并称x为弧尾(tail)或起始点,称y为弧头(head)或终端点,此时图中的边是有方向的,称这样的图为有向图。
若<x,y>∈VR ,且有<y,x>∈VR ,即VR是对称关系,这时以无序对(x,y)来代替两个有序对,表示x和y之间的一条边(edge),称这样的图为无向图。
ADT
一个顶点的多个邻接点之间谁先谁后实际上是没有规定的。但是,如果这个图使用邻接矩阵存储,存储上就有先后之分了,这里的First和Next指的就是存储上的关系。
边数等于1/2度数
完全图一定是连通图
图的存储结构
一个一维数组,一个二维数组
对于有向图:
(1,2) (1,3) (1,4) … 是顶点1的出度。行和即出度。
(2,1) (3,1) (4,1) … 是顶点1的入度。列和即入度。
注意:
1)
节点位置序号:0 1 2 3 4 …
节点内容:1 2 3 4 5 …
2)
表头节点表顺序存储,后边的顶点单链表链式存储
3)
顶点单链表的先后次序由读入边的次序决定,也由顶点单链表头插还是尾插决定
4)
有向图每条边被存放一次,无向图一条边被存放两次
如果是网怎么表示?
需要再加上一个权值域
黄色箭头描述邻接表,灰色箭头描述逆邻接表
邻接多重表针对无向图