离散复习资料之一(Fleury算法)

下面介绍一下:“什么叫做欧拉回路?”。

欧拉回路:有一条路从开始的位置到结束的位置都是同一个位置,经过了所有的点且通过了所有的边,通过的次数只能一次。比如著名的“哥尼斯堡七桥问题”

欧拉路:在欧拉回路的基础上面改一个条件。就是有一条路使得从开始的位置到结束的位置不是一个位置。

 

总结:具有一条经过所有边的简单回路,称欧拉回路,含欧拉回路的图称为欧拉图;如果图G中具有一条经过所有边的简单(非回路)路径,称欧拉路!

欧拉回路和欧拉路也有一个充分的判断条件。

欧拉回路:每一个结点都是偶结点。欧拉路:存在两个结点是奇结点。其余的是偶结点。

Fleury算法步骤如下:

1.任取Vo属于V(G),令Po = Vo 2.设Pi = Voe1V1e2.....eiVi,

如果E(G)-{e1,e2,...ei}中没有与Vi关联的边,则计算停止;否则按下述的条件从E(G)-{e1,e2,e3...ei}中任取一条边ei+1;

(a)ei+1与vi相关联。

(b)除非无别的边可供选择,否则ei+1不应该选择Gi = G-{e1,e2,e3...ei}中的桥。

 设ei+1=(Vi,Vi+1),把ei+1Vi+1加入Pi,

 3.令i = i+1,返回2.


大致意思就是:

他先把图形建立,随便选择开始点,把Vi的点对应的边设置为ei+1,结束条件就是如果此时的这一点没有关联的边的时候则算法结束(简单的说就是存在可以找的到的一条欧拉回路的判断条件。)。否则你随便可以选择哪一条边走,选择边的时候,除非没有别的边可以提供你选择,否则不要去选择过桥。

以上就是他的计算方法,他的思路其实很简单,采用的思想选择含一点递归思想,就是不断的选择边,当时在选择边的时候有一种边叫做桥,在是不是选择过桥的时候,加一点条件就可以了。


桥的概念就是:

  你走过的路度可以看作消失了,之后当你走到一个点的时候,你发现你没有路可以走的时候,那么你之前走过的那条路就称为桥。

  当然我们知道了什么叫做桥。我们还应该明白什么时候我们要去过桥,什么时候我们不去过桥。

  在此我们有一句口诀:“能不过桥,绝对不过桥。


下面来一个图,让我们去看求一条简单欧拉回路。

就是从1开始遍历所有的点,然后回到原点,组成一个简单的欧拉回路。

让我们看一个很著名的选择路径的问题。

如图是一个欧拉图,某人用Fleury算法求这个图中的欧拉回路是什么?

一个走了一些简单回路 v1e1 -->  v2e2 -->  v3e3 --> v4e14 --> v9e10 -->  v1e8 -->  v8e8 -->  v9e2之后,无法进行下去试着分析一下他在哪一步出现了问题?

原图如下:


       

下面我借上面的走法去解释一下:

首先就是V1e1

走V2e2

走V3e3

走V4e14

走V9e10

走V2e9

走V8e8

从上面我们可以看的出,就是最后的一次选择路径的时候,使得路由连通的变为不连通图,所以那一条边是“桥”。

整理下思路:

首先,我们知道存在开始点和未走的点的图不连通了。也就是V1和V7,V6,V5的连通性是不连通的。因为他选择的路径是如下图:


我们可以看到,存在一些点,未走过点,要想走完,就得一些边走第二遍,所以这是明显不可能。此时求得图,也不是欧拉回路图。

欧拉回路中,要求就是点可以过几次,但是边只能过一次,而且起点和终点在同一点。

所以我们在选择边的时候只要记得选择的要求就可以了。


以上就是Fleury算法求欧拉回路的简单过程。

posted @ 2017-06-03 15:03  让你一生残梦  阅读(4867)  评论(1编辑  收藏  举报