中文名 | 歐拉回路 | 外文名 | Eulerian Path |
---|---|---|---|
判????斷 | 無向圖存在歐拉回路等 | 解????法 | 無向圖歐拉回路解法等 |
應用領域 | 信息學 圖論 | 發(fā)現(xiàn)者 | 歐拉 |
以下判斷基于此圖的基圖連通。
無向圖存在歐拉回路的充要條件
一個無向圖存在歐拉回路,當且僅當該圖所有頂點度數(shù)都為偶數(shù),且該圖是連通圖。
有向圖存在歐拉回路的充要條件
一個有向圖存在歐拉回路,所有頂點的入度等于出度且該圖是連通圖。
混合圖存在歐拉回路條件
要判斷一個混合圖G(V,E)(既有有向邊又有無向邊)是歐拉圖,方法如下:
假設有一張圖有向圖G',在不論方向的情況下它與G同構。并且G'包含了G的所有有向邊。那么如果存在一個圖G'使得G'存在歐拉回路,那么G就存在歐拉回路。
其思路就將混合圖轉換成有向圖判斷。實現(xiàn)的時候,我們使用網(wǎng)絡流的模型?,F(xiàn)任意構造一個G'。用Ii表示第i個點的入度,Oi表示第i個點的出度。如果存在一個點k,|Ok-Ik|mod 2=1,那么G不存在歐拉回路。接下來則對于所有Ii>Oi的點從源點連到i一條容量為(Ii-Oi)/2的邊,對于所有Ii
無向圖歐拉回路解法
求歐拉回路的一種解法
下面是無向圖的歐拉回路輸出代碼:注意輸出的前提是已經(jīng)判斷圖確實是歐拉回路。
C語言代碼,不全,請不要直接粘貼。
intnum=0;//標記輸出隊列 intmatch[MAX];//標志節(jié)點的度,無向圖,不區(qū)分入度和出度 voidsolve(intx) { if(match[x]==0) Record[num ]=x; else { for(intk=0;k<=500;k ) { if(Array[x][k]!=0) { Array[x][k]--; Array[k][x]--; match[x]--; match[k]--; solve(k); } } Record[num ]=x; } }
pascal代碼:
求無向圖的歐拉回路(遞歸實現(xiàn))
programeuler; constmaxn=10000;{頂點數(shù)上限} maxm=100000;{邊數(shù)上限} typetnode=^tr; tr=record f,t:longint;{邊的起始點和終止點} al:boolean;{訪問標記} rev,next:tnode;{反向邊和鄰接表中的下一條邊} end; varn,m,bl:longint;{頂點數(shù),邊數(shù),基圖的極大連通子圖個數(shù)} tot:longint; g:array[1..maxn]oftnode; d:array[1..maxn]oflongint;{頂點的度} fa,rank:array[1..maxn]oflongint;{并查集中元素父結點和啟發(fā)函數(shù)值} list:array[1..maxm]oftnode;{最終找到的歐拉回路} o:boolean;{原圖中是否存在歐拉回路} procedurebuild(ta,tb:longint);{在鄰接表中建立邊(ta,tb)} vart1,t2:tnode; begin t1:=new(tnode); t2:=new(tnode); t1^.f:=ta; t1^.t:=tb; t1^.al:=false; t1^.rev:=t2; t1^.next:=g[ta]; g[ta]:=t1; t2^.f:=tb; t2^.t:=ta; t2^.al:=false; t2^.rev:=t1; t2^.next:=g[tb]; g[tb]:=t2; end; proceduremerge(a,b:longint);{在并查集中將a,b兩元素合并} varoa,ob:longint; begin oa:=a; whilefa[a]<>adoa:=fa[a]; fa[oa]:=a; ob:=b; whilefa[b]<>bdob:=fa[b]; fa[ob]:=b; ifa<>bthenbegin dec(bl);{合并后,基圖的極大連通子圖個數(shù)減少1} ifrank[a]=rank[b]theninc(rank[a]); ifrank[a]>rank[b]thenfa[b]:=aelsefa[a]:=b; end; end; procedureinit;{初始化} vari,ta,tb:longint; begin fillchar(fa,sizeof(fa),0); fillchar(rank,sizeof(rank),0); fillchar(d,sizeof(d),0); readln(n,m); fori:=1tondofa[i]:=i; bl:=n; fori:=1tomdobegin readln(ta,tb); build(ta,tb); inc(d[tb]); inc(d[ta]); merge(ta,tb); end; end; proceduresearch(i:longint);{以i為出發(fā)點尋找歐拉回路} varte:tnode; begin te:=g[i]; whilete<>nildobegin ifnotte^.althenbegin te^.al:=true; te^.rev^.al:=true; search(te^.t); list[tot]:=te; dec(tot); end; te:=te^.next; end; end; proceduremain;{主過程} vari:longint; begin o:=false; fori:=1tondo ifd[i]=0thendec(bl);{排除孤立點的影響} ifbl<>1thenexit;{原圖不連通,無解} fori:=1tondo ifodd(d[i])thenexit;{存在奇點,無解} o:=true; fori:=1tondo ifd[i]<>0thenbreak; tot:=m; search(i);{從一個非孤立點開始尋找歐拉回路} end; procedureprint;{輸出結果} vari:longint; begin ifnotothenwriteln('Nosolution.')elsebegin writeln(list[1]^.f); fori:=1tomdowriteln(list[i]^.t); end; end; begin init; main; print; end.
注意record中的點的排列是輸出的倒序,因此,如果要輸出歐拉路徑,需要將record倒過來輸出。
求歐拉回路的思路:
循環(huán)的找到出發(fā)點。從某個節(jié)點開始,然后查出一個從這個出發(fā)回到這個點的環(huán)路徑。這種方法不保證每個邊都被遍歷。如果有某個點的邊沒有被遍歷就讓這個點為起點,這條邊為起始邊,把它和當前的環(huán)銜接上。這樣直至所有的邊都被遍歷。這樣,整個圖就被連接到一起了。
具體步驟:
1。如果此時與該點無相連的點,那么就加入路徑中
2。如果該點有相連的點,那么就加入隊列之中,遍歷這些點,直到?jīng)]有相連的點。
3。處理當前的點,刪除走過的這條邊,并在其相鄰的點上進行同樣的操作,并把刪除的點加入到路徑中去。
4。這個其實是個遞歸過程。
歐拉回路是數(shù)學家歐拉在研究著名的德國哥尼斯堡(Koenigsberg)七橋問題時發(fā)現(xiàn)的。如圖1所示,流經(jīng)哥尼斯堡的普雷格爾河中有兩個島,兩個島與兩岸共4處陸地通過7座楊 彼此相聯(lián)。7橋問題就是如何能從任一處陸地出發(fā),經(jīng)過且經(jīng)過每個橋一次后回到原出發(fā)點。
這個問題可抽象為一個如圖2所示的數(shù)學意義上的圖,其中4個結點分別表示與4塊陸土Il 對應,如結點C對應河岸C,結點A對應島A等,而結點之間的邊表示7座橋。
歐拉由此提出 了著名的歐拉定理。
1)歐拉路:通過圖中所有邊的簡單路。
2)歐拉回路:閉合的歐拉路。
3)歐拉圖:包含歐拉回路的圖。
沒拉閘,如果拉閘,是跳到下面,那個黑色的小方塊會突出來,現(xiàn)在所有的開關都在上面,而且下方的小黑方塊也沒突出。 如果被拉閘了,先將小黑方塊按下去,再把開關推到上面就可以。 如果現(xiàn)在家里沒電,查看一下...
看看溫控器的設置是否有問題。如果溫控器是機械式的,估計是調(diào)在0檔上了,把檔位調(diào)在1-2檔處通電,只要電源電壓正常就應該啟動工作,否則就說明是電壓太低造成的,應配置穩(wěn)壓器才行。:?首先檢查插座正常否?如...
通電線路不好 剛買的有保修可以直接聯(lián)系經(jīng)銷商啊,讓他們來處理。
格式:pdf
大?。?span id="hzypsxu" class="single-tag-height">4.7MB
頁數(shù): 18頁
評分: 4.7
圖論講義第4章-歐拉圖與hamilton圖
18世紀,著名的數(shù)學家歐拉曾經(jīng)研究過摩擦力跟繩索繞在柱子上的圈數(shù)之間的關系。得出了著名的“歐拉韁繩理論”
歐拉─伯努利梁方程內(nèi)容描述了梁的位移與載重的關系:
歐西瑪F4全自動重布拉布機(鋪布機)
特長
無布停機,自動駛回定點。
五分鐘無使用時,自動關機。
緊急停止時,已下放布料不會拖拉。
流線外型、降低風阻、減少噪音、減低震動。
PLC觸控屏幕操作系統(tǒng)。
無張力式拉布作業(yè)。
簡化操作、提高生產(chǎn)效率、確保質(zhì)量。
可傾斜布槽,方便布料進出。
標準配備
拉布長度設定記憶裝置.拉布機之加減速度計算機控制
槽式自動追踨松布裝置
緊急停止裝置.自動上升裝置
依布寬設定裁刀行走距離.層數(shù)計數(shù)器
對邊裝置.切刀裝置
回裝置(卷支布料)
單側固定式移動折布器.雙拉用固定折布器
可傾斜布槽。
主要裝置
液晶觸控裝置:簡易設定拉布長度、方式、數(shù)量、速度及段落。
切刀裝置:切刀和主機可以簡單地進行拆裝,布料切斷時可以依布寬設定裁刀行走距離及切斷速度。
折布裝置:可作單向及往返拉布。
自動布料預松裝置:先松布再鋪放,消除拉布張力并保持拉布質(zhì)量的一致性。
電眼自動對邊裝置:在拉布順序運作過程中可以正確做到自動對邊。
布尾感應器裝置:布料拉完時控制主機自動停止運作,并自動駛回固定點。
自動上升裝置:可依布料厚度設定上升量,配合拉布。
緊急停止裝置:于裁床兩側設有停機用鋼索,可隨時于裁床任何位置拉動鋼索作緊急停機。2100433B