1、第十六章 图的概念与表示,16.1 图的基本概念 16.2 链(或路)与圈(或回路) 16.4 图的矩阵表示,退出,16.1 图的基本概念,什么是图?可用一句话概括,即:图是用点和线来刻划离散事物集合中的每对事物间以某种方式相联系的数学模型。 因为它显得太抽象,不便于理解,所以有必要给出另外的回答。下面便是把图作为代数结构的一个定义。,定义16.1.1 一个图G定义为一个三元组,记作G=。其中V是个非空有限集合,它的元素称为结点;E也是个有限集合,其元素称为边,而是从E到V中的有序对或无序对的映射。,由定义可知,图G中的每条边都与图中的无序或有序结点对相联系的。若边eE与无序结点对vi,vj相
2、联系,则(e)=vi,vj,这时边e称为无向边,有时简称为边;若边eE与有序结点对相联系,则(e)=,此时边e称为有向边或弧,vi称为弧e的始结点,vj称为弧e的终结点。,若结点vi与vj由一条边(或弧)e所联结,则称结点vi和vj是边(或弧)e的端结点;同时也称结点vi与vj是邻接结点,记作vi adj vj;否则为非邻接结点,记作vi nadj vj;也说边(或弧)e关联vi与vj或说结点vi与vj关联边(或弧)e。关联同一个结点的两条边或弧称为邻接边或弧。而联结一结点与它自身的一条边,称为环。环的方向是无意义的。,如果把图G中的弧或边总看作联结两个结点,则图G可简记为G=,其中V是非空结
3、点集,E是联结结点的边集或弧集。 定义16.1.2 在图G=中,如果每条边都是弧,该图称为有向图;若每条边都是无向边,该图G称为无向图;如果有些边是有向边,另一些边是无向边,图G称为混合图。,定义16.1.3 在图G=中,如果任何两结点间不多于一条边(对于有向图中,任何两结点间不多于一条同向弧),并且任何结点无环,则图G称为简单图;若两结点间多于一条边(对于有向图中,两结点间多于一条同向弧)图G称为多重图,并把联结两结点之间的多条边或弧,称为平行边或弧,平行边或弧的条数称为重数。,定义16.1.4 给每条边或弧都赋予权的图G=,称为加权图,记为G=,其中W表示各边之权的集合。 加权图在实际中有
4、许多应用,如在输油管系统图中权表示单位时间流经管中的石油数量;在城市街道中,权表示表示通行车辆密度;在航空交通图中,权表示两城市的距离等等。,定义16.1.5 在无向图G=中,如果V中的每个结点都与其余的所有结点邻接,即 (vi)(vj)(vi,vjVvi,vjE) 则该图称为无向完全图,记作K|V|。若|V|=n,该图记作Kn。,在一个图中,如果一个结点不与任何其他结点邻接,则该结点称为孤立结点。仅有孤立结点的图称为零图。显然,在零图中边集为空集。若一个图中只含一个孤立结点,该图称为平凡图。,定义16.1.6 在有向图G=中,对任意结点vV,以v为始结点的弧的条数,称为结点v的出度,记为d+
5、(v);以v为终结点的弧的条条数,称为v的入度,记作d-(v);结点v的出度与入度之和,称为结点的度数,记为d(v),显然d(v)=d+(v)+d-(v)。 对于无向图G=,结点vV的度数等于联结它的边数,也记为d(v)。若v点有环,规定该点度因环而增加2。,显然,对于孤立结点的度数为零。 此外,对于无向图G=,记 (G)或=maxd(v)|vV (G)或=mind(v)|vV 它们分别称为图G的最大度和最小度。 关于无向图中的结点的度,欧拉给出一个定理,这是图论中的第一个定理。,定理16.1.1 给定无向图G=,则定理16.1.2 在任何无向图中,奇度结点的数目为偶数。,定义16.1.7 在
6、无向图G=中,如果每个结点的度是k,即(v)(vVd(v)=k),则图G称为k度正则图。 显然,对于k度正则图G,(G)=(G)=k。,定义16.1.8 给定无向图G1=和G2=,于是 (1) 如果V2V1和E2E1,则称G2为G1的子图,记为G2G1。 (2) 如果V2V1,E2E1且E2E1,则称G2为G1的真子图,记为G2G1。 (3) 如果V2=V1,E2E1,则称G2为G1的生成子图,记为G2 G1。,定义16.1.9 设图G2=是图G1=的子图。若对任意结点u和v,如果u,vE1,有u,vE2,则G2由V2唯一地确定,并称G2是结点集合V2的诱导子图,记作或GV2;如果G2无孤立结
7、点,且由E2所唯一确定,则称G2是边集E2的诱导子图,记为或GE2。,定义16.1.10 设图G1=和图G2=是图G=的子图。如果E2=E-E1且G2=,则称图G2是相对于图G的子图G1的补图。,定义16.1.11 给定图G=,若存在图G1=,并且E1E=和图是完全图,则G1称为相对于完全图的G的补图,简称G1是G的补图,并记为G1= 。 显然,G与 互为补图。,在图的定义中,强调的是结点集、边集以及边与结点的关联关系,既没有涉及到联结两个结点的边的长度、形状和位置,也没有给出结点的位置或者规定任何次序。因此,对于给定的两个图,在它们的图形表示中,即在用小圆圈表示结点和用直线或曲线表示联结两个
8、结点的边的图解中,看起来很不一样,但实际上却是表示同一个图。因而,引入两图的同构概念便是十分必要的了。,定义16.1.12 给定无向图(或有向图)G1=和G2=。若存在双射fV2V1,使得对任意v,uV1,有u,vE1f(u),f(v)E2(或E1E2)则称G1同构于G2,记为G1G2。 显然,两图的同构是相互的,即G1同构于G2,G2同构于G1。 由同构的定义可知,不仅结点之间要具有一一对应关系,而且要求这种对应关系保持结点间的邻接关系。对于有向图的同构还要求保持边的方向。,一般说来,证明两个图是同构的并非是轻而易举的事情,往往需要花些气力。请读者证明图16.1.13中两个图是同构的。,根据
9、图的同构定义,可以给出图同构的必要条件如下: (1) 结点数目相等; (2) 边数相等; (3) 度数相同的结点数目相等。,但这仅仅是必要条件而不是充分条件。 满足上述三个条件,然而并不同构。因此在(a)中度数为3的结点x与两个度数为1的结点邻接,而(b)中度数为3的结点y仅与一个度数为1的结点邻接。 寻找一种简单有效的方法来判定图的同构,至今仍是图论中悬而未决的重要课题。,人民邮电出版社,高等学校21世纪教材,例如图10.1.14中(a)与(b),图 10.1.13,返回,返回,图 1.1.14,16.2 链(或路)与圈(或回路),在无向图(或有向图)的研究中,常常考虑从一个结点出发,沿着一
10、些边(或弧)连续移动而达到另一个指定结点,这种依次由结点和边(或弧)组成的序列,便形成了链(或路)的概念。,定义16.2.1 给定无向图(或有向图)G=。令v0,v1,vmV,边(或弧)e1,e2,emE,其中vi-1,vi是ei的结点,交替序列v0e1v1e2v2emvm称为连接v0到vm的链(或路)。v0和vm分别称为链(或路)的始结点和终结点,而边(或弧)的数目称为链(或路)的长度。若v0=vm时,该链(或路)称为圈(或回路)。,定义16.2.2 在一条链(或路)中,若出现的边(或弧)都是不相同的,称该链(或路)为简单链(或简单路);若出现的结点都是不相同的,称该链(或路)为基本链(或基
11、本路)。 显然,每条基本链(或基本路)必定是简单链(或简单路)。,定义16.2.3 在一圈(或回路)中,若出现的每条边(或弧)恰好一次,称该圈(或回路)为简单圈(或简单回路);若出现的每个结点恰好一次,称该圈(或回路)为基本圈(或基本回路)。 可以看出,对于简单图来说,链(或路)和圈(或回路)能够仅用结点序列表示之。,定理16.2.1 在一个图中,若从结点vi到结点vj存在一条链(或路),则必有一条从vi到vj的基本链(或基本路)。 定理16.2.2 在一个具有n个结点的图中,则 (1) 任何基本链(或路)的长度均不大于n-1。 (2) 任何基本圈(或路)的长度均不大于n。,定义16.2.4
12、在一个图中,若从vi到vj存在任何一条链(或路),则称从vi到vj是可达的,或简称vi可达vj。 为完全起见,规定每个结点到其自身是可达的。 对于无向图G来说,不难证明结点间的可达性是结点集合上的等价关系。因此它将结点集合给出一个划分,并且划分中的每个元素形成一个诱导子图;两结点之间是可达的当且仅当它们属于同一个子图,称这种子图为图G的连通分图,图G的连通分图的个数,记为(G)。,定义16.2.5 若图G只有一个连通分图,则称G是连通图;否则,称图G为非连通图或分离图。 在图的研究中,常常需要考虑删去与增加结点、结点集、边和边集(或弧集)的问题。所谓从图G=中删去结点集S,是指作V-S以及从E
13、中删去与S中的全部结点相联结的边而得到的子图,记作G-S;特别当S=|v|时,简记为G-v;所谓从图G=中删去边集(或弧集)T,是指作E-T,且T中的全部边所关联的结点仍在V中而得到的子图,记为G-T;特别当T=e时,简记作G-e。,所谓图G=增加结点集S,是指作VT以及向E中并入S中、S与V中所成的边而得到的图,记作G+S;特别当S=v时,简记为G+v;图G=增加边集(或弧集)T是指作ET所得到的图,记作G+T,这里T中全部边(或弧)的关联结点属于V。,定义16.2.6 给定连通无向图G=,SV。若(G-S)(G),但TS有(G-T)=(G),则称S是G的一个分离结点集。若图G的分离结点集S
14、=v,则称v是G的割点。 类似地可定义图G的分离边集T;若图G的分离边集T=e,则称e是G的割边或桥。,对于连通的非平凡图G,称(G)= |S|S是G的分离结点集为图G的结点连通度,它表明产生不连通图而需要删去结点的最少数目。于是,对于分离图G,(G)=0;对于存在割点的连通图G,(G)=1。,类似地定义边连通度(G)= |T|T是G的分离边集,它表明产生不连通图而需要删去边的最少数目。可见,对于分离图G,(G)=0;对于完全图G,(G)=0;对于图K1,(K1)=0;对于存在割边的连通图G,(G)=1;对于完全图Kn,(Kn)=n-1。,下面是由惠特尼(H.Whitney)于1932年得到的
15、关于结点连通度、边连通度和最小度的不等式联系的定理: 定理16.2.3 对于任何一个无向图G,有(G)(G)(G)。 定理16.2.4 一个连通无向图G中的结点v是割点存在两个结点u和w,使得联结u和w的每条链都经过v。,定理16.2.5 一个连通无向图G中的边e是割边存在两个结点u和w,使得联结u与w的每条链都经过e。 下面再给出一个判定一条边是割边的充要条件。 定理16.2.6 连通无向图G中的一条边e是割边e不包含在图的任何基本圈中。,对于有向图而言,结点间的可达性不再是等价关系,它仅仅是自反的和传递的。一般说来,不是对称的。因此,有向图的连通概念较之无向图要复杂得多。 对于给定的有向力
16、G,要略去G中每条边的方向便得到一个无向图G1,称G1是G的基础图。,定义16.2.7 在简单有向图G中,若G中任何两个结点间都是可达的,则称G是强连通的;若任何两个结点间至少是从一个结点可达另一个结点,则称G是单向连通的;若有向图G不是单向连通的,但其基础图是连通的,则称G是弱连通的。 从上面定义可知,若图G是强连通的,则它必是单向连通的,但反之未必真;若图G是单向连通的,则它必是弱连通的,反之不真。,定理16.2.7 有向图G是强连通的G中有一回路,它至少通过每个结点一次。 令G是简单有向图,对于某种性质而言,若G中再没有其它包含子图G1的真子图具有这种性质,则称G1是G的关于该性质的极大
17、子图。 定义16.2.8 在简单有向图中,具有强连通性质的极大子图,称为强分图;具有单向连通性质的极大子图,称为单向分图;具有弱连通性质的极大子图,称为弱分图。,定理16.2.8 简单有向图中的任一个结点恰位于一个强分图中。 注意,有向图中的任意一弧未必恰位于一个强分图中,例如,在图10.2.6中,弧位于结点集合v1,v2,v3的诱导子图中,但弧不位于任何强分图之中。,类似地可以证明下面两个定理: 定理16.2.9 简单有向图中的每个结点和每条弧至少位于一个单向分图中。 定理16.2.10 简单有向图中的每个结点和每条弧恰位于一个弱分图中。 如果结点u可达结点v,它们之间可能存在不止一条链(或
18、路)。在所有这些链(或路)中,最短链(或路)的长度称为结点u和v之间的距离或短程线或测地线,记作d。,距离满足下列性质: d0 d=0 d+dd 如果u不可达v,则d=+。 此外,要注意,即使u与v相互可达,d未必等于d。,下面给出简单有向图的一个应用资源分配图。 在多道程序的计算机系统中,可以同时执行多个程序。实际上,程序共享计算机系统中的资源,如磁带机、磁盘设备、CPU、主存贮器和编译程序等。操作系统对这些资源负责分配给各个程序。当一个程序要求使用某种资源,它要发出请求,操作系统必须保证这一请求得到满足。,对资源的请求可能发生冲突。如程序A控制着资源r1,请求资源r2;但程序B控制着资源r
19、2,请求资源r1。这种情况称为处于死锁状态。然而冲突的请求必须解决,资源分配图有助发现和纠正死锁。 假设某一程序对一些资源的请求,在该程序运行完之前必须都得到满足。在请求的时间里,被请求的资源是不能利用的,程序控制着可利用的资源,但对不可利用的资源则必须等待。,令Pt=p1,p2,pm表示计算机系统在时间t的程序集合,QtPt是运行的程序集合,或者说在时刻t至少分配一部分所请求的资源的程序集合。Rt=r1,r2,rn是系统在时刻t的资源集合。资源分配图Gt=是有向图,它表示了时间t系统中资源分配状态。把每个资源ri看作图中一个结点,其中i=1,2,n。表示有向边,E当且仅当程序pkQt已分配到
20、资源ri且等待资源rj。,例如,令Rt=r1,r2,r3,r4,Qt=p1,p2,p3,p4。资源分配状态是: p1占用资源r4且请求资源r1; p2占用资源r1且请求资源r2和r3; p3占用资源r2且请求资源r3; p4占用资源r3且请求资源r1和r4。,于是,可得到资源分配图Gt=,如图10.2.7所示。 能够证明,在时刻t计算机系统处于死锁状态资源分配图Gt中包含强分图。于是,对于图10.2.7,Gt是强连通的,即处于死锁状态。,图 10.2.7,16.4 图的矩阵表示,为什么要用矩阵来表示图?给定一个图G=,使用G=这种表示法存在两个缺陷: 1、在图比较复杂时不够直观; 2、不方便计
21、算。,一个简单图G=由V中每两个结点间的邻接关系唯一地确定,这种关系可以用一个矩阵给出,而矩阵形式与图中结点的编序有密切关系,这是用矩阵表示图值得注意的一点。,定义16.4.1 给定简单图G=,V=v1,v2,vn,V中的结点按下标由小到大编序,则n阶方阵A=(aij)称为图G的邻接矩阵。其中i,j=1,2,n。有时为强调邻接矩阵依赖于图G,把图G的邻接矩阵记为A(G)。,G1,G2,G3,G4,今后将略去这种由于V中结点编序而引起邻接矩阵的任意性,而取该图的任一个邻接矩阵作为该图的矩阵表示。 有关图同构的判断问题的讨论可以参考以下网址: http:/ http:/ 1、若邻接矩阵的元素全为零
22、,则其对应的图是零图; 2、若邻接矩阵的元素除主对角线元素外全为1,则其对应的图是连通的且为简单完全图; 3、当给定的简单图是无向图时,邻接矩阵是对称矩阵;,问题1、当给定的简单图是有向图时,邻接矩阵不是对称矩阵;以上结论是否成立?2、当给定的图是多重图时,如何用邻接矩阵表示?,4、在给定简单有向图的邻接矩阵中,第i行元素是由结点vi出发的弧所确定,故第i行中值为1的元素数目等于结点vi的出度。同理,第j列中值为1的元素数目等于结点vj的入度。 即d+(vi)= 和d-(vj)= 。,G,A3=,.,=,G,A5=,.,=,由给定简单图G的邻接矩阵A可计算出矩阵A的l次幂,即Al。若第i行第j
23、列上的元素alij便是G中从第i个结点vi到第j个结点vj长度为l的链(或路)的数目。为说明此事实,今给出下面定理。 定理16.4.1 设A为简单图G的邻接矩阵,则Al中的i行j列元素alij等于G中联结vi到vj的长度为l的链(或路)的数目。,在一些实际问题中,有时要判定图中结点vi到结点vj是否可达,或者说vi到vj是否存在一要链(或路)。如果要利用图G的邻接矩阵A,则应计算A2,A3,An,。当发现其中某个Ar中 1,就表明vi可达vj或vi到vj存在一条链(或路)。 但这种计算繁琐量大,又不知计算Ar到何时为止。,根据定理16.2.2可知,对于有n个结点的图,任何基本链(或路)的长度不
24、大于n-1和任何基本圈(或回路)的长度不大于n。因此,只需考虑 就可以了,其中1rn。即只要计算Bn=A+A2+A3+An。 如果关心的是结点间可达性或结点间是否有链(或路),至于结点间的链存在多少条及长度是多少无关紧要,那么便可用下面的定义图的可达矩阵来表示结点间可达性。,定义16.4.2 给定图G=,将其结点按下标编序得V=v1,v2,vn。定义一个n阶方阵P=(pij),其中1 vi到vj可达 Pij=0 否则 则称矩阵P是图G的可达矩阵。,可见,可达矩阵表明了图中任意两结点间是否至少存在一条链(或路)以及在结点处是否有圈(或回路)。 从图G的邻接矩阵A可以得到可达矩阵P,即令Bn=A+
25、A2+A3+An,再从Bn中非零元素改为1而零元素不变,这种变换后的矩阵即是可达矩阵P。,假设矩阵中的元素是属于布尔代数的B中元素,其中B=0,1,则称该矩阵为布尔矩阵。显然邻接矩阵是一个布尔矩阵,同样可达矩阵也是布尔矩阵。下面定义两个布尔矩阵B与C的运算:,令B和C的布尔和、布尔积分别记为BC和BoC,其定义为 (BC)ij=bijcij (B C)ij= (bikckj) i,j=1,2,n。其中bij,cij分别是B和C的i行j列元素。,特别地,对于邻接矩阵A,记A A=A(2),对任何r=2,3,有 A(r-1) A=A(r) 要注意的是Ar与A(r)的差别。Ar中 表明从vi到vj长
26、度为r的链(或路)的数目,而A(r)中 是指出:若vi到vj至少存在一条链(或路)时, =1,否则, =0。 由上说明,便得到可达矩阵P为: P=AA(2)A(3)A(n)= A(k),对于简单有向图G=,显然有EVV。因此,弧集合E可解释成B中的二元关系,而二元关系是可用矩阵表示的,通常称这种矩阵为关系矩阵,其定义如下:,设两个有限集合X=x1,x2,xm和Y=y1,y2,yn,则关系RXY的关系矩阵MR=(rij),其中1, Rrij=0, 否则 i=1,2,m;j=1,2,n。,由定义可知,关系R与其关系矩阵MR是一一对应的,即可以相互确定。 根据集合论可知,对于域F(R)=V而|V|=
27、n的关系R的传递闭包R+可计算如下: R+=RR2R3Rk (kn) 于是,关系R1和R2的关系矩阵分别为A1和A2,则关系R1R2的关系矩阵为A1A2。用归纳法可以证明R+的关系矩阵是= ,对于G=的邻接矩阵A是关系E的关系矩阵,因为E2=EoE,即若存在一个结点vk,使得viEvk,和vkEvj,则必有viE2vj,亦即从vi到vj若至少存在一条长度为2的链(或路),那么E2的关系矩阵中的(i,j)元素值为1。这表明矩阵A(2)是关系E2的关系矩阵。以此类推,A(k)是Ek的关系矩阵,k=2,3,n。因此 A+=AA(2)A(3)A(n) 亦即 A+=AA(2)A(3)A(n)=P,可见,
28、关系E的传递闭包E+的关系矩阵A+与可达矩阵相同。 为了计算A+或P,自然可先依次求得A(2),A(3),A(n),然后再计算 A(k),其结果即为所求,这是计算A+或P的一种方法,还可介绍一种现有效的方法Warshall算法,它由邻接矩阵A依下面给出的步骤便能计算A+。其步骤如下:,(1) PA (2) k1 (3) i1 (4) 若pik=1,对j=1,2,n作pijpijpkj (5) ii+1,若in则转(4) (6) kk+1,若kn则转到(3),否则停止。 该算法的关键的一步是(4),它判定如果pik=1,将第i行和第k行的各对应元素作布尔和或逻辑加后送到第i行中去。,给定关系E1
29、和关系E2,它们的关系矩阵分别为A=(aij)和B=(bij),则关系交E1E2的关系矩阵记为AB,其定义如下: (AB)ij=aijbij 于是,由可达矩阵和利用关系交的关系矩阵可求出包含图中任何指定结点的强分图。 定理16.3.2 给定简单有向图G中的任意结点vi,若P=(pij)是G的可达矩阵,PT=(pji)是P的转置矩阵,则PPT的第i行元素为1的列号为下标的结点构成了包含vi的强分图。,利用简单有向图的可达矩阵,能够确定某过程是否为递归的。 假设VP=p1,p2,pn是程序P中的过程集合,做有向图G=,其中piVP,i=1,2,n;Epi调用pj。如果图G中有包含pi的回路,则可断言pi是递归的。为此,由图G的邻接矩阵A=(aij)计算出可达矩阵A+=( )。如果A+中的主对角线上的某元素 =1,则pi是递归的。,在图的矩阵表示中,除邻接矩阵外,还有关联矩阵、圈(或回路)矩阵、权矩阵等,在此就不都予涉及了,只是再给出权矩阵的概念以结束本小节。,已知加权的简单图G=,定义一个矩阵W=(wij),其中:w, w是边vi,vj(或弧)E 的权 wij=0, vi与vj不相邻 则称W为图G的权矩阵,