码迷,mamicode.com
首页 > 其他好文 > 详细

对欧拉回路的一些理解

时间:2014-10-06 21:49:20      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   sp   2014   问题   c   log   

欧拉回路的简单定义:对一个连通图来说,如果遍历这个图的时候可以把每条边都遍历一次,并且只能遍历一次,那么此图便有欧拉回路。

 

上面的红体字也就说明了判断一个图是否有欧拉回路的关键:

                           1. 必须是连通图   2.每条边必须且只能遍历一次。

 

那么首先我们要解决第一个问题: 如何判断一个图是否连通呢?

    这里提供两种解决方案: 1.dfs深搜   看看是不是能够访问到所有的顶点。如果能,则连通。反之,则不能;

               2. 通过并查集。 将所有顶点加入集合后,判断一共有多少个祖先,如果祖先数大于1,则不是连通图,如果等于1 则连通。

 

下面,我们来考虑第二个问题,如何检测每条边遍历一次呢?

 

    有向图: 入度 = 出度

    无向图: 所有顶点的度为偶数

仔细想一想便可以得到这个结论。

 

再附上我的错误思路:

    一开始我以为可以通过直接判断一个图的度来是否是欧拉回路,我以为也可以通过度是否为0来判断是否连通,可是这样不对~下面的图就是反例

bubuko.com,布布扣

 

对欧拉回路的一些理解

标签:style   blog   http   color   sp   2014   问题   c   log   

原文地址:http://www.cnblogs.com/ltwy/p/4008597.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!