一、图。
1、图的基本概念:图是由节点集合及节点间关系集合组成的一种数据结构。G = (V,E),其中,V = {
x|x(某个数据元素的集合} E = {(x,y)|x,y( V}或者E ={<x,y>|x,y( V并且path(x,y) }
其中,(x,y)表示从x到y的一条双向通路,就是(x,y)是无方向的;Path(x,y)表示从x到y的一条单向通路,就是path(x,y)是有方向的。
2、首先给出图的基本术语:
(1)节点和边:G = (V,E)V称为节点,图中的地i个节点称为vi。俩个节点之间的关联叫做边,图中的第k条边记做ek。
(2)有向图和无向图:有向图是只有方向的《x,y》代表从x指向y的一条有向边。
(3)完全图:再有n个节点的无向图中,若有n(n-1)/2 条边,就是任意两个节点之间有且只有一条边,则称此图为无向完全图。
(4)邻接节点:(u,v),u,v节点是E(G)中的一条边,则称u,v为邻接节点
(5)节点的度:节点的度是指和他相关联的边的条数。
(6)从节点1出发到达节点2的边就叫做路径。
(7)权:有些图的边附带信息我们称这些为权。
(8)路劲长度:对于带权的图,路径长度就是这些权相加的结果,对于不带权的图,路径长度就是就是这些边的个数。
(9)生成树:一个连通图的最小连通子图称作该图的生成树。
3、对于图的操作集合:
(1)初始化initiate(G,n),初始化图G,n为节点的个数。
(2)插入节点insertvertex(G,vertex);在图G中插入节点vertex。
(3)插入边:insertedge(G,v1,v2,weight);在图G中插入边<v1,v2>边V1和V2的权值为weight
(4)删除边deleteedge(G,v1,v2),删除图G中的边v1,v2
(5)删除节点deletevertex(G,vertex)删除图G中的节点vertex以及与改节点相关的所有边。
4、图的存储结构:从图的定义可知,图的信息包括俩部分,节点的信息和节点间关系的边的信息。
节点信息的描述问题是一个简单的表存储结构问题。
二、图的存储结构:
1、邻接矩阵存储结构:
无向图的邻接矩阵一定是对称矩阵。有向图的邻接矩阵一般是非对称矩阵。
邻接矩阵使之用矩阵来表示图。他是采用矩阵来描述图中顶点之间的关系。假设图中顶点数
为n,则邻接矩阵定义为:
A[i][j] =1(若是vi和vj之间有弧或者边的存在)
0 (vi和vj之间没有弧或者边的存在)