首页 > 代码库 > 图论——欧拉通路、欧拉回路(有向图无向图混合图)

图论——欧拉通路、欧拉回路(有向图无向图混合图)

之前稍微了解有向图、无向图、混合图的欧拉通路、欧拉回路,这里做下笔记,以便日后翻阅。

 

 

无向图:

存在欧拉回路的条件:原图连通,每个结点均为偶度结点。

存在欧拉通路的条件:存在欧拉回路,或原图连通,有两个结点为奇度结点,其他结点均为偶度结点。

 

有向图:

存在欧拉回路的条件:基图连通,每个结点的入度等于出度。

存在欧拉通路的条件:存在欧拉回路,或基图连通,有一个结点入度等于出度+1,有一个结点出度等于入度+1,其他结点的入度等于出度。

 

混合图:

存在欧拉回路的条件:

1.将无向边随便定向,每个结点的入度与出度之差为偶数。

2.进行网络流,若满流,则存在欧拉回路。

(网络流构图:忽略有向边。对于随便定向的无向边,按照所定向连边,流量为1 。对于入度大于出度的点u,连边(u,T),流量为 abs( (in[u]-out[u])/2 )。对于出度大于入度的点v,连边(S,v),流量为abs( (in[v]-out[v])/2 ))。

 

存在欧拉通路的条件:存在欧拉回路,或

1.将无向边随便定向,有两个结点的入度与出度之差为奇数,其他结点的入度与出度之差为偶数。

2.在两个奇度结点间连一条无向边,进行网络流,若满流,则存在欧拉通路。

(网络流构图:忽略有向边。对于随便定向的无向边,按照所定向连边,流量为1 。对于入度大于出度的点u,连边(u,T),流量为 abs( (in[u]-out[u])/2 )。对于出度大于入度的点v,连边(S,v),流量为abs( (in[v]-out[v])/2 ))。

 

 

混合图的求解过程其实是,无向边有向化,求解有向图的欧拉路。

而求解有向图、无向图的欧拉路类似队列搜。

 

以上,有错望指出。

图论——欧拉通路、欧拉回路(有向图无向图混合图)