1. 程式人生 > >新知識添加·歐拉回路+歐拉路徑

新知識添加·歐拉回路+歐拉路徑

應該 路徑 求解 兩種方法 遍歷 fleury 歐拉路 必要條件 bsp

§概念

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

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

歐拉環:圖中經過每條邊一次且僅一次的環;

歐拉路徑:圖中經過每條邊一次且僅一次的路徑;

歐拉圖:有至少一個歐拉環的圖;

半歐拉圖:沒有歐拉環,但有至少一條歐拉路徑的圖;

基圖:對一個圖而言把所有邊視作無向邊得到其基圖,即將所有有向邊變成無向邊形成的無向圖。

無向圖

設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中一條歐拉回路。

加一道簡單題 洛谷-1341(詳情見圖論雜題專題)

2017-10-20 13:57:14 Hathaway

新知識添加·歐拉回路+歐拉路徑