五分钟小知识之有趣的「欧拉回路」

640?wx_fmt=jpeg

1 七桥问题

当时东普鲁士科尼斯堡(今日俄罗斯加里宁格勒)市区跨普列戈利亚河两岸,河中心有两个小岛。小岛与河的两岸有七条桥连接。在所有桥都只能走一遍的前提下,如何才能把这个地方所有的桥都走遍?640?wx_fmt=jpeg

2 问题解决

著名数学家欧拉用 A,B,C,D 四个字母代表陆地,作为图的 4 个顶点,将连接两块陆地的桥作为边,将七桥问题转为数据结构中的图问题。由此得到的图如下:640?wx_fmt=png

通过将实际问题转为数据结构图论问题,将问题转换为:是否存在每条边只经过一次,且经过所有顶点的回路问题。对于此问题采用欧拉回路的思想去求解。

3 重要概念

通路:图G(v,e)中顶点与边交替出现的序列称为通路,记作:

  L = v0,e1,v1,e2,···en,vn

其中通路 L 中边 e 的数目记作 L 的长度。

回路:在通路中,若v= vn,则此通路称为回路。

简单通路:在通路L中,所有的边 e1,e··,en 互不相同。640?wx_fmt=png

简单回路:在回路中,所有的边e1,e2···,en互不相同。  

640?wx_fmt=png

初级通路:所有顶点v0,v1,v2···,vn互不相同的通路

640?wx_fmt=png

初级回路:所有顶点v0,v1,v2···,vn互不相同的回路

640?wx_fmt=png

  连通图:若图G(v,e)中任意两个顶点都是连通的,则G(v,e)是连通图,否则,G(v,e)为非连通图。

  欧拉通路:经过图G(v,e)的每条边一次,且仅仅一次的通路称为欧拉通路,也称为欧拉迹。

  欧拉回路:经过图G(v,e)的每条边一次,且仅仅一次的回路称为欧拉回路,也称为欧拉闭迹。

  欧拉图:具有欧拉回路的图称为欧拉图。

4 判定

•若图 G 为连通图,且图中又两个顶点的度为奇数,则图 G 具有欧拉通路,且以两个奇度顶点为端点。•若图 G 为连通图,且没有奇度顶点,则图 G 具有欧拉回路。•若图 G 为连通图,且有 2k 个奇度顶点,则图需要用 k 笔画成,且至少需要k笔才能画成。

5 例题分析

5.1 七桥问题解决

由图 2.1 可以看出,七桥问题的图 G 中存在 4 个奇度顶点,则此图需要 2 笔才能画成,不存在欧拉回路和欧拉通路。因此若要遍历图,必然要经过重复的边。

5.2 遍历房间问题

如下图所示的一幢房屋的平面图,由前门进入到达客厅,由客厅可以通向四个卧室,请问是否能够从前门进入,通过所有的门,走遍客厅和 4 个卧室,最后从后门走出。640?wx_fmt=png问题分析:将 5 个房间以及前门后门外的地方均作为顶点,有门相通则表示顶点邻接,得到图 G,如下图所示:640?wx_fmt=png图 G 中,奇度顶点的数目是 4,故图 G 不是欧拉通路,因此答案是否定的。

5.3 一笔画

一笔画问题是欧拉图的典型应用。例如如下图形,是否可以用一笔画成。640?wx_fmt=png

观察图中的奇度顶点共有 8 个,因此图需要 4 笔才能画成。

640?wx_fmt=png观察图中的奇度顶点共有 2 个,则此图可以 1 笔画成,且图存在欧拉通路,通路的端点即为奇点度数为 5 的顶点。


END

640?wx_fmt=png



推荐阅读







640?wx_fmt=png




欢迎长按下图关注公众号五分钟学算法,一起学算法。


640?wx_fmt=jpeg


来和程序员小吴一起学算法

640?wx_fmt=gif


我就知道你在看!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值