》一笔画:
-凡是由偶点组成的连通图,一定可以一笔画成。画时可以把任一偶点为起点,最后一定能以这个点为终点画完此图。
-凡是只有两个奇点的连通图(其余都为偶点),一定可以一笔画成。画时必须把一个奇点为起点,另一个奇点终点。
》基本概念:
-图的抽象数据类型
ADT Graph{
数据对象V:数据元素的集合,顶点集。
数据关系R:R={VR},VR={<v,w>|v,w∈V,且P(v,w),<v,w>表示从v到w的弧}。
基本操作:
CreateGraph(&G,V,VR) ; //构造图
DFSTraverse(G,V,visit()); //深度遍历图
BFSTraverse(G,V,visit()); //广度遍历图
-任意两个结点之间的关系是任意的,图中任意两个数据元素之间都可能相关。
-顶点:图的数据元素。
-V是顶点的集合,VR是两个顶点之间的关系的集合。
-有向图:<v,w>∈VR,v为弧尾、w为弧头。
-无向图:若<v,w>∈VR,必有<w,v>∈VR,用(v,w)表示。
-完全图:每一个顶点之间有且只有一条边的相连。
-无向完全图:有n(n-1)/2条边。
-有向完全图:有n(n-1)条弧。
-稀疏图:边或弧很少的图。
-稠密图:边或弧较多的图。
-子图:G=(V,{E}),G`=(V`,{E`}),若V`∈V,且E`∈ E,则称G`为G的子图。
-邻接点:对于无向图,若(v,v`)∈E,则称顶点v和v`互为邻接点,即v和v`相邻接,并称边(v,v`)关联于顶点v和v`,或称(v,v`)与顶点v和v`相关联。
-度:一个顶点v的度是与它相关联的边的条数,记做TD(v)。
-入度:是以v为终点的弧的条数,记做ID(v)。
-出度:是以v为始点的弧的条数,记做OD(v)。
-在一个图中,所有顶点的度数之和等于图的边数的2倍。
-在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和。
-路径:图G=(V,E)中,若存在一个顶点序列(v=vi,0,vi,1,…,vi,m=v`),其中(vi,j-1,vi,j)均属于E,则称顶点vi到vj 存在一条路径。
-简单路径:若一条路径上除了vi 和vj 可以相同外,其余顶点均不相同,则称此路径为一条简单路径。
-简单回路(简单环):起点和终点相同的路径称为简单回路或简单环。
-连通:在无向图G中,若两个顶点vi和vj之间有路径存在,则称vi和vj是连通的。
-连通图:若G中任意两个顶点都是连通的,则称G为连通图。
-连通分量:无向图的极大连通子图称为的连通分量。任何连通图的连通分量只有一个,即是其自身,非连通的无向图有多个连通分量。
-强连通图:有向图中, 若对于每一对顶点vi和vj, 都存在一条从vi到vj和从vj到vi的路径,则称此图是强连通图。
-强连通分量:极大强连通子图叫做强连通分量。
-生成树:一个连通图的生成树是它的极小连通子图,含有图的全部顶点,在n个顶点的情形下,有n-1条边。
-不予讨论的图:包含顶点到其自身的边;一条边在图中重复出现。
》图的存储结构
#define INFINITY INT_MAX
#defineMAX_VERTEX_NUM 20
typedefenum{DG,DN,AG,AN} GraphKind;