Fleury (弗罗莱) 算法通俗解释

Fleury (弗罗莱) 算法通俗解释

1.定义

2.举例说明

图2为连通图G,现利用Fleury算法求它的欧拉通路。(注意区分:欧拉通路、欧拉回路)

其中一种欧拉通路如下:4 5 8 7 6 8 9 1 5 3 2 4 6,其搜索路径如下图所示:

现在让我们来分析算法实现过程:

假设我们这样走:4,6,8,5,此时在5处有三种选择(3,4,1),那么哪种能走通哪种走不通呢?答案是(3,4)通,1不通。为什么呢?来看下图…

分析:

因为(5~1)之间的边是除去已走过边(E(G)-{E1(4~6),E2(6~8),E3(8~5)})图G的一个桥,所谓桥即去掉该边后,剩下的所有顶点将不能够连通,即无法构成连通图。

而选择(5~3)和(5~4)则满足定义中第二条(b)中的要求。当然当(5~3)和(5~4)都不存在,即定义中所说“除非无别的边可供选择时”,此时就就可以选择(5~1),其他情况下一定要优先选择非桥的边,否则就可能出现无法走通的情况。也就是说该搜索方法无法构成欧拉通路。如下图是选择(5~1)的后果:

而(5~3)和(5~4)则可以顺利完成欧拉图通路的搜索,具体算法实现网上很多,不是本文讨论重点。相信有了算法思想,算法的实现应该不难,有时间我会完善代码。

另外:譬如洒水车问题也是利用欧拉通路解决的经典问题。

时间: 2024-10-05 11:09:41

Fleury (弗罗莱) 算法通俗解释的相关文章

CF 508D(Tanya and Password-欧拉路径,弗罗莱算法)

D. Tanya and Password time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output While dad was at work, a little girl Tanya decided to play with dad's password to his secret database. Dad's password

Fleury(弗罗莱)算法求欧拉回路

转自http://www.cnblogs.com/Lyush/archive/2013/04/22/3036659.html 上面是摘自图论书上的定义. 算法在运行过程中删除了所有已走的路径,也就是说途中残留了所有没有行走的边.根据割边的定义,如果在搜索过程中遇到割边意味着当前的搜索路径需要改进,即提前输出某一个联通子集的访问序列,这样就能够保证访问完其中联通子图中后再通过割边访问后一个联通子图,最后再沿原路输出一开始到达该点的路径.如果只有割边可以扩展的话,只需要考虑先输出割边的另一部分联通子

KMP算法的next[]数组通俗解释

我们在一个母字符串中查找一个子字符串有很多方法.KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度. 当然我们可以看到这个算法针对的是子串有对称属性,如果有对称属性,那么就需要向前查找是否有可以再次匹配的内容. 在KMP算法中有个数组,叫做前缀数组,也有的叫next数组,每一个子串有一个固定的next数组,它记录着字符串匹配过程中失配情况下可以向前多跳几个字符,当然它描述的也是子串的对称程度,程度越高,值越大,当然之前可能出现再匹配的机会就更大.

通俗解释「为什么数据库难以拓展」

"如何通俗解释「为什么数据库难以拓展」",这个问题来自 Quora,题主还补充说自己有一些数据库的基本知识,但依然不理解为什么扩展数据库如此困难.伯乐在线编译摘编了这个问答贴的两个热门回复. Paul King , Facebook 数据科学家(3.6K 赞) 要扩展数据库有四大挑战:搜索.并发性.一致性和速度. 假设你有一张清单,上面有10个人名.如果你想要查找某个人,只需要看一眼清单就行. 但如果清单上有100万个人名呢?这时,你就需要一些策略了.电话簿把人名按照字母顺序排列,这样

二叉树链表中一个结论的证明以及 Successor() 函数中算法的解释

首先, 先明确 “结点 x 的 successor” 的概念. 这句话的概念是, successor 是整个二叉树中, key 仅比 x 的 key 大的结点. 求证: 若 x 有两个孩子, 那么其 successor 没有左孩子. 证明: 若 x 有两个孩子, 则其右子树存在.在二叉树链表中, 对于任意 x 的右子树都是 key 比 x 的 key 大的结点的集合, 即{y|y->key > x->key}.根据 successor  的定义, 若 x->rightChild ≠

协方差、相关系数---通俗解释

一.协方差的意义 学过概率统计的孩子都知道,统计里最基本的概念就是样本的均值,方差,或者再加个标准差.首先我们给你一个含有n个样本的集合,依次给出这些概念的公式描述,这些高中学过数学的孩子都应该知道吧,一带而过. 均值: 标准差: 方差: 很显然,均值描述的是样本集合的中间点,它告诉我们的信息是很有限的, 而标准差给我们描述的则是样本集合的各个样本点到均值的距离之平均.以这两个集合为例,[0,8,12,20]和[8,9,11,12],两个集合的均值都是10,但显然两个集合差别是很大的,计算两者的

通俗解释什么是傅立叶变换

大家一定见过下面这种声音的波形图吧. 大家也一定见过播放音乐时跳动的条形图吧,它将声音分成多个频段,可以显示每个频段的音量. 下面这种频谱图和上图也是类似,颜色亮的地方表示某个频率的音量大.亮点越高表示声音的频率越大,听起来越感觉尖锐. 波形图转换成频谱图的过程中就用到了傅立叶变换. 简单地说,傅立叶变换就是分析一段波形(比如音频.电波)由哪些频率的波形组成,以及它们的强度. 通俗解释什么是傅立叶变换,布布扣,bubuko.com

KMP算法具体解释(贴链接)

------------------------------------------------------------------------------------------------------------------------------------------------------ 欢迎光临天资小屋:http://user.qzone.qq.com/593830943/main --------------------------------------------------

机器学习经典算法具体解释及Python实现--线性回归(Linear Regression)算法

(一)认识回归 回归是统计学中最有力的工具之中的一个. 机器学习监督学习算法分为分类算法和回归算法两种,事实上就是依据类别标签分布类型为离散型.连续性而定义的. 顾名思义.分类算法用于离散型分布预測,如前面讲过的KNN.决策树.朴素贝叶斯.adaboost.SVM.Logistic回归都是分类算法.回归算法用于连续型分布预測.针对的是数值型的样本,使用回归.能够在给定输入的时候预測出一个数值.这是对分类方法的提升,由于这样能够预測连续型数据而不不过离散的类别标签. 回归的目的就是建立一个回归方程