第十六章图的概念与表示16.1图的基本概念16.2链(或路)与圈(或回路)16.4图的矩阵表示退出16.1图的基本概念什么是图?可用一句话概括,即:图是用点和线来刻划离散事物集合中的每对事物间以某种方式相联系的数学模型。因为它显得太抽象,不便于理解,所以有必要给出另外的回答。下面便是把图作为代数结构的一个定义。定义16.1.1一个图G定义为一个三元组
,记作G=。其中V是个非空有限集合,它的元素称为结点;E也是个有限集合,其元素称为边,而φ是从E到V中的有序对或无序对的映射。由定义可知,图G中的每条边都与图中的无序或有序结点对相联系的。若边e∈E与无序结点对〔vi,vj〕相联系,则φ(e)=〔vi,vj〕,这时边e称为无向边,有时简称为边;若边e∈E与有序结点对相联系,则φ(e)=,此时边e称为有向边或弧,vi称为弧e的始结点,vj称为弧e的终结点。若结点vi与vj由一条边(或弧)e所联结,则称结点vi和vj是边(或弧)e的端结点;同时也称结点vi与vj是邻接结点,记作viadjvj;否则为非邻接结点,记作vinadjvj;也说边(或弧)e关联vi与vj或说结点vi与vj关联边(或弧)e。关联同一个结点的两条边或弧称为邻接边或弧。而联结一结点与它自身的一条边,称为环。环的方向是无意义的。如果把图G中的弧或边总看作联结两个结点,则图G可简记为G=,其中V是非空结点集,E是联结结点的边集或弧集。定义16.1.2在图G=中,如果每条边都是弧,该图称为有向图;若每条边都是无向边,该图G称为无向图;如果有些边是有向边,另一些边是无向边,图G称为混合图。定义16.1.3在图G=中,如果任何两结点间不多于一条边(对于有向图中,任何两结点间不多于一条同向弧),并且任何结点无环,则图G称为简单图;若两结点间多于一条边(对于有向图中,两结点间多于一条同向弧)图G称为多重图,并把联结两结点之间的多条边或弧,称为平行边或弧,平行边或弧的条数称为重数。定义16.1.4给每条边或弧都赋予权的图G=,称为加权图,记为G=,其中W表示各边之权的集合。加权图在实际中有许多应用,如在输油管系统图中权表示单位时间流经管中的石油数量;在城市街道中,权表示表示通行车辆密度;在航空交通图中,权表示两城市的距离等等。定义16.1.5在无向图G=中,如果V中的每个结点都与其余的所有结点邻接,即(vi)(vj)(vi,vj∈V→〔vi,vj〕∈E)则该图称为无向完全图,记作K|V|。若|V|=n,该图记作Kn。在一个图中,如果一个结点不与任何其他结点邻接,则该结点称为孤立结点。仅有孤立结点的图称为零图。显然,在零图中边集为空集。若一个图中只含一个孤立结点,该图称为平凡图。定义16.1.6在有向图G=中,对任意结点v∈V,以v为始结点的弧的条数,称为结点v的出度,记为d+(v);以v为终结点的弧的条条数,称为v的入度,记作d-(v);结点v的出度与入度之和,称为结点的度数,记为d(v),显然d(v)=d+(v)+d-(v)。对于无向图G=,结点v∈V的度数等于联结它的边数,也记为d(v)。若v点有环,规定该点度因环而增加2。显然,对于孤立结点的度数为零。此外,对于无向图G=,记Δ(G)或Δ=max{d(v)|v∈V}δ(G)或δ=min{d(v)|v∈V}它们分别称为图G的最大度和最小度。关于无向图中的结点的度,欧拉给出一个定理,这是图论中的第一个定理。定理16.1.1给定无向图G=,则定理16.1.2在任何无向图中,奇度结点的数目为偶数。定义16.1.7在无向图G=中,如果每个结点的度是k,即(v)(v∈V→d(v)=k),则图G称为k度正则图。显然,对于k度正则图G,Δ(G)=δ(G)=k。定义16.1.8给定无向图G1=和G2=,于是(1)如果V2V1和E2E1,则称G2为G1的子图,记为G2G1。(2)如果V2V1,E2E1且E2≠E1,则称G2为G1的真子图,记为G2G1。(3)如果V2=V1,E2E1,则称G2为G1的生成子图,记为G2G1。定义16.1.9设图G2=是图G1=的子图。若对任意结点u和v,如果〔u,v〕∈E1,有〔u,v〕∈E2,则G2由V2唯一地确定,并称G2是结点集合V2的诱导子图,记作或G〔V2〕;如果G2无孤立结点,且由E2所唯一确定,则称G2是边集E2的诱导子图,记为或G〔E2〕。定义16.1.10设图G1=和图G2=是图G=的子图。如果E2=E-E1且G2=,则称图G2是相对于图G的子图G1的补图。定义16.1.11给定图G=,若存在图G1=,并且E1∩E=和图是完全图,则G1称为相对于完全图的G的补图,简称G1是G的补图,并记为G1=。显然,G与互为补图。在图的定义中,强调的是结点集、边集以及边与结点的关联关系,既没有涉及到联结两个结点的边的长度、形状和位置,也没有给出结点的位置或者规定任何次序。因此,对于给定的两个图,在它们的图形表示中,即在用小圆圈表示结点和用直线或曲线表示联结两个结点的边的图解中,看起来很不一样,但实际上却是表示同一个图。因而,引入两图的同构概念便是十分必要的了。定义16.1.12给定无向图(或有向图)G1=和G2=。若存在双射f∈V2V1,使得对任意v,u∈V1,有〔u,v〕∈E1〔f(u),f(v)〕∈E2(或∈E1∈E2)则称G1同构于G2,记为G1G2。显然,两图的同构是相互的,即G1同构于G2,G2同构于G1。由同构的定义可知,不仅结点之间要具有一一对应关系,而且要求这种对应关系保持结点间的邻接关系。对于有向图的同构还要求保持边的方向。一般说来,证明两个图是同构的并非是轻而易举的事情,往往需要花些气力。请读者证明图16.1.13中两个图是同构的。根据图的同构定义,可以给出图同构的必要条件如下:(1)结点数目相等;(2)边数相等;(3)度数相同的结点数目相等。但这仅仅是必要条件而不是充分条件。满足上述三个条件,然而并不同构。因此在(a)中度数为3的结点x与两个度数为1的结点邻接,而(b)中度数为3的结点y仅与一个度数为1的结点邻接。寻找一种简单有效的方法来判定图的同构,至今仍是图论中悬而未决的重要课题。例如图10.1.14中(a)与(b)图10.1.13返回返回图1.1.1416.2链(或路)与圈(或回路)在无向图(或有向图)的研究中,常常考虑从一个结点出发,沿着一些边(或弧)连续移动而达到另一个指定结点,这种依次由结点和边(或弧)组成的序列,便形成了链(或路)的概念。定义16.2.1给定无向图(或有向图)G=。令v0,v1,…,vm∈V,边(或弧)e1,e2,…,em∈E,其中vi-1,vi是ei的结点,交替序列v0e1v1e2v2…emvm称为连接v0到vm的链(或路)。v0和vm分别称为链(或路)的始结点和终结点,而边(或弧)的数目称为链(或路)的长度。若v0=vm时,该链(或路)称为圈(或回路)。定义16.2.2在一条链(或路)中,若出现的边(或弧)都是不相同的,称该链(或路)为简单链(或简单路);若出现的结点都是不相同的,称该链(或路)为基本链(或基本路)。显然,每条基本链(或基本路)必定是简单链(或简单路)。定义16.2.3在一圈(或回路)中,若出现的每条边(或弧)恰好一次,称该圈(或回路)为简单圈(或简单回路);若出现的每个结点恰好一次,称该圈(或回路)为基本圈(或基本回路)。可以看出,对于简单图来说,链(或路)和圈(或回路)能够仅用结点序列表示之。定理16.2.1在一个图中,若从结点vi到结点vj存在一条链(或路),则必有一条从vi到vj的基本链(或基本路)。定理16.2.2在一个具有n个结点的图中,则(1)任何基本链(或路)的长度均不大于n-1。(2)任何基本圈(或路)的长度均不大于n。定义16.2.4在一个图中,若从vi到vj存在任何一条链(或路),则称从vi到vj是可达的,或简称vi可达vj。为完全起见,规定每个结点到其自身是可达的。对于无向图G来说,不难证明结点间的可达性是结点集合上的等价关系。因此它将结点集合给出一个划分,并且划分中的每个元素形成一个诱导子图;两结点之间是可达的当且仅当它们属于同一个子图,称这种子图为图G的连通分图,图G的连通分图的个数,记为ω(G)。定义16.2.5若图G只有一个连通分图,则称G是连通图;否则,称图G为非连通图或分离图。在图的研究中,常常需要考虑删去与增加结点、结点集、边和边集(或弧集)的问题。所谓从图G=中删去结点集S,是指作V-S以及从E中删去与S中的全部结点相联结的边而得到的子图,记作G-S;特别当S=|v|时,简记为G-v;所谓从图G=中删去边集(或弧集)T,是指作E-T,且T中的全部边所关联的结点仍在V中而得到的子图,记为G-T;特别当T={e}时,简记作G-e。所谓图G=增加结点集S,是指作V∪T以及向E中并入S中、S与V中所成的边而得到的图,记作G+S;特别当S={v}时,简记为G+v;图G=增加边集(或弧集)T是指作E∪T所得到的图,记作G+T,这里T中全部边(或弧)的关联结点属于V。定义16.2.6给定连通无向图G=,SV。若ω(G-S)>ω(G),但TS有(G-T)=(G),则称S是G的一个分离结点集。若图G的分离结点集S={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年得到的关于结点连通度、边连通度和最小度的不等式联系的定理:定理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不包含在图的任何基本圈中。对于有向图而言,结点间的可达性不再是等价关系,它仅仅是自反的和传递的。一般说来,不是对称的。因此,有向图的连通概念较之无向图要复杂得多。对于给定的有向力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的关于该性质的极大子图。定义16.2.8在简单有向图中,具有强连通性质的极大子图,称为强分图;具有单向连通性质的极大子图,称为单向分图;具有弱连通性质的极大子图,称为弱分图。定理16.2.8简单有向图中的任一个结点恰位于一个强分图中。注意,有向图中的任意一弧未必恰位于一个强分图中,例如,在图10.2.6中,弧位于结点集合{v1,v2,v3}的诱导子图中,但弧不位于任何强分图之中。类似地可以证明下面两个定理:定理16.2.9简单有向图中的每个结点和每条弧至少位于一个单向分图中。定理16.2.10简单有向图中的每个结点和每条弧恰位于一个弱分图中。如果结点u可达结点v,它们之间可能存在不止一条链(或路)。在所有这些链(或路)中,最短链(或路)的长度称为结点u和v之间的距离或短程线或测地线,记作d。距离满足下列性质:d≥0d=0d+d≥d如果u不可达v,则d=+∞。此外,要注意,即使u与v相互可达,d未必等于d。下面给出简单有向图的一个应用——资源分配图。在多道程序的计算机系统中,可以同时执行多个程序。实际上,程序共享计算机系统中的资源,如磁带机、磁盘设备、CPU、主存贮器和编译程序等。操作系统对这些资源负责分配给各个程序。当一个程序要求使用某种资源,它要发出请求,操作系统必须保证这一请求得到满足。对资源的请求可能发生冲突。如程序A控制着资源r1,请求资源r2;但程序B控制着资源r2,请求资源r1。这种情况称为处于死锁状态。然而冲突的请求必须解决,资源分配图有助发现和纠正死锁。假设某一程序对一些资源的请求,在该程序运行完之前必须都得到满足。在请求的时间里,被请求的资源是不能利用的,程序控制着可利用的资源,但对不可利用的资源则必须等待。令Pt={p1,p2,…,pm}表示计算机系统在时间t的程序集合,QtPt是运行的程序集合,或者说在时刻t至少分配一部分所请求的资源的程序集合。Rt={r1,r2,…,rn}是系统在时刻t的资源集合。资源分配图Gt=