很多人都玩过“一笔画”游戏,能一笔画成的图要么是所有点的连接边数都是偶数的情况,要么是连接边数是奇数的点有且只有两个的情况,第一种情况从任何点开始都可以完成一笔画,第二种情况只能从其中一个奇数点开始到另一个奇数点结束才能一笔画成。它的原理就是我们这一课要介绍的欧拉图(Euler)和欧拉回路(Euler Circuits),从图论的角度看,有向图和无向图都有欧拉回路的概念,但是判定的方法不一样,这一课来介绍欧拉图、欧拉图的判定和用弗罗莱(Fleury)算法求欧拉回路的相关算法。
欧拉图和欧拉回路
对欧拉图的研究起源于著名的哥尼斯堡七桥问题,如图(1-a)所示,哥尼斯堡有七座桥连接一条河两岸的陆地和河中间的两个小岛,传说哥尼斯堡的居民最喜爱的消遣活动就是一次性走过这七座桥但不重复,不过好像谁也没有成功过。1736 年,欧拉将图(1-a)中的陆地抽象为一个顶点,将桥抽象为连接顶点的边,就得到了一个类似图(1-b)的无向图。欧拉最终在他的论文中证明了“存在从任意点出发,经过所有边恰好一次,并最终回到出发顶点的走法的充分必要条件是:每个顶点的度均为偶数”。显然,哥尼斯堡七桥问题不满足这个条件。
图(1)哥尼斯堡七桥问题示意图
后来,人们把一个图中经过每条边有且仅有一次的回路称为欧拉回路,把含有欧拉回路的图称为欧拉图。无向图中存在欧拉回路的条件是每个顶点的度数都是偶数,有向图中存在欧拉回路的条件是每个顶点的
本文介绍了欧拉图和欧拉回路的概念,它们源于哥尼斯堡七桥问题。一个无向图是欧拉图的条件是每个顶点的度数为偶数。此外,文章详细讲解了如何判断无向图是否为欧拉图,以及弗罗莱(Fleury)算法用于寻找欧拉回路的原理和实现。文章通过图示和伪代码帮助理解,并提供了源码下载链接供读者实践。
订阅专栏 解锁全文
3061

被折叠的 条评论
为什么被折叠?



