CONTENTS;图(Graph)G由顶点集合V(G)和边集合E(G)构成。;图的基本运算如下:;1、无向图
在图G中,如果代表边的顶点对是无序的,则称G为无向图。用圆括号序偶表示无向边。;设有两个图G=(V,E)和G=(V,E),若V是V的子集,即V?V,且E是E的子集,即E?E,则称G是G的子图。;无向图:每两个顶点之间都存在着一条边,称为完全无向图,包含有n(n-1)/2条边。;有向图:每两个顶点之间都存在着方向相反的两条边,称为有向完全图,包含有n(n-1)条边。;当一个图接近完全图时,则称为稠密图。
相反,当一个图含有较少的边数(即当en(n-1))时,则称为稀疏图。;7、权和网
图中每一条边都可以附带有一个对应的数值,这种与边相关的数值称为权。权可以表示从一个顶点到另一个顶点的距离或花费的代价。
边上带有权的图称为带权图,也称作网。;无向图:若存在一条边(i,j)?顶点i和顶点j为端点,它们互为邻接点。
有向图:若存在一条边i,j?顶点i为起始端点(简称为起点),顶点j为终止端点(简称终点),它们互为邻接点。;;若一个图中有n个顶点和e条边,每个顶点的度为di(0≤i≤n-1),则有:;10、路径和路径长度
在一个图G=(V,E)中,从顶点i到顶点j的一条路径(i,i1,i2,…,im,j)。
所有的(ix,iy)∈E(G),或者ix,iy∈E(G)
路径长度是指一条路径上经过的边的数目。
若一条路径上除开始点和结束点可以相同外,其余顶点均不相同,则称此路径为简单路径。;11、回路或环
若一条路径上的开始点与结束点为同一个顶点,则此路径被称为回路或环。;12、简单路径、简单回路或简单环
序列中顶点不重复出现的路径称为简单路径。除了第一个顶点和最后一个顶点之外,其余顶点不重复出现的回路,称为简单回路或简单环。如图所示,两个图的粗线都构成环,左侧图起点和终点都为顶点1,并且其他顶点没有重复出现,故为简单环。而右侧的环,由于有重复的顶点2,所以不是简单环。
;13、连通、连通图和连通分量
无向图:若从顶点i到顶点j有路径,则称顶点i和j是连通的??
若图中任意两个顶点都连通,则称为连通图,否则称为非连通图。
无向图G中的极大连通子图称为G的连通分量。显然,任何连通图的连通分量只有一个,即本身,而非连通图有多个连通分量。;14、强连通图和强连通分量
有向图:若从顶点i到顶点j有路径,则称从顶点i到j是连通的。
若图G中的任意两个顶点i和j都连通,即从顶点i到j和从顶点j到i都存在路径,则称图G是强连通图。;存储每个顶点的信息
存储每条边的信息;邻接矩阵是表示顶点之间相邻关系的矩阵。设G=(V,E)是具有n(n0)个顶点的图,顶点的编号依次为0~n-1。;(3)如果G是带权无向图,则:
A[i][j]=wij:若i≠j且(i,j)∈E(G)0:i=j∞:其他;;一个图的邻接矩阵表示是唯一的。
特别适合于稠密图的存储。;#defineMAXV最大顶点个数
typedefstruct
{intno; //顶点编号
InfoTypeinfo; //顶点其他信息
}VertexType;
typedefstruct //图的定义
{intedges[MAXV][MAXV]; //邻接矩阵
intn,e; //顶点数,边数
VertexTypevexs[MAXV]; //存放顶点信息
}MatGraph;;对图中每个顶点i建立一个单链表,将顶点i的所有邻接点链起来。;每个单链表上添加一个表头结点(表示顶点信息)。并将所有表头结点构成一个数组,下标为i的元素表示顶点i的表头结点。;v0;邻接表表示不唯一。;typedefstructANode
{intadjvex; //该边的终点编号
structANode*nextarc; //指向下一条边的指针
InfoTypeweight; //该边的权值等信息
}ArcNode;
typedefstructVnode
{Vertexdata; //顶点信息
ArcNode*firstarc; //指向第一条边
}VNode;
typedefstruct
{VNodeadjlist[MAXV]; //邻接表
intn,e; //图中顶点数n和边数e
}AdjGraph;;从给定图中任