相关概念
无向
无向边:若顶点Vi到Vj之间的边没有方向,则称这条边为无向边,用无序偶对(Vi,Vj)表示<br>
无向图:图中任意两顶点的边都是无向边,则称该图为无向图<br>
无向完全图:在无向图中,若任意两个顶点之间都存在边,则称该图为无向完全图<br>
顶点的度:顶点v的度是和顶点v相关的边的数目(记为TD(v))。边数等于各顶点度之和的一半<br>
连通图:如果从顶点v到v'有路径,则称v和v'是连通的,如果图中任意两个顶点都是连通的,则称图是连通图<br>
连通分量
无向图中的极大连图子图称为连通分量<br>
连通分量要求:<br>1.要是子图<br>2.子图要是连通的<br>3.连通子图含有极大顶点数<br>4.具有极大顶点数的连通子图包含依附于这些顶点的所有边
生成树:无向图中连通且n个顶点和n-1条边的叫生成树<br>
有向
有向边:若顶点Vi到Vj之间的边有方向,则称这条边为有向边,也称为弧,用有序偶对<Vi,Vj>,Vi称为弧尾,Vj称为弧头<br>
有向图:图中任意两顶点的边都是有向边,则称该图为有向图<br>
有向完全图:在有向图中,若任意两个顶点之间都存在方向互为相反的两条弧,则称该图为有向完全图<br>
入度:以顶点V为头的弧的数量称为,顶点V的入度(记为ID(v))<br>
出度:以顶点V为尾的弧的数量称为,顶点V的出度(记为ID(v))<br>
强连通图:是指在有向图G中,如果对于每一对vi、vj,vi≠vj,从vi到vj和从vj到vi都存在路径,则称G是强连通图。
定理:一个有向图是强连通的,当且仅当G中有一个回路,它至少包含每个节点一次
强连通分量:有向图中的极大强连通子图称做有向图的强连通分量
有向树:有向图中一个顶点入度为0的,其余顶点入度为1的称为有向树<br>
生成森林:一个有向图的生成森林由若干个有向树组成,含有图中所有顶点,但只有足以构成若干棵不相交的有向树的弧<br>
简单图:在图中,若不存在顶点到其自身的边,且同一条边不重复出现,则称这样的图为简单图<br>
稀疏图:有很少边或弧的图<br>
稠密图:有很多边或弧的图
权:与图的边或相关的数称为权
网:带权的图通常称为网<br>
子图:假设有两个图G=(V,{E}),G'=(V',{E'}),如果G'⊆G且E'⊆E,则称G'为G的子图<br>
路径长度:路径上边或弧的数目
回路(或环):第一个顶点到最后一个顶点相同的路径称为回路<br>
简单路径:序列中顶点不重复出现的路径<br>
简单回路:出第一个顶点和最后一个顶点外,其他顶点不重复出现的回路<br>
存储结构<br>
邻接矩阵
图的邻接矩阵就是用两个数组来表示图,一个一维数组存储图中顶点集合,一个二维数组(邻接矩阵)存储图中边或弧的关系<br>
邻接表<br>
邻接表是将数组和链表结合起来的存储方法
1.图中的顶点用一个一维数组存储,对于顶点数组中,每个元素还需要存储指向第一个邻接点的指针,以便查询边的信息<br>
2.图中每个顶点Vi的邻接点构成一个线性表,由于邻接点个数不定,所以用单链表存储,无向图称为顶点Vi的边表,有向图称为以顶点Vi为弧尾的出边表<br>
十字链表<br>
1.顶点数组中每个元素包含,data,firstin,fristout<br>
2.单链表中每个结点包含:tailvex,headvex,headlink,taillink<br>
邻接多重表<br>
重新定义邻接表的边表结点结构为(ivex,ilink,jvex,jlink),其中ivex和jvex表示依附某条边的两个顶点在顶点数组中的下标,ilink指向依附顶点ivex的下一条边,jlink指向依附顶点jvex的下一条边<br>
边集数组<br>
由两个一维数组组成,一个一维数组存储图中顶点集合,另一个数组存储边的信息,这个边数组的每个元素由一条边的起始下标,终点下标和权重组成<br>