離散復習資料之一(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算法求歐拉回路的簡單過程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM