1. 程式人生 > >判斷混合圖(既有有向邊又有無向邊)存在歐拉回路方法

判斷混合圖(既有有向邊又有無向邊)存在歐拉回路方法

  假設有一張圖有向圖G',在不論方向的情況下它與G同構。並且G'包含了G的所有有向邊。那麼如果存在一個圖G'使得G'存在歐拉回路,那麼G就存在歐拉回路。

  其思路就將混合圖轉換成有向圖判斷。實現的時候,我們使用網路流的模型。現任意構造一個G'。用Ii表示第i個點的入度,Oi表示第i個點的出度。如果存在一個點k,|Ok-Ik|mod 2=1,那麼G不存在歐拉回路。接下來則對於所有Ii>Oi的點從源點連到i一條容量為(Ii-Oi)/2的邊,對於所有Ii<Oi的點從i連到匯點一條容量為(Oi-Ii)/2的邊。如果對於節點U和V,無向邊(U,V)∈E,那麼U和V之間互相建立容量為1的邊。如果此網路的最大流等於∑|Ii-Oi|/2,那麼就存在歐拉回路。