1、图的定义及表示
定义:图是一集元素(顶点集)和各元素之间的关系(边集)
表示:图G = ( V , E) 这个二元组中,V表示点集,E表示边集
例如: V = {v1,v2,v3,v4} E = {(v1,v2),(v2,v3),(v1,v4)}
可见,边是由它所连接的两个顶点确定的
2、相关概念、术语
阶:图G的顶点的数目
环边:两端点重合
重边:直接连接两个顶点u ,v, 有两条,或者两条以上的边
简单图:无环边,无重边 的 图
完全图:两个条件(1)任何两个顶点之间都有一条边 (2) 简单图
平凡图:只有一个顶点,边集为空
空图:边集为空
度:顶点关联的边的数目,是每个顶点都有的一个属性
最大度:图G所有顶点度的最大值
最小度:同理
正则图:图G所有顶点的度都相等
补图:和图G拥有同一顶点集,但是不包含图G包含的任何边,除此之外,把该顶点集其他的所有可能的边都包含在内。(类比 补集的概念)
子图:图H是图G 的子图,则图H所有的顶点都包含在图G的顶点集中,边也同理
生成子图:图H是图G 的子图,并且 图H 拥有 和图G相同的顶点集
点导出子图:从图G中抽出一部分顶点作为 子图的顶点集,以这些顶点做端点的边 作为 边集
边导出子图:从图G中抽出一部分边作为 子图的边集,这些边所关联的顶点 作为子图的顶点集
路:顶点不重复出现的,边也不重复出现的,点边接续交替出现的序列。
环(圈):中途点不重复的,边也不重复的,起点和终点相同,点边接续交替出现的序列
路和环的长度:边的数目
最短路(距离):顶点u 和 v 之间,具有最小长度的路
奇圈:简单图中,长度为奇数的圈
偶圈:简单图中,长度为偶数的圈
简单图 围长: 最短圈的长度
简单图 周长:最长圈的长度
二部图:对图G顶点集的一个划分,划分为两个非空子集X,Y后,图G任意一条边的两个顶点,分别来自于这两个非空子集
完全二部图:子集X的每个顶点与子集Y的所有顶点都有边的连接
联通性:图G任意两个顶点之间 都有路
3 、同构:
顶点和边都一一对应,并且连接关系完全相同,只是顶点和边的名称不同,成为同构。
同构是一种等价关系,可将n阶图分为若干等价类(满足反身性,对称性,传递性),同一类中的图具有相同的结构,可以看作同一个图(忽略名称的差异)
两图同构需要满足的一些必要条件:(1)阶必须相等(2)边数必须相等(3)有相同的环边、重边、圈的状态(4)对应顶点的度相等
同构判断:一般要构造顶点间的一一映射,然后考察邻接关系是否相同。目前还没有简便的办法。判断不同构相对比较容易,只要在必要条件中,任意找出不满足的部分,则不同构成立
4、图的中心与中位点:
顶点有赋权的图
(1)我们的研究对象是这样的一个图:
图G是一个赋权图,每条边上都有一个非负权值,每个顶点也有一个非负权值,d(u,v)是考虑边赋权下,u,v之间的最短路
(2) 概念
图G的半径 radius:(1)找出任意顶点到其他所有顶点最短路的最大值 (2)在这些最大值中,取最小值
图G的直径 diameter :(1)找出任意顶点到其他所有顶点最短路的最大值 (2)在这些最大值中,取最大值
顶点u的离心率: e(u) = max q(v)*d(u,v) 其中,v是图G中任意一个顶点 ,q(v)为顶点v的权值
(1)找出顶点u到其他所有顶点的最短路,乘以对应顶点的权值 (2)在这些乘积中,取最大值
图G的中心(center):具有最小离心率的点
图G的中位点(中值,重心)median:设g(u) = 其中,q(v)为顶点v的权值。min g(u) 的顶点就是中位点
图的中心,中位点一般并不唯一, 中心、中位点也不一定相同
顶点无赋权的图
(1)我们的研究对象是这样的一个图:
图G'是一个赋权图,每条边上都有一个非负权值,d(u,v)是考虑边赋权下,u,v之间的最短路
(2) 概念
顶点u的离心率: e(u) = max d(u,v) 其中,v是图G中任意一个顶点
(1)找出顶点u到其他所有顶点的最短路 (2)取最大值
图G'的半径 radius:所有顶点离心率的最小值
图G'的直径 diameter :所有顶点离心率的最大值
图G'的中心(center):具有最小离心率的点
求图G中心点的算法:
输入:赋权图G,各顶点的权q(v)
输出: G的中心
第一步:利用最短路法求出G中所有顶点之间的距离,得到距离矩阵
第二步:对矩阵的每一列,乘以对应顶点的权值;然后,找出每行中乘积最大的那个值,即是该行对应顶点的离心率
第三步:比较所有顶点的离心率,找出离心率最小的点(不一定唯一)
第四步:输出这些点
求图G的中位点的算法 :
输入:赋权图G,各顶点的权q(v)
输出: G的中位点
第一步:利用最短路法求出G中所有点之间的距离,得到距离矩阵
第二步:对矩阵的每一列乘以对应顶点的权值;然后,对每一行求和,得到g(u) =
第三步:比较g(u)所有值,找到最小值点(可能不唯一)
第四步:返回这些点
5、图的矩阵表示
研究对象:图G = (V,E),V={v1,v2,...vn} , E={e1,e2,e3,...,em}
(1)关联矩阵M(G):以V中各顶点为行,E中各边为列,构造的矩阵。矩阵的元素表示 顶点和边的关联次数(关联,就是顶点是该边的端点)
(2)邻接矩阵A(G):分别以V中各顶点为行 和 列 ,构造的矩阵。矩阵元素表示 顶点和顶点之间相邻的次数(相邻:两顶点共同作为一条边的端点)
(3)关于关联矩阵和邻接矩阵的一些特性:
a)关联矩阵
简单图的关联矩阵,元素只有0和1, 元素超过1则说明对应的边是环边
每列元素的和,都是2
每行元素的和,等于对应顶点的度
b)邻接矩阵
邻接矩阵是对称矩阵
每行(或者列)元素之和,等于对应顶点的度
简单图的邻接矩阵,元素只有0和1,元素超过1则说明两顶点之间有重边
简单图的邻接矩阵,对角线元素均为0,如果不全为零则说明有环
(4)关联矩阵和邻接矩阵的一些推论
a) A是n阶图G的邻接矩阵, (0
代表从顶点i到顶点j ,所有长度为m的途径的数目。 因此,在不断乘以矩阵A的过程中,记录了所有的每两个顶点间长度为m的路径的数目
b) 的对角线元素 的值,等于对应的顶点i的度
的对角线元素 的值,等于包含顶点的三角形数目的2倍
图G中所有的三角形的数目,等于 的对角线元素之和除以6(因为每个三角形3个顶点,相当于每个三角形被记录了3 次,再乘以每个将包含顶点的三角形数目记录了2次,所以要除以6)
c) 连通图G,图中任意不同的两个顶点 , 的距离等于,使得 中 的最小的整数m。(这个结论很明显,直到m,顶点 , 才有了最小长度的途径,那么它也一定是最短路)
d) 从不同的两个顶点 , ,长度不超过k的途径的数目,等于 的元素 的值
e) A 是n(n>=3) 阶图G的邻接矩阵, , 则A是联通图的充要条件是 R中每个元素都不为0.
证:必要性:显然,若A是连通的,则每两个相异元素之间都是有长度为l 的路,R非对角线元素均不为零;另外, 的对角线元素 的值,代表的是每个顶点的度,也都是非零的,所以R中的元素必然非0.
充分性:R中 不为0 ,意味着不同的两个顶点 , 之间至少有长度为 的1条途径,也就是说,至少有长度小于等于k的最短路。所以A是联通的
f) G是点和边都无权的连通图,A是G邻接矩阵, ,求G的顶点 的离心率 ,等于使得第i行没有零元素的最小k值。
证:很显然,求离心率,要找的是顶点所有最短路的最大值。最小k值,使得第i行某些元素刚好不为零,这个值一定是顶点到该点的最短路(因为没有小于长度k的途径,k就是最小的途径)。显然,那些早已经变成非0的元素对应的顶点到的最短路一定是小于k的。 因此,这个 最小k值就是顶点的离心率了
g) G是连通图,A是G邻接矩阵, ,求G的半径rad(G) ,等于使得矩阵中,至少有一行没有零元素的最小k值。(也就是,在k逐步增加的过程,第一次出现某行(或者某些行)没有零元素的k值)
证:不妨设图G所有点的权值均为1,这样就可以借助离心率的概念了。此时,半径rad(G)是所有点离心率的最小值,当k增加的过程中,第一次元素全部非零的行,获得了其对应元素的离心率(当时的k值)。由于我们要得到的是所有点离心率的最小值,只要找到第一次有某些行出现所有元素非零时的k值,这个k值一定是离心率的最小值。证毕
h) G是连通图,A是G邻接矩阵, ,等于使得矩阵没有零元素的最小k值。
证:显然,求直径diam(G) 就是求所有顶点离心率的最大值。因此只要找到使得所有行都没有零元素的最小k值,这个k值,就是所有离心率的最大值了