2023年 1月15日 尤拉迴路 學習整理

2021-07-28 20:40:15 字數 2328 閱讀 9344

尤拉迴路

尤拉通路: 通過圖中每條邊且只通過一次

,並且經過每一頂點的

(頂點並不要求都應經過一遍)

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

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

無向圖設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)-中選ei+1。

ei+1與vi相關聯

除非無別的邊可供選擇,否則ei+1不應該是gi=g-中的橋。

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

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

備註知識:

設無向圖g(v,e)為連通圖,若邊集e1屬於e,在圖g中刪除e1中所有的邊後得到的子圖是不連通的,而刪除了e1的任一真子集後得到的子圖是連通圖,則稱e1是g的乙個割邊集。若一條邊構成乙個割邊集,則稱該邊為割邊,或橋

dfs方法**樣例:

1 #include2 #include3 #include4

#define n 105

5using

namespace

std;

6int n,m,map[n][n],du[n],pre[105],step=0;7

void dfs(int

start) 13}

14 pre[++step]=start;15}

16int

main()

1726

int k=0,start=1;27

for(int i=1;i<=n;i++)

30if(k==0) printf("

g is a oula huilu\n");

31if(k==2) printf("

g is a oula tonglu\n");

32if(k!=0&&k!=2)

33dfs(start);

34 printf("

start is %d\n

",start);

35for(int i=1;i<=step;i++)

36 printf("

%d "

,pre[i]);

37return0;

38 }

2023年4月15日集訓

題目描述 演算法實現 include include define inf 1000 define maxn 5 儲存迷宮 int maze maxn maxn 記憶化陣列,儲存當前結點到終點的最短路勁 int record maxn maxn 記錄還未訪問的結點,避免結點被重複訪問 bool vi...

2023年2月15日實習日記

重灌了一下qemu,終於執行成功。rhel7成功載入起掛在vgpu的guest。可能是qemu的問題,也可能是 img 檔案多次重啟 之前幾乎都是強制殺死qemu程序而關機的,img可以有所損傷 不過終於載入了 vgpu。發個圖慶祝一下,哈哈,還好沒放棄。mentor說執行幀數不對,明天再看看是啥情...

2023年1月15日訓練日記

今天剛剛出去跑步了才想起來部落格沒寫,序列 s s 被稱為 heapable 當且僅當存在乙個二叉樹 t n 個點均作為 t 的乙個節點,且滿足任意非根節點 sisi 和其父節點 sjsj sj sisj si 且 j現在有乙個序列 a1,a2,ana1,a2,an 相應將其分成若干個 heapab...