图论·欧拉迹

欧拉路径或者欧拉回路都要求经过给定图$G$中所有边恰好一次,在此之上欧拉回路还要求路径是闭合的,即能找到一条从某点出发并以此点为终点的欧拉路径。二者均称为欧拉迹。对于无向图,存在欧拉迹当且仅当图中度数为奇数的结点数目为$0$或$2$。如果图$G$中所有结点度数均为偶数,那么图中的所有欧拉迹均为欧拉回路;而如果度数为奇数的结点数目恰好为$2$,则图中所有欧拉迹均为非闭合的欧拉路径。

下面给出一些摘自wiki关于欧拉迹的性质:

  • 一个无向图能够被分解成若干个边集互不相交的环当且仅当图中所有结点度数均为偶数当且仅当图存在欧拉回路。
  • 一个有向图存在欧拉回路当且仅当图中所有结点出度入度均相等。
  • 一个有向图存在欧拉路径当且仅当图中至多存在一个出度比入度大$1$的结点,至多存在一个入度比出度大$1$的结点,其余结点出入度均相等

给出找出无向图$G$中欧拉回路的Hierholzer算法(线性时间复杂度):

  • 任选一个起点,从该点选择为访问的边到达下一个结点,可以断定在返回起点之前不会被阻塞,因为结点的度数为偶数,但不能确定访问所有边。
  • 从以上路径中任意邻接边为被全部访问的结点执行同样操作,得到另一个环,与上一个环合并,持续此操作至所有边均被访问。

此外用的比较多的是fleury算法:

  • 维护一个栈,开始时将任一个结点压栈,从这个结点开始进行dfs,每访问一个边就将其删除,如果我们在某个点没有可选边,说明之前删除了某条桥,弹栈至重新可继续此操作
  • 弹栈序列即为一条欧拉回路

转载于:https://www.cnblogs.com/astoninfer/p/5755132.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值