1. 程式人生 > >歐拉回路、尤拉通路---知識點詳解(連載ing)

歐拉回路、尤拉通路---知識點詳解(連載ing)

尤拉通路: 通過圖中每條邊且只通過一次,並且經過每一頂點的通路

歐拉回路: 通過圖中每條邊且只通過一次,並且經過每一頂點的迴路

有向圖的基圖:忽略有向圖所有邊的方向,得到的無向圖稱為該有向圖的基圖。 

無向圖

  設G是連通無向圖,則稱經過G的每條邊一次並且僅一次的路徑為尤拉通路;

 如果尤拉通路是迴路(起點和終點是同一個頂點),則稱此迴路是歐拉回路

  具有歐拉回路的無向圖G成為尤拉圖

有向圖

(1)設D是有向圖,D的基圖連通,則稱經過D的每條邊一次並且僅有一次的有向路徑為 有向尤拉通路

(2)如果有向尤拉通路是有向迴路,則稱此有向迴路為  有向歐拉回路

(3)具有有向歐拉回路的圖D稱為有向尤拉圖

定理

 無向圖G存在尤拉通路的充要條件是:G為連通圖,並且G僅有兩個奇度結點(度數為奇數的頂點)或者無奇度結點。

推論

(1) 當G是僅有兩個奇度結點的連通圖時,G的尤拉通路必以此兩個結點為端點;

(2)當G是無奇度結點的連通圖時,G必有歐拉回路

(3)G為尤拉圖(存在歐拉回路)的充分必要條件是  G為無奇度結點的連通圖

 

(有向圖) 定理

有向圖D存在尤拉通路的充要條件是:D為有向圖,D的基圖連通,並且所有頂點的出度與入度相等;或者  除兩個頂點外,其餘頂點的出度與入度都相等,而這兩個頂點中一個頂點的出度與入度之差為1,另一個頂點的出度與入度之差為-1.

推論

(1)當D除出、入度之差為1,-1的兩個頂點之外,其餘頂點的出度與入度相等時,D的有向尤拉通路必以出、入度之差為1的頂點作為始點,以出、入度之差為-1的頂點作為終點。

(2)當D的所有頂點的出、入度都相等時,D中存在有向歐拉回路。

(3)有向圖D為有向尤拉圖的充要條件是  D的基圖為連通圖,並且所有頂點的出、入度都相等。

 

 

歐拉回路的求解

兩種方法:(1)DFS搜尋  (Fleury)佛羅萊演算法

(1)DFS搜尋 思想求解歐拉回路的思路為:利用尤拉定理判斷出一個圖存在尤拉通路或歐拉回路後,選擇一個正確的起始頂點,用DFS演算法遍歷所有的邊(每條邊只遍歷一次),遇到走不通就回退。在搜尋前進方向上將遍歷過的邊按順序記錄下來。這組邊的排列就組成了一條尤拉通路或迴路。

(2) (Fleury)佛羅萊演算法

設G為一個無向尤拉圖,求G中一條歐拉回路的演算法如下:

(1) 任取G中一頂點v0,令P0=v0;

(2)假設沿Pi=v0e1v1e2v2......eivi走到頂點vi,按下面方法從E(G)-{e1,e2,...,ei}中選ei+1。

        ei+1與vi相關聯

        除非無別的邊可供選擇,否則ei+1不應該是Gi=G-{e1,e2,...,ei}中的橋。

(3)當(2)不能再進行時演算法停止。

        可以證明的是,當演算法停止時,所得到的簡單迴路Pm=v0e1v1e2v2......emvm,(vm=v0)為G中一條歐拉回路。