图有一个或多个集合,每个集合都是非空有限集合。而图有分为有向图和无向图,
基本概念
有序对通常用“<v1,v2>”表示,有向边也称为弧,起点称之为弧尾,重点称弧头,故<v1,v2>和<v2,v1>是不同的有向边。无向边通常用小括号表示,如(v1,v2),其中v1,v2没有顺序。
在无向图中若每个顶点都与除他外任何一个顶点有边,则称之为无向完全图。同理,在有向图中,若每个顶点都有通向除他外任何一点的有向图,则称之为有向完全图。故在顶点数量相同的有向完全图和无向完全图中,有向图的弧的数量是无向图的边的数量的两倍
在无向图中若(v1,v2)是其中的一条边,则称v1,v2是连通的,也称顶点v1,v2是邻接并称(v1,v2)依附于vi,v2,其中若无向图中任意两个顶点都是联通的,则称之为连通图。度,就是指依附于该顶点的变数。在有向图中度又分为出度和入度。
若在一条路径上,除去起点和终点外,彼此都是不同的,则称这条路径是简单路径。若起点和终点是同一顶点,则称这条路径是回路。同理回路也存在简单回路。
若将每条边都附上权值,则称之为网络。同理,网络也分为有向网络和无向网络。
存储结构
1. 邻接矩阵
表示用一个矩阵来表示图中顶点的关系。显然无向图的邻接矩阵是对称的,而有向图的邻接矩阵并不一定对称。
故邻接矩阵的表示为
2. 邻接表
对于一个图中的每个顶点,连城一天链,这个链就称之为该顶点的邻接表。邻接表中每个节点都有两个域,一个是用来存放与该顶点相邻的顶点的序号,另一个是用来将邻接表的所有节点链接在一起。同时,邻接表也设置两个域的表头节点:一个是顶点域,用来存放顶点的信息,另一个是指针域,用来存放只想邻接表中第一个节点的指针。因此图可以由表头和每个头结点和邻接表组成。
因此,对于无向图来说,每个节点都对应一条与头结点相关的边。对于有向图来说,每个节点都对应一条以头结点相关的弧。
注:图的邻接矩阵是惟一的。而图的邻接表却有多种,取决于插入节点的顺序以及读入边的顺序。