首页 > 代码库 > 对欧拉回路的一些理解
对欧拉回路的一些理解
欧拉回路的简单定义:对一个连通图来说,如果遍历这个图的时候可以把每条边都遍历一次,并且只能遍历一次,那么此图便有欧拉回路。
上面的红体字也就说明了判断一个图是否有欧拉回路的关键:
1. 必须是连通图 2.每条边必须且只能遍历一次。
那么首先我们要解决第一个问题: 如何判断一个图是否连通呢?
这里提供两种解决方案: 1.dfs深搜 看看是不是能够访问到所有的顶点。如果能,则连通。反之,则不能;
2. 通过并查集。 将所有顶点加入集合后,判断一共有多少个祖先,如果祖先数大于1,则不是连通图,如果等于1 则连通。
下面,我们来考虑第二个问题,如何检测每条边遍历一次呢?
有向图: 入度 = 出度
无向图: 所有顶点的度为偶数
仔细想一想便可以得到这个结论。
再附上我的错误思路:
一开始我以为可以通过直接判断一个图的度来是否是欧拉回路,我以为也可以通过度是否为0来判断是否连通,可是这样不对~下面的图就是反例
对欧拉回路的一些理解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。