欧拉回路:

  欧拉回路,俗称一笔画,比如一笔画五角星等。

  这里给出非严谨的定义:欧拉回路即从一个点出发,不重复、不遗漏地经过所有的边与所有的点,并恰好回到出发点。

  包含欧拉回路的图称为欧拉图。

  欧拉回路在有向图、无向图和混合图(存在有向边和无向边)上有不同的求法,不过原理上是类似的。

判断方法:

  有向图:

    研究欧拉回路的性质我们发现:在有向图的欧拉回路中,每一个点,一定是若干次一进一出,否则无解。

    因此要求每一个点的入度=出度。

  无向图:

    类似有向图,在无向图的欧拉回路中,每一个点也是若干次一进一出。

    因此要求每一个点的度数为偶数。

  混合图:

    这下就不好考虑了,我们需要使用网络流建模。我们想办法从出度和入度入手。

    首先看每一条有向边$(u,v)$,它们一定会为$u$提供1的出度,为$v$提供$1$的入度。

    其次看每一条无向边$(u,v)$,由于其无向,我们暂且随便定一个方向(干脆就$u$->$v$好了),为$u$提供1的出度,为$v$提供1的入度。

    现在每个点的出度和入度看起来是乱七八糟的了。我们期望的,是一个点的出度与入度平衡。

    由于有向边已经固定,没法改变它们对出入度的贡献,那么现在要做的,是将某一些无向边反向,使得所有点的出入度平衡。

    一条边一反向,就会将某一度$-1$,将另一度$+1$。由此如果一个点出入度之差为奇数,那么一定不可能通过无向边的调整使它平衡,此时一定无解。

    设一个点$u$的出度为$out$,入度为$in$。

     如果$out>in$,那么从这个点出发的边太多。它提供$x=\frac{1}{2}(out-in)$条出边可以反向。这样会给每一条出边的终点的$out+1$,$in-1$。那么由源点$S$向$u$连一条容量为$x$的边。

     如果$in>out$,那么到达这个点的边太多。它提供$x=\frac{1}{2}(in-out)$条边可以反向。这样会给每一条入边的起点的$out-1$,$in+1$。那么由$u$向汇点$T$连一条容量为$x$的边。

    基于上述关系,$out>in$的点集可以给$in>out$的点集提供边,使得双方都尽可能平衡,即多的给少的。

    那么对于原图中每一条无向边$(u,v)$,刚刚定的方向是$u$->$v$才得出当前的度数,那么由$u$向$v$连一条容量为$1$的边就好。

    跑最大流,看由$S$出发的边是否全部满流:如果是,则存在欧拉回路;否则不存在欧拉回路。因为这些边满流,代表$out>in$的点已经平衡,可以发现$in>out$的边也恰好平衡了。

    如何输出欧拉回路?根据上述建模方法,如果存在欧拉回路,对于中间的点互连的容量为$1$的边,如果流量为0该无向边就这么定向,如果流量为1,所对应的无向边应该要反向。有向边直接输出即可。

  

  

【Learning】 欧拉回路的求解的更多相关文章

  1. POJ 1637 - Sightseeing tour - [最大流解决混合图欧拉回路]

    嗯,这是我上一篇文章说的那本宝典的第二题,我只想说,真TM是本宝典……做的我又痛苦又激动……(我感觉ACM的日常尽在这张表情中了) 题目链接:http://poj.org/problem?id=163 ...

  2. BZOJ2095 POI2010 Bridges 【二分+混合图欧拉回路】

    BZOJ2095 POI2010 Bridges Description YYD为了减肥,他来到了瘦海,这是一个巨大的海,海中有n个小岛,小岛之间有m座桥连接,两个小岛之间不会有两座桥,并且从一个小岛 ...

  3. 「LuoguP1341」 无序字母对(欧拉回路

    题目描述 给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现. 输入输出格式 输入格式: 第一行输入一 ...

  4. Codeforces 429E - Points and Segments(欧拉回路)

    Codeforces 题面传送门 & 洛谷题面传送门 果然我不具备融会贯通的能力/ll 看到这样的设问我们可以很自然地联想到这道题,具体来说我们可以通过某种方式建出一张图,然后根据" ...

  5. SGU刷题之路开启

    VJ小组:SGU---48h/题 每道做出的题目写成题解,将传送门更新在这里. SGU:101 - 200 SGU - 107 水题 解题报告 SGU - 105 找规律水题 解题报告 SGU - 1 ...

  6. ACM/ICPC 之 DFS求解欧拉回路+打表(POJ1392)

    本题可以通过全部n位二进制数作点,而后可按照某点A的末位数与某点B的首位数相等来建立A->B有向边,以此构图,改有向图则是一个有向欧拉回路,以下我利用DFS暴力求解该欧拉回路得到的字典序最小的路 ...

  7. 机器学习---用python实现最小二乘线性回归算法并用随机梯度下降法求解 (Machine Learning Least Squares Linear Regression Application SGD)

    在<机器学习---线性回归(Machine Learning Linear Regression)>一文中,我们主要介绍了最小二乘线性回归算法以及简单地介绍了梯度下降法.现在,让我们来实践 ...

  8. Machine Learning系列--隐马尔可夫模型的三大问题及求解方法

    本文主要介绍隐马尔可夫模型以及该模型中的三大问题的解决方法. 隐马尔可夫模型的是处理序列问题的统计学模型,描述的过程为:由隐马尔科夫链随机生成不可观测的状态随机序列,然后各个状态分别生成一个观测,从而 ...

  9. 算法笔记_148:有向图欧拉回路求解(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 Description A catenym is a pair of words separated by a period such that t ...

随机推荐

  1. kindeditor使用

    下载地址http://kindeditor.net/down.php @官方文档 使用步骤: 引入js <script charset="utf-8" src="r ...

  2. 《CSS动画实用技巧》课程笔记

    概述 这是我学习[CSS动画实用技巧][1]的课程笔记 常用动画属性--transition [常用动画属性--transition][2] .change img{ display:block; w ...

  3. C# TCP 了解

    参考:http://www.jb51.net/article/118682.htm 一: TCP 粘包原理:发送方发送若干数据给接收方时粘成一包.从接收缓冲区看,后一包的头紧接前一包的数据的尾. 发送 ...

  4. Nginx Https配置不带www跳转www

    把 morethink.cn和www.morethink.cn合并到一个server上去,使用301永久重定向. 然后将 https://morethink.cn 转到 https://www.mor ...

  5. 浅谈最大流的Dinic算法

    PART 1 什么是网络流 网络流(network-flows)是一种类比水流的解决问题方法,与线性规划密切相关.网络流的理论和应用在不断发展,出现了具有增益的流.多终端流.多商品流以及网络流的分解与 ...

  6. 【mac】ssh免登录密码

    mac ssh免登录密码 在mac或者Linux上需要使用ssh登服务器,每次都需要输密码感觉很麻烦,搜了一下找到一个脚本,实践后发现可行. 1.创建脚本xx.sh $ vim xx.sh 输入: # ...

  7. transfer-webpack-plugin最简使用示例

    转移文件的插件 加载插件 $ npm install transfer-webpack-plugin --save-dev API new CopyWebpackPlugin(patterns: Ar ...

  8. if语句中同时判断多个条件的多种方法

    总结一下自己经常用到的python中的if语句同时判断多个条件的不同方法,假设有: x, y, z = 0, 1, 0 方法一,多个逻辑运算符一起使用,这也是最常用的写法: if x == 1 or ...

  9. 为什么说http协议是无状态的?

    首先了解基本概念:什么是无状态,什么是无连接 无状态协议: 协议的状态是指下一次传输可以“记住”这次传输信息的能力. http是不会为了下一次连接而维护这次连接所传输的信息,为了保证服务器内存. 比如 ...

  10. Codevs 3990 [中国剩余定理]

    模板题 注意如何得到[a,b]区间范围内的解 #include <iostream> #include <cstdio> #include <cstring> #i ...