混合图的欧拉回路

     大家都说去看黑书,我看了一下,说得不是一般的隐晦.说一下我是怎么理解的:首先方法是最大流,先忽略有向边,把所有无向边随便定个方向来建立图G,边的容量设为1,并记录每个结点的入度和出度.然后检查每个结点的入度与出度之差是不是偶数,如果发现其中一个是奇数,那么无论怎样调整无向边的方向,都不能使该结点的入度和出度相等,于是该图不存在欧拉回路.通过了检测后,要做的就是调整无向边的方向令各点的入度和出度相等.首先要知道,对于每个结点,需要调整的临边的数目是|入度-出度|/2.然后将度数看作流,根据流平衡条件,我们可以从源点提供度数给那些入度不足的结点,然后对那些出度不足的结点,把它们过多的入度排到汇点.具体一点,就是对每个出度大于入度的结点,从源点连一条边到自身;对每个入度大于出度的结点,从自身连一条边到汇点.这些边的容量就是需要调整的临边数目.最后,对图G求最大流,若所有边(s,v)(v = 1,2,3...n)均满载,则说明原始图存在欧拉回路,否则无解.
     解的方案就是原始图的有向边+图G中流量为1的边+图G中流量为0的边(调整过的无向边).
posted @ 2009-03-20 20:24  Beetlebum  阅读(555)  评论(2编辑  收藏  举报