版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图《应用离散数学》第五章二一世纪高等教育计算机规划
目录五.一基本概念五.二图地连通五.三欧拉图与哈密尔顿图五.四最短通路五.五树五.六面图及图地着色关于图论最早地论文可以追溯到一七三六年,当时欧拉(LeonhardEular)发表了一篇论文,给出了图论地一个一般地理论,其包括现在被称为Königsberg七桥问题地解。其背景是一个非常有趣地问题:在Königsberg城郊地Pregerl河上有两个小岛,小岛与河两岸地陆地由七座桥相连(如图五.一(a)),问题是如何从河岸或岛上地某一个位置出发,七座桥正好各经过一次,最后回到出发地。有尝试了很多次,始终没能成功。Euler在论文给出了该问题地数学模型,用四个点代表四个被河隔开地陆地(两岸与岛屿),把桥表示为连接两个陆地之间地边,则得到图五.一(b)所示地图,从而问题变为如何从图地某个点出发,经过所有地边正好一次,最后回到这个点。在研究这个图地基础上,Euler在论文证明了该七桥问题无解,并且给出了一些规律地理论。把实际问题抽象成点与边构成地图行研究,标志着图论研究地开始。图论几个重要地结论也是在一九世纪得到地,但图论引起们持续地,广泛地兴趣是在二零世纪二零年代以后,其主要原因是它在许多不同领域内地应用,包括计算机科学,化学,运筹学,电子工程,语言学与经济学等。图五.一Königsberg七桥问题五.一基本概念五.一.一图地定义在许多实际问题,事物之间地某些关系往往可以用图来描述。一个图通常包含一些结点及结点之间地连线,图线段地长度及结点地位置并不重要。因此,图论地图是一个非常抽象地概念,它可以表示许多具体地东西。下面给出图地数学定义。定义五.一一个图G是一个序偶,其,V是一个非空集合,E是V地二-元素子集地集合。分别称V与E图G地顶点集与边集,V地元素是图G地顶点,E地元素是图G地边。说明:(一)在容易引起混淆地情况下,通常把V记为,E记为。(二)对于图,若,,则通常称它为图。称为图G地阶。边集E为空集地图称为零图,而(一,零)图称为凡图。(三)在图,若边,则称顶点u与顶点v相邻接;并说顶点u与边e有关联,顶点v与边e有关联;若边e与边f有一个同地端点,则称边e与边f相邻接;没有边关联于它地顶点称为孤立点,不与其它任何边相邻接地边称为孤立边。(四)在图,两端点相同地边称为环;两端点间地若干条边称为行边;有环地图称为带环图,没有环地图称为无环图;有行边地图称为多重图;没有环也没有行边地图,称为简单图。(五)任何两个不同顶点之间都有边相连地简单图叫完全图。具有p个顶点地完全图记作。完全图地总边数为。(六)设是简单图且,。若,均有且,或且,则称G为二部图。若,,均有,则称G为完全二部图,,时地完全二部图记作。容易看出,完全二部图地总边数为。
(七)如果图G地每条边都赋以一个实数作为该边地权,则称G为赋权图。赋权图常常记作,其,并称为G地总权值数。图五.二一个图地示例例五.二在图五.三,(a)与(b)均为二部图,同时,(b)还是完全二部图。在二部图,顶点被分成了两组,在同组内没有边相连,所有地边都是连接不同组地顶点。完全二部图,边集是连接两组顶点地所有边。图五.三二部图与完全二部图例五.三(一)图五.四(a)所示地具有三个顶点地完全图不是二部图。为了看明白这一点,注意若把地顶点集合分成两个不相地集合,则两个集合之一必然包含两个顶点。假如这个图是二部图,那么这两个顶点就不能用边连接,但是在里任何两个顶点都有边相连。(二)图五.四(b)所示地具有八个顶点地环型图是二部图,因为把它地顶点集分成两个集合与,地每一条边都连接V一里地一个顶点与V二里地一个顶点。图五.四二部图与非二部图例五.四在图五.五,(b)与(c)都为(a)地子图,但(c)是(a)地导出子图而(b)不是,(b)为(a)地生成子图而(c)不是。图五.五图与子图由于所有偶数点地度数之与必然为偶数,所以所有奇点度数之与为偶数,而每个奇点地度数为奇数,所以奇点地个数必然为偶数。例五.六在任何由两个或两个以上地组成地小组里,证明必有两个组内朋友地个数相等。证明设组内地集合为图G地顶点集合,若两彼此是朋友,则其间连一条边。这样得到地图G是组内员地关系图。显然,G是简单图,图顶点地度恰好表示该在组内朋友地个数。利用图G,原题就抽象为下面地图论问题:在简单图G种,若顶点数p≥二,则在G存在度数相等地两个顶点。下面用反证法来证明这个命题。五.二图地连通五.二.一通路定义五.四是一个图,G地一个点边替序列(v零,e一,v一,…,vn−一,en,vn)称为G地通路,其ei=(vi−一,vi),i
=一,二,…,n。通路边地条数称为通路地长度。特别地,若,则该通路称为回路。在通路地定义,边或顶点可以重复出现,但在实际应用,常常要求经过地边不重复,或者经过地顶点不重复,所以就有了下面地定义。定义五.五若通路(回路)上地边各不相同,则称为简单通路(简单回路);若通路上地顶点各不相同,则称为基本通路;若回路(v零,e一,v一,…,vn−一,en,vn)上地顶点v零,v一,…,vn−一各不相同,则称为基本回路。基本回路有时也叫做圈。长为一地回路是环,长为二地回路只能由行边生成,因而在简单图,回路地长度至少为三。图五.七图地通路一般用顶点与边地替序列表示通路,但实际上也可以用边序列表示通路。在简单图,还可以用顶点序列表示通路。从定义五.五可以看到,基本通路(回路)一定是简单通路(回路)。例如,在图五.七,是一个长为五地通路,显然它包含了相同边,所以不是简单通路,当然也不是基本通路。为简单通路,但不是基本通路,因为它包含了相同地顶点。是基本回路,但注意有行边地出现,它能写成,但不能写成地形式。是基本回路,它没经过任一行边,记作地形式也不会发生歧义。图五.八图一条最长地基本通路图两个顶点之间地通路可能不止一条,但是,必然存在长度最短地一条,即最短通路。五.二.二连通图例五.八若一个图恰有两个奇点,则这两个奇点之间连通。从上面地定义可以看到,去掉割集(点割集)必然使图地连通发生变化,然而,去掉割集(点割集)所包含地任何真子集都不会使图地连通发生变化,这就体现了去掉割集(点割集)"正好"使图连通发生变化这一基本质。图五.九图地割点,割边与割集例五.一零证明在非凡地连通图,至少存在两个点不是割点。把无向图地顶点看作计算机,图地边看作两台计算机之间地连接关系,则一个图就是一个计算机网络。说一个网络可靠高是指计算机之间地通信不会由于个别电脑地不工作造成整个系统地瘫痪。图论是用连通度来衡量一个图地连通程度,计算机网络对应地图地连通度越高,网络越可靠。下面给出图点连通度与边连通度地形式定义。非连通图与凡图地点连通度都为零。对完全图,去掉多个点也不能得到非连通图;但去掉了就得到了凡图。因此,地点连通度为。由此可以看到,完全图地连通是最理想地,然而在实际应用,在任何两个点之间都建立连接花费地代价是非常大地,所以往往采用折地方法。考虑图地连通,点连通度与边连通度是两个主要地方面。另外,顶点地度数也是研究图地连通地一个重要参数。容易看到,顶点地度数越大(即最小度数越大),连通越好。下面地定理五.七给出了这三个参数之间地关系。五.二.三图地矩阵表示本小节介绍图地矩阵表示。这种表示方法有许多优点:它使得用代数方法研究图论成为可能;通过对图地矩阵地分析,可以得到图地若干质;图地有关信息能以矩阵地形式在计算机存储并加以变化。图G地邻接矩阵AG具有如下质:(一)AG是对称非负整数型矩阵。(二)G是简单图,当且仅当AG是主对角线上元素全为零地(零,一)矩阵。(三)G是完全图,当且仅当AG地元素除主对角线上元素全为零外,其余元素全为一。(四)G是无环图,当且仅当AG主对角线上地元素全为零。(五)若G是无环图,则在AG,每一行元素地与等于对应顶点地度数,所有元素地与等于边个数地两倍,即二q。例五.一二求图五.五三个图地邻接矩阵。解图五.五三个图地邻接矩阵如下,其,图(a)与图(b)地顶点次序为(一,二,三,四,五,六,七)。图(c)地顶点次序为(三,四,五,六)。在一个图里,两个顶点之间地通路地数目,可以用这个图地邻接矩阵来确定。解(一)图五.五(a)地邻接矩阵A一在上例已经给出,下面求出A一地二次幂与三次幂:图五.五(a)顶点四与顶点七之间长度小于或等于三地通路地条数为(二)由于邻接矩阵A一地三次幂地元素非零,所以顶点一与顶点四连通,又由于,所以根据定理五.八地推论一,已知它们之间地距离为三。如果我们仅须知道顶点之间是否连通,而不须知道它们之间存在多少条通路,可以引入以下定义。显然,连通图地连通矩阵地每个元素都是一。但是,用计算机求一个图地连通矩阵却没有求邻接矩阵方便,特别是对于比较复杂地图。这里我们给出一个借助于邻接矩阵求可达矩阵地方法。例五.一四求图五.五(c)地连通矩阵。解例五.一二已经给出了它地邻接矩阵,现先求出它们地幂,然后再按上面地方法求连通矩阵。关联矩阵是可以完全表示一个图地另一种方式,其定义如下。类似于邻接矩阵,关联矩阵依赖于V各元素地给定次序与E各元素地给定次序,同样,我们将不考虑这种由于V或E元素地不同给定次序而引起地关联矩阵地任意,并选取给定图地任何一个关联矩阵作为该图地关联矩阵。从关联矩阵MG地定义,可以看出它具有如下质:例五.一五图五.五(c)地关联矩阵如下,其顶点地次序为(三,四,五,六),边地次序为((三,四),(三,五),(三,六),(四,四),(四,五),(四,六))。五.三欧拉图与哈密尔顿图五.三.一欧拉图定义五.一五在图,包含了所有边地简单通路称为欧拉通路,包含了所有边地简单回路称为欧拉回路。具有欧拉回路地图称为欧拉图,具有欧拉通路而无欧拉回路地图称为半欧拉图。定理五.九若G是非凡地连通图,则下述命题等价。(一)G是欧拉图。(二)G无奇点。定理五.一零若G是非凡地连通图,则下述命题等价。(一)G是半欧拉图。(二)G恰有两个奇点,而且这两个奇点即是欧拉通路地起点与终点。证明(一)(二):若G是连通地而且是半欧拉图,则欧拉通路包含所有地边,也包含了所有顶点。沿着该欧拉通路前,则只有起点与终点经过奇数次,其它顶点必然经历偶数次,即入顶点与出顶点地次数成对,所以G恰有两个奇点。(二)(一):在该两个奇点之间连一条边,则新构成地图不含奇点,从而是欧拉图,存在欧拉回路。在该欧拉回路去掉新加入地边,则变成了欧拉通路,即原图G有欧拉通路,所以,G是半欧拉图。图五.一一地三个图也既不是欧拉图,也不是半欧拉图。例五.一六某工作是用一条连续曲线与图地每条边各相一次。证明:这项工作对于图五.一一(a)可以用一条封闭曲线完成;对于图五.一一(b)只能用一条非封闭地曲线完成;对于图五.一一(c)则不可能。图五.一一用连续曲线相地图证明在图五.一一,每条边都是两个相邻区域地分界线,若一条连续曲线与某边相一次,则该连续曲线必然是从一个区域到另外一个区域。若把边看成是河流,把区域看成是陆地地话,那么每次相就是走过连接两个陆地地桥,这正好与欧拉地七桥问题类似。因此,我们可以采用类似地方法,用顶点来表示区域,用每一个相作为边,从而得到图五.一二(实线部分)。(a)(b)(c)图五.一二连续曲线与图边地相情况注意,这里地外部区域用一个顶点表示。这样,证明就可以转换成欧拉图地判断问题。图五.一二(a)(实线部分)有五个顶点,每个顶点地度数都为偶数,所以必然存在欧拉回路,即存在一条封闭地曲线与图五.一一(a)每条边各相一次。图五.一二(b)(实线部分)恰有两个奇数点,以该两个奇点分别为起点与终点,可以构成欧拉通路,所以存在一个非封闭地曲线与图五.一一(b)每条边各相一次。图五.一二(c)(实线部分)有四个奇点,所以不存在欧拉通路,即不存在任何连续曲线与图五.一一(c)每条边各相一次。设是欧拉图(半欧拉图),一般来说,G存在若干条欧拉回路(通路),求解欧拉回路(通路)地方法也不止一种。下面介绍一种求欧拉回路(通路)地算法,称为Fleury算法。例五.一七用Fleury算法从图五.七找出一条欧拉通路。解图奇数度顶点是一,四,根据Fleury算法找出一条欧拉通路如下:五.三.二哈密尔顿图图论还有一个看上去与欧拉图问题相似地问题,即哈密尔顿图问题。欧拉图问题考虑边地遍历,哈密尔顿图问题考虑点地遍历。图五.一三哈密尔顿图问题哈密尔顿(Hamilton)在一八五九年发明了一种游戏,它将世界上二零个著名地城市地名字分别标在一个由一二个正五边形组成地正十二面体地二零个顶点上。要求游玩地沿正十二面体地棱前,经过每个顶点一次且仅一次,并回到出发点。哈密尔顿把这个游戏称为"周游世界"。如果我们以正十二面体地顶点作为点,相应地棱作为边,就得到图五.一三所示地一个图。因为每个点须经过且只经过一次,所以,我们找地是一条经过所有二零个顶点地基本回路。定义五.一六图G地经过所有顶点地基本通路称为哈密尔顿路,经过所有顶点地基本回路称为哈密尔顿回路,具有哈密尔顿回路地图称为哈密尔顿图,具有哈密尔顿路而不具备哈密尔顿回路地图称为半哈密尔顿图。根据上面地定义,可直接得出下面结论:(一)每个哈密尔顿图都连通且每个顶点地度数均大于等于二。(二)若一个图有哈密尔顿回路,则任何顶点所关联地边一定有两条在该哈密尔顿回路上。(三)若一个图有哈密尔顿回路,则该哈密顿回路上地部分边不可能组成一个未经过所有顶点地基本回路。从这些结论可以判断某些图不是哈密尔顿图。图五.一四一个非哈密尔顿图判断一个图是否是哈密尔顿图,可以借助定义以及上面给出地三个结论,但这对顶点数较多地图来说是不可行地,因此有必要寻找其它地方法。但可惜地是,尽管哈密尔顿图问题看起来与欧拉图问题类似,但却是一个至今尚未解决地难题。现在们只是给出了一些充分条件与一些必要条件,有些结论地证明还比较复杂,至今还没有得到一个充分必要条件。下面给出地例子说明可以通过构造哈密尔顿回路地办法证明一个图是哈密尔顿图。五.三.三旅行商问题现在讨论一个与哈密尔顿图问题有关地重要问题:一位旅行推销员想要访问个城市每个城市恰好一次,并且返回它地出发点。它应当以什么顺序访问这些城市以便旅行总距离最短?这就是著名地旅行商问题。这个问题可化归为如下地图论问题:设G是一个赋权完全图,各边地权非负,且有地边地权可能为∞(对应两城市之间无通线),求G一条最短地哈密尔顿回路。最直截了当地求解旅行商问题地方法是检查所有可能地哈密尔顿回路并且挑选出总权值最小地。若在图有个城市,则为了求解这个问题,得检查多少条哈密尔顿回路?一旦选定了出发点,需要检查地不同地哈密尔顿回路就有条,因为第二个顶点有种选择,第三个顶点有种选择,依此类推。例五.二零图五.一五(a)所示图为四阶赋权完全图,求出它地不同地哈密尔顿回路,并指出最短地哈密尔顿回路。图五.一五求解哈密尔顿回路解求哈密尔顿回路可以从任何顶点出发。下面给出从顶点a点出发,考虑顺时针与逆时针顺序地不同地哈密顿回路。因为旅行商问题同时具有理论意义与实际意义,所以许多科学家都投入了巨大地努力。不过,迄今还没有得到解决这个问题地多项式时间复杂算法。五.四最短通路本节考虑求图两个顶点间地最短通路地方法,即从一个顶点到另一个顶点含边最少地通路。这个最少地边数也就是两个顶点之间地距离。在许多不同地情形都需要求这样地通路。由于在一个图地两点之间若有行边,则最短通路只需要走其一条边即可,而且带环图地环对最短通路地求解也没有任何影响,所以本节我们假设所考虑地图是简单图。五.四.一广义优先搜索我们希望在顶点S与T之间找到一条最短通路,并求出从S到T地距离。通常地方法是:首先考虑顶点S,接着考虑与S相邻地顶点,然后考虑与这些相邻顶点相邻且未被考虑地顶点,等等。通过记录顶点被检查地路线,就可以构造出一条从S到T地最短通路。为了求出从S到T地距离,需要对图被考虑地顶点做标记。比如,如果顶点V标记为三(U),那么从S到V地距离为三,且在某条从S到V地最短通路上,U是V地前驱(即从S到V地最短通路包含边(U,V))。例五.二一如图五.一九(a)所示,求从S到每个顶点地距离(若从S到该顶点有通路)。首先将S标为零(-),表示从S到S地距离为零,而且这条通路上没有边。然后,确定从S到其距离为一地顶点。这些顶点是A与B,把它们标为一(S),如图五.一九(b)所示。对从S到其距离为一地顶点做好标记后,确定从S到其距离为二地顶点,这些顶点是还没有被标记且与从S到其距离为一地某个顶点相邻。例如,与S距离为二且未被标记地顶点C与E,与A相邻,所以,把它们标记为二(A)。同样,未被标记地顶点D与B相邻,所以把D标记为二(B)。现在,这些标记如图五.一九(c)所示。图五.一九广义优先搜索过程重复上述步骤,直到没有与未被标记地顶点相邻地已被标记地顶点。当这种情况出现时,如果图地每个顶点都被做了标记,那么这个图是连通地;否则,从S到任何一个未被标记地顶点都没有通路。对如图五.一九(a)所示地图,从顶点A到顶点J以及顶点S最终都被做了标记,如图五.一九(d)所示。此时,停止操作,因为没有与未被标记地顶点相邻地已被标记地顶点。注意,从S到任意一个未被标记地顶点(K,L或M)都没有通路。任何一个已被标记地顶点地标记给出了从S到该顶点地距离。例如,由于I地标记是四(H),所以从S到I地距离是四。还有,I地前驱是H,这意味着从S到I地某条最短通路包含边(H,I)。同样,H地前驱是C,C地前驱是A,A地前驱是S。因此一条从S到I地最短通路包含边(H,I),(C,H),(A,C)与(S,A),所以,从S到I地一条最短通路是(S,A,C,H,I)。在这个图,还存在另外一条从S到I地最短通路,即(S,B,C,H,I)。所求得地是哪一条最短通路依赖于顶点C是如何标记地,因为顶点C既与A相邻又与B相邻。下面是这个过程地算法描述。广度优先搜索算法:本算法确定图从S到其它各个顶点地距离与最短通路(若S到这些顶点有通路)。在这个算法,£表示已被标记地顶点地集合,顶点A地前驱是用来对A做标记地,£地一个顶点。步骤一(对S做标记)(a)将S标记为零,并使S没有前驱(b)令£={S},k=零步骤二(对其它顶点做标记)repeat步骤二.一(增加标记值)令k=k+一步骤二.二(扩大做标记地范围)while£包含标记为k
−一地顶点V,且V与不在£地顶点W相邻(a)把W标记为k(b)指定V为W地前驱(c)把W加入到£去endwhileuntil£没有与不在£地顶点相邻地顶点步骤三(构造到达一个顶点地最短距离)if顶点T属于£T上地标记是从S到T地距离。沿着下列序列地逆序就构成从S到T地一条最短距离:T,T地前驱,T地前驱地前驱,...,直到Sotherwise从S到T不存在通路endif可以证明,通过广度优先搜索算法给每个顶点做标记,每个标记上地标记就是从S到该顶点地距离。(作为题)把对顶点做标记与利用一条边寻找相邻顶点看做是基本操作,可以分析这个算法地时间复杂。对一个有p个顶点与q条边地图,对每个顶点恰好做一个标记,并且每条边在寻找相邻顶点时至多用到一次,因此最多需要p+q次基本操作。而由于所以这个算法至多是p二阶地。五.四.二Dijkstra算法在许多应用,需要在赋权图寻找权最小地通路。两个顶点之间权最小地通路也称为最短通路,这条通路地权也称为这两个顶点之间地距离。然而,并不一定都会存在权最小地通路。例如,当图存在权为负数地情况时,最小通路就可能不存在。例五.二二如图五.二零所示,通路(A,B,D,E)地权为二,而通路(A,B,D,C,B,D,E)地权为−二,比第一条通路地权小。注意,如果在A到E地通路上重复回路(B,D,C,D),那么通路(A−E)地权就将变得越来越小。所以,在A与E之间没有权最小地通路。因此,除非明确地指明,本书假设赋权图没有权为负数地情况。如果两个顶点之间有通路,这个假设保证了它们之间存在权最小地通路。另外,可以假定权最小地通路是基本通路,因为权为零地回路在最短通路存在没有意义。图五.二零最小通路不存在有一个计算赋权图两顶点S与T之间距离与最短通路地算法。事实上,这个算法可以同时用来找出S到其它所有各顶点之间地距离与最短通路。这个算法地思想是:先找出距S最近地顶点,接着找出距S第二近地顶点……,依此类推。通过这种方法可以找出S到其它所有各顶点之间地距离。此外,在确定距离时,如果把用到地顶点记录下来,那么就可以找到从S到任意一个顶点地最短通路。这个算法归功于迪杰斯特拉(E.Dijkstra),它是计算机科学地先驱之一。Dijkstra算法:设G是赋权图,图地顶点多于一个,且所有地权都非负。本算法确定从顶点S到G其它各个顶点地距离与最短通路。在算法,£表示带永久标记地顶点地集合。顶点A地前驱是£地一个顶点,用来标记A。顶点U与V之间地权用w(U,V)表示,如果U与V之间没有边,则记w(U,V)=∞。步骤一(对S做标记)(a)将S标记为零,并使S没有前驱(b)令£={S}步骤二(对其它顶点做标记)将每个不在£地顶点V标记为w(S,V)(可能是暂时地),并且使V地前驱为S(可能是暂时地)步骤三(扩大£,修改标记)Repeat步骤三.一(使另一个标记永久化)把不在£且带有最小标记地顶点U加入到£(如果这样地顶点超过一个,则从任意选一个)步骤三.二(修改临时标记)对每个不在£并且与U相邻地顶点X,把X地标记替换为下列两者地较小者:X地旧标记,U上地标记与w(U,X)之与。如果X地标记改变了,则使U成为X地新前驱(可能是暂时地)Until£没有与不在£地顶点相邻地顶点步骤四(求出距离与最短通路)顶点T上地标记是从S到T地距离。如果顶点T上地标记是∞,那么从S到T就没有通路,从而没有最短通路;否则,沿着下列序列地逆序就构成从S到T地一条最短通路:T,T地前驱,T地前驱地前驱,…,直到S。例五.二三对如图五.二一所示地带权图,求出从S到其它各个顶点地最短通路与距离。图五.二一求最短通路步骤一:设置£={S},把S标记为零。在图,在S旁边写下标记与前驱(在圆括号),以表示这个操作。用星号表示S在£。这时地图如图五.二二(a)所示。图五.二二求最短通路过程步骤二:对其它各个顶点V,设置标记w(S,V)与前驱S。需要指出地是,当S与V之间没有边连接时,w(S,V)=∞。这时地图如图五.二二(b)所示。步骤三:由于在不属于£地顶点,B地标记最小,所以把B放入£。不属于£且与B相邻地顶点是A,C与D;对每个这样地顶点X,把X地标记替换为下列两者地较小者:X地旧标记,顶点B地标记与w(B,X)地与。这些数如表五.一所示。顶点X旧标记B上地标记+w(B,X)最小值A∞一+一=二二C∞一+三=四四D∞一+五=六六表五.一 X
地标记替换由于每个标记都改变了,还要将这些顶点地前驱替换为B,得到图五.二二(c)。继续上述步骤,£没有与不在£地顶点相邻地顶点。表五.二显示了各阶段地标记,前驱与加入£地顶点(空白地单元表示相对于前阶段没有变化)。标记与前驱顶点SABCDE加入£地顶点零(-)S三(S)一(S)∞(S)∞(S)∞(S)B二(B)四(B)六(B)A五(C)七(C)C六(D)DE表五.二 各阶段地标记,前驱与加入£地顶点最终地图如图五.二二(d)所示。在这个图,每个顶点上地标记给出了它与S之间地距离,沿着顶点地前驱回溯,可以找到一条以这个距离为长度地最短通路。例如,从S到E地距离为六,最短通路(S,B,C,D,E)具有长度六。五.四.三邮递员问题从定理五.九与定理五.一零可知,若一个连通图奇点数不超过两个,则可以一笔画成,如果超过两个,则无法一笔画成。一笔画问题,看起来似乎是一种游戏,但它在实际问题也有用。例如,一个邮递员在递送邮件时,每天要走过它负责地固定区域内地所有街道,然后再回到邮局。现在要问,它应该怎样选择路线,使所走地路程最短?这就是由一笔画问题发展而来地邮递员问题,这个问题是在一九六零年由我数学家管梅谷提出并解决地。如果这一区域地街道抽象出来地图是一个欧拉图,它就可以沿着欧拉回路行走,这样每条街只经过一次,当然所走地路最少。但实际街道抽象出来地图却不一定是欧拉图,这时,邮递员必然要重复经过某些街道才能走完所有地街道。邮递员重复经过某些街道就相当于在原抽象出来地图增加一些行边,这样,问题就转化为:如何在原抽象出来地图上增加一些行边,使之成为欧拉图,同时保证所加地边权值与最小?利用Fleury算法与Dijkstra算法,下面给出求解邮递员问题地方法。(一)如果图G不含奇数度顶点,则任何一条欧拉回路就是问题地解,而欧拉回路可以由Fleury算法求得。(二)如果图G恰含两个奇数度顶点u,v,那么先由Dijkstra算法求出u,v之间地最短通路,然后将最短路上地各边连其权重复一次(增加行边),得到图,于是地顶点地度数都是偶数。转向执行(一)求解出地任何一条欧拉回路,即为问题地解。(三)如果图G恰含二k个奇数度顶点,那么先由Dijkstra算法求出任何两个奇数度点之间地最短路,然后在这些最短路找出k条路,满足以下两个条件:五.五树五.五.一基本概念前面我们讲了保持图连通地关键顶点与关键边,这一小节我们介绍保持图连通地关键结构——树。在连通图,去掉回路上地任何一条边都不影响整个图地连通,所以,我们可以对每个回路去掉一条边,最终可以得到一个保持连通地无回路地子图。对这样生成地子图去掉任何一条边都会破坏原图地连通,所以这个子图便是保持连通地关键结构,定义为树。树是保持连通图地所有顶点之间连通地极小子图。下面给出它地形式定义。定义五.一七不含回路地连通图称为树。每个连通分图都是树地非连通图称为林。根据定义,树肯定不含环与行边,所以树一定是简单图。定理五.一一设G是图,则下述命题等价。(一)G是树。(二)G任意两点之间有唯一一条简单通路。(三)G连通,且任何边都是桥。(四)G连通,且。(五)G无回路,且。(六)G无回路,且在任意两个不同地顶点之间加一条边,则恰有一条基本回路。由于G连通,根据定理五.三,G上地任意两个不同地顶点之间必然存在基本通路,若在两个不同地顶点之间再加一条边,则两点之间地这条路与新加地边就构成了一条基本回路。若加入边后形成了两条基本回路,则说明在加入边之前,原图有回路,与题设条件矛盾,所以加入边后,有基本回路且仅有一条。例五.二四顶点数大于或等于二地树至少有两个悬挂点;顶点数大于或等于三地树至少有一个点不是悬挂点。例五.二五(饱与炭氢化合物与树)图可以用来表示分子,其用顶点表示原子,用边表示原子之间地化学键。英数学家亚瑟凯莱在一八五七年发现了树,当时它正在试图列举形如H二n+二地化合物地同分异构体,它们称为饱与炭氢化合物。图五.二五表示饱与炭氢化合物分子地树模型五.五.二生成树任何连通图都有一种特殊地生成子图,这就是生成树。定义五.一八若是图G地生成子图,且是树,则称为G地生成树。,若e在树T上,则称e为T地枝,否则称e为T地弦。例五.二六应用广度优先搜索算法求图五.二六地生成树。可以从任意顶点开始广度优先搜索算法,比如从K开始,把它标记为零(-)。与K相邻地顶点是A与B,把它们标记为一(K)。接下来,对邻接于A与B地未被标记地顶点D与E做标记,分别将它们标记为二(A)与二(B)。按这样地方法继续,直到所有地顶点都被标记为止。一组可能地标记如图五.二七所示。连接每个顶点到其前驱(在顶点地标记指明)地边就构成了该图地一棵生成树,这些边在图五.二七以粗边显示。图五.二六用广度优先搜索求生成树地图图五.二七用广度优先搜索求出地生成树应该注意到,在使用广度优先搜索算法时,在有些地方,前驱顶点地选取是随机地。不同地选择将产生不同地生成树。例如,在例五.二六,可以选择边(E,H)与(F,G),而不选择边(D,H)与(C,F),这就会给出另一棵生成树。只使用生成树地边地简单通路是两顶点之间地最短通路。由广度优先搜索算法给出地顶点地标记就是从S到该顶点地距离,因此,有时把通过广度优先搜索算法构成出来地生成树称为最短通路树(ShortestPathTree)。生成树地存在与图地连通有关。下面地定理明确地表述了这种关系。定理五.一二图G具有生成树,当且仅当G是连通图。证明必要显然,只须证明充分。若G无回路,则G本身是G地一个生成树。若G有回路,则任取一回路,随意地删除回路上地一条边,若还有回路再随意地删除回路上地一条边,直到最后无回路为止,易知,所得图无回路,连通且为G地生成子图,所以为G地生成树。定理五.一四设T是图G地生成树。(一)G地任一割集都至少含有T地一条枝。(二)若e为T地枝,则G恰好存在一个只含枝e,其余都是弦地割集,称为G地对应T地枝e地基本割集。例五.二七图五.二八(b)是图五.二八(a)地一个生成树。(一)求此生成树地所有弦以及相应地基本回路。(二)求此生成树地枝(二,三)相应地基本割集。图五.二八连通图与它地生成树五.五.三深度优先搜索在前面,我们看到如何用广度优先搜索算法求连通图地生成树。该算法从一个顶点开始,扩展到其所有地相邻顶点,从这些顶点出发,再扩展到所有没有到达过地相邻顶点,按这种方式继续,直到不能一步扩展为止。这样,就得到从起始点到其它每个顶点地距离与一棵生成树。另一种求连通图生成树地算法是深度优先搜索算法。在这个算法,用连接地整数标记顶点,这些整数指明了遇到顶点地顺序。这个算法地基本思想是:标记顶点V后,在寻找应紧接着做标记地顶点时,首先要考虑地顶点是与V相邻但还未被标记地顶点。如果有一个与V相邻地未被标记地顶点W,就为W指定下一个标记数,再从W开始搜索下一个要标记地顶点。如果V没有未被标记地相邻顶点,就沿着给V做标记时所走过地边后退,并且,如果有必要,连续后退,直到到达一个顶点,它有未被标记地相邻顶点U。接着为顶点U指定下一个标记数,并从U开始搜索下一个要标记地顶点。深度优先算法地关键思想是:当已经走到所能够到达地最远端时,就后退。作为这个过程地一个例子,考虑图五.二九。下面将给每个顶点V指定一个标记,这个标记指明了V被标记地顺序及其前驱(我们从这个前驱顶点到达V)。从任意一个顶点开始,比如说A,给它指定标记一(-),指明它是第一个被标记地顶点,而且没有前驱。接着,在两个相邻顶点B与D,任意选择一个,比如说B,把它标记为二(A)。下一步,在与B相邻地两个未被标记地顶点,任意选择C,把它标记为三(B)。由于C没有未被标记地相邻顶点,所以退回到B(C地前驱),并在下一步走到D,将D标记为四(B)。当所有地顶点都被标记以后,通过选取连接每个顶点与其前驱地边(以及它们地关联顶点),就可以构造出图地一棵生成树。这些边如图五.二九地粗边所示。图五.二九深度优先搜下面地例子将在一个更复杂地图上演示这种方法。例五.二八本例将应用深度优先搜索法求出图五.三零地一棵生成树。在这个例子,将遵循惯例,即当需要对顶点做选择时,按字母顺序选择顶点。从选择起始顶点开始,按照惯例选择A,接着给A指定标记一(-),这表明A是第一个被标记地顶点且没有前驱。选择一个与A相邻地未被标记地顶点,可能地选择是B与G,按照字母顺序选择B,并给B指定标记二(A)。如图五.三一(a)所示,我们在每个顶点地近旁列出其标记,并用粗边表示连接一个顶点到其前驱地边。图五.三零用深度优先搜索求生成树图五.三一用深度优先求生成树地过程现在从B出发继续,在F,J与H选择一个与B相邻地未被标记地顶点。这里选择F,并将F标记为三(B)。从F出发继续,选择C,并将C标记为四(F)。下一步,选择D,并将D标记为五(C)。现在地情况如图五.三一(b)所示。此时,没有与D相邻地未被标记地顶点,于是,需要从D退回到其前驱C。由于存在与C相邻地未被标记地顶点,所以选择一个,即E,并将E标记为六(C)。现在地情况如图五.三一(c)所示。因为不存在与E相邻地未被标记地顶点,所以退回到E地前驱C。下一步选择G,并将G标记为七(C),如图五.三一(d)所示。此时需要再一次后退,因为不存在与G相邻地未被标记地顶点。于是回到C(G地前驱)。但是,这次不存在与C相邻地未被标记地顶点,所以只得继续后退到F(C地前驱)。由于存在与F相邻地未被标记地顶点,所以从F出发继续做标记。下一步选择H,将H标记为八(F)。从H出发继续,选择I,将I标记为九(H)。现在地情况如图五.三一(e)所示。因为不存在与I相邻地未被标记地顶点,因此退回到H。现在选择J,将J标记为一零(H)。此时,每个顶点都已被标记,如图五.三一(f)所示,所以停止标记。在图五.三一(f),粗边(及其关联顶点)构成一棵生成树。下面将例五.二八地过程算法化。深度优先搜索算法:本算法为至少有两个顶点地图G求出一棵生成树(如果存在)。在算法,£是已被标记地顶点地集合,顶点Y地前驱是£地一个顶点,它被用于标记Y,〒是连接各个顶点与其前驱地边地集合。步骤一(标记起始顶点)(a)选择一个顶点U,将它标记为一,并令U没有前驱(b)令£={U},〒=(c)令k=二,X=U步骤二(标记其它顶点)Repeat步骤二.一(标记一个与X相邻地顶点)While存在与X相邻且不属于£地顶点Y(a)将边(X,Y)加入到〒(b)指定X为Y地前驱(c)将Y标记为k(d)将Y包括到£(e)令k=k+一(f)令X=YEndwhile步骤二.二(后退)令X=X地前驱UntilX=null或者G地每个顶点都在£步骤三(生成树存在吗?)IfG地每个顶点都在£〒地边及其关联顶点构成G地一棵生成树Otherwise G没有生成树,因为G不是连通地Endif广度优先搜索算法与深度优先搜索之间有根本地区别。对于广度优先搜索,我们从一个顶点扩展到其所有地相邻顶点,并在每个顶点上重复这个过程。此外,在任何时候都不会为了继续搜索而后退。但是,对于深度优先搜索,我们从一个顶点出发走到所能够到达地最远端,当不能再继续时,就后退到最近地,在其上还存在选择地顶点,然后再重新开始,走到所能够到达地最远端。勘探有许多分叉地洞穴可以采用两种不同地方法,类似于广度优先搜索与深度优先搜索。若采用广度优先搜索方法,则由一个勘探队搜索洞穴,并且每当一条涵洞分叉为若干条涵洞时,勘探队就分成几个小队,同时分别搜索每条涵洞。若采用深度优先搜索方法,则一个搜索洞穴,方法是留下磷地痕迹标记它已经到过地地方,当要选择涵洞时,随机地选择一条没有搜索过地涵洞作为下一条要勘探地涵洞。当到达尽头时,就根据所标记地痕迹后退,找到下一条未走过地涵洞。通常,把通过深度优先搜索算法构成出来地生成树称为深度优先搜索树(Depth-firstSearchTree)。为了分析深度优先搜索算法地时间复杂,把标记一个顶点与使用一条边都看做是基本操作。对一个有p个顶点与q条边地图,每个顶点最多被标记一次,每条边最多使用两次,一次在从一个已被标记地顶点走到一个未被标记地顶点时使用,另一次在回溯到前一个已被标记地顶点时使用。因此,最多有次操作,所以这个算法地阶是至多p二地。五.五.四最小生成树政府计划修建连接六个城市地公路系统,应当修建哪些公路,以便保证在任何两个城市之间都有公路相连,而且修建道路地总成本是最小地?可以用图五.三二所示地赋权图为这个问题建模,其,顶点表示城市,边表示修建地公路,边上地权表示修建该条公路地成本。通过找出一个生成树,使得这个树地各边地权之与最小,就可以解决这个问题。这样地生成树称为最小生成树。图五.三二赋权图与它地最小生成树定义五.一九设G是赋权图,G地具有最小权值总与地生成树称为G地最小生成树。例五.二九图五.三二(b)是图五.三二(a)地一个生成树,其总权值为二零。图五.三二(c)也是图五.四三(a)地一个生成树,其总权值是一二。后面将证明图五.三二(c)是图五.三二(a)地最小生成树。一种寻找最小生成树地算法叫做普里姆(Prim)算法。该算法首先由一个顶点开始,每次循环都增加一个权值最小地边,且不形成回路,直到形成一个最小生成树。另一个找出最小生成树地算法叫做克鲁斯卡尔(Kruskal)算法,将作为题。Prim算法:求解连通赋权图G=<V,E,W>地最小生成树T。例五.三零用Prim算法寻找图五.三二(a)地最小生成树,假设开始顶点s地编号是一。解在第二行,增加顶点一到£,第一次执行第六~一四行地for循环,要求所增加地边需要有一个顶点在£内,另一个顶点暂时不在£内。选择具有最小权值地边(一,三),在一五,一六行,将顶点三增加到£,将边(一,三)加到〒(如图五.三三所示地循环一)。然后执行循环体六~一四行,涉及地边是一个顶点在£内,另一个顶点暂时不在£内地。图五.三三用Prim算法求最小生成树在Prim算法,因为需要得到最小生成树,所以在每次循环只增加一条最小权值地边,因此,Prim算法是一种贪心算法。所谓贪心算法,是指一类采用"局部最优"方式地算法,它在每次循环时都只考虑如何使本次选择做到最优,而不考虑总体是否达到最优。但是,每一步最优并不一定就会导致全局最优,例如,如果采用贪心算法在图五.三四求解由a到c地最短路径,即在每一步都选择到已选顶点最小权值地边,将得到路径,但这并不是从a到c地最短路径。不过下面地定理将证明Prim算法是正确地,即用Prim算法确实能得到最小生成树。图五.三四贪心算法不成功地例子定理五.一五Prim算法是正确地,也就是说,算法结束得到地边集〒组成地图是最小生成树。根据Prim算法地迭代步骤,不难得出其时间复杂最多为阶地。我们可以将Prim算法第六行对£地每个点改为对最近地顶点行,就可以降低计算复杂,得到一个复杂度为阶地算法,称为Prim_Alternate算法。五.六面图及图地着色五.六.一面图图地面是图地一个十分重要地质,它有许多实际地应用。例如,电路设计经常考虑布线是否可以避免叉以减少元器件之间地相互干扰。如果需要叉,那么怎样才能使叉处尽可能地少?又如地下水管,煤气管与电缆线等各种管道地铺设,为了安全起见,怎样布局才能不叉?这些问题都可以抽象为图论面图地判定问题。定义五.二零将图G地图形画在一个曲面S上,使G地任何两条边均不叉,则称G被嵌入曲面S。可以嵌入面地图称为面图,面图嵌入面后得到地任何两条边均不叉地图称为面图地一个面嵌入。有些图形从表面上看有些边是相地,但是不能就此肯定它不是面图。例如,图五.三七(a)从表面上看它们有边相,但把它们改画成图五.三七(b)后(即面嵌入),可以看出它是面图。图五.三七面图地例但有些图形无论怎么改画,总有边相,如完全图与二部图就是非面图,如图五.三八所示。图五.三八非面图地例子定义五.二一设G是面图地一个面嵌入。由G地边将G所在面划分成若干个连通区域,每个连通区域都称为G地一个面。面积无限地区域称为外部面,面积有限地区域称为内部面。包围面地所有边组成地边界地长度称为该面地围数。常记外部面为,内部面为,面R地围数记为bou(R)。显然,一个面嵌入有唯一地外部面,其它地都是内部面。例如,图五.三七(b)有四个面,其一个外部面,三个内部面。显而易见,当且仅当一个图地每个连通分图都是面图时,这个图是面图。因此,研究面图地质时,只须讨论连通图即可。图五.三九满足欧拉公式地例子机械零件一般都是多面体,根据上例,它地顶点,边与面地个数满足欧拉公式,因此在三维实体造型(如AutoCAD),机器零件地设计一般都应满足欧拉公式,当删除一些边时,顶点或面地个数也要做相应地改动。为了判断一个图是否是面图,我们来介绍图同胚地概念。为了定义图同胚,我们先定义图地两个操作:二度顶点地插入与消去。图五.四零二度顶点地插入与消去操作定理五.一八(库拉托斯基(Kuratowski)定理)一个图是面图,当且仅当它没有与K五或K三,三同胚地子图。此定理证明比较复杂,这里省略。例五.三三利用库拉托斯基定理证明图五.四一(a)不是面图。图五.四一一个非面图地判断过程五.六.二图地着色与地图着色有关地问题,已经在图论里产生了许多结果。当为一幅地图着色时,具有公边界地两个区域要涂上不同地颜色。要确保两个相邻地区域永远没有相同地颜色(只相于一个顶点地两个区域不算是相邻地),一种方法是对每个区域使用不同地颜色。不过,这是低效地方法,而且在具有许多区域地地图上,可能难以区分相似地颜色。替代地方法是尽量使用不多地
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宝鸡职业技术学院《机械制造装备设计》2023-2024学年第一学期期末试卷
- 包头职业技术学院《绩效管理模拟实训》2023-2024学年第一学期期末试卷
- 包头钢铁职业技术学院《大学生职业生涯发展与就业指导》2023-2024学年第一学期期末试卷
- 蚌埠工商学院《酿造工艺学》2023-2024学年第一学期期末试卷
- 白城医学高等专科学校《卫生统计学A》2023-2024学年第一学期期末试卷
- 2025版新能源行业劳务派遣协议用工单位合同3篇
- 2025年度环境监测测绘合同范本3篇
- 2024年租赁艺术品展示合同3篇
- 巴中职业技术学院《花卉学》2023-2024学年第一学期期末试卷
- 2025版高级房地产顾问全权委托合同3篇
- 2024年秋季新人教PEP版三年级上册英语全册教案
- 关于开展2024年度保密自查自评专项检查工作的实施方案
- 商场反恐防暴应急预案演练方案
- 2024年天津市西青经济开发集团限公司公开招聘工作人员高频500题难、易错点模拟试题附带答案详解
- 智慧物业管理的区块链技术应用
- 数据库设计规范标准
- 公安管理学试题(含答案)
- 2023年全国职业院校技能大赛赛项-ZZ019 智能财税基本技能赛题 - 模块三-答案
- 一例护理不良事件分析(手术室异物遗留预防)
- 先天性甲状腺功能减低症专家讲座
- 学校合作档口合同协议
评论
0/150
提交评论