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

五分钟小知识之有趣的「欧拉回路」_第1张图片

1 七桥问题

当时东普鲁士科尼斯堡(今日俄罗斯加里宁格勒)市区跨普列戈利亚河两岸,河中心有两个小岛。小岛与河的两岸有七条桥连接。在所有桥都只能走一遍的前提下,如何才能把这个地方所有的桥都走遍?五分钟小知识之有趣的「欧拉回路」_第2张图片

2 问题解决

著名数学家欧拉用 A,B,C,D 四个字母代表陆地,作为图的 4 个顶点,将连接两块陆地的桥作为边,将七桥问题转为数据结构中的图问题。由此得到的图如下:五分钟小知识之有趣的「欧拉回路」_第3张图片

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

3 重要概念

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

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

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

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

简单通路:在通路L中,所有的边 e1,e··,en 互不相同。五分钟小知识之有趣的「欧拉回路」_第4张图片

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

五分钟小知识之有趣的「欧拉回路」_第5张图片

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

五分钟小知识之有趣的「欧拉回路」_第6张图片

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

五分钟小知识之有趣的「欧拉回路」_第7张图片

  连通图:若图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 个卧室,最后从后门走出。五分钟小知识之有趣的「欧拉回路」_第8张图片问题分析:将 5 个房间以及前门后门外的地方均作为顶点,有门相通则表示顶点邻接,得到图 G,如下图所示:五分钟小知识之有趣的「欧拉回路」_第9张图片图 G 中,奇度顶点的数目是 4,故图 G 不是欧拉通路,因此答案是否定的。

5.3 一笔画

一笔画问题是欧拉图的典型应用。例如如下图形,是否可以用一笔画成。五分钟小知识之有趣的「欧拉回路」_第10张图片

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

五分钟小知识之有趣的「欧拉回路」_第11张图片观察图中的奇度顶点共有 2 个,则此图可以 1 笔画成,且图存在欧拉通路,通路的端点即为奇点度数为 5 的顶点。


END

640?wx_fmt=png



推荐阅读


  • 浅谈什么是动态规划以及相关的「股票」算法题


  • 面试官,我会写二分查找法!对,没有 bug 的那种!


  • 如何有效的写算法题


  • 几道 BAT 算法面试中经常问的「字符串」问题


  • 链表算法面试问题?看我就够了!


640?wx_fmt=png




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


五分钟小知识之有趣的「欧拉回路」_第12张图片


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

640?wx_fmt=gif


我就知道你在看!

你可能感兴趣的:(五分钟小知识之有趣的「欧拉回路」)