欧拉图问题(Euler Graph)

欧拉通路(Euler path or Euler tour):我们从有向图或者无向图中的任意一点出发,将所有的边遍历且仅遍历一次的通路序列我们称之为是欧拉通路,点可多次遍历
欧拉回路(Euler circuit):如果我们的欧拉通路的起点和终点是一样的我们称之为欧拉回路
欧拉图(Euler graph):具有欧拉回路的图称之为欧拉图,规定只有一个顶点的空图属于欧拉图
半欧拉图:只具有欧拉通路的图我们称之为是半欧拉图

1.定理:

①无向图G是欧拉图的充分必要条件是:G是连通图并且没有奇数度顶点

必要性:图G是欧拉图,证明G中没有奇数度节点
G是欧拉图——G中存在欧拉回路——欧拉回路中每个点每出现在欧拉回路的序列中就必定会获得两个度——所以欧拉序列中的所有的点必然都是偶数度的节点——不存在奇数度的节点
充分性:G中没有奇数度的节点,证明G是欧拉图——数学归纳法
假设边数是m
1.m=1,没有奇数度节点——该边只能是一个环——G是欧拉图
2.假设m<=k成立,现在证明m=k+1成立
G连通且没有奇数度顶点——G中必然存在圈——删去圈上的所有的边——假设获得了s个连通分量,每个连通分量有最多k条边,并且都是偶数度的节点(圈上的边每条给顶点贡献两个度)——根据上述的归纳假设每个连通分量都是一个欧拉图——我们现在将圈复原——必然存在一条欧拉回路连接了所有的节点并回到原点(这条回路的主路就是刚才删去的圈,每次进入连通分量的时候,遍历连通分量的欧拉回路在出来继续走圈)

②无向图G是半欧拉图的充分必要条件是:G是连通的并且恰好有两个奇数度顶点

必要性:图G是半欧拉图,证明G中恰好有两个奇数度的顶点
G是半欧拉图,存在一条欧拉通路——通路上非端点节点必然是偶数度的——通路上的两个端点,必然都是奇数度
充分性:图G是连通的并且恰好有两个奇数度的顶点,证明G是半欧拉图
假设现在我们向G中添加一条连接两个奇数度顶点的边,那么必然满足欧拉图的性质——存在欧拉回路——那么我们将欧拉回路中的那条新加的边删去就会的到一条端点是两个奇数度顶点的欧拉通路
定理2拓展,如果我们想要一笔画完一个半欧拉图我们,假设半欧拉图中有2*k个边,我们最少需要k笔才可以画完这个半欧拉图,原因就是每一次遍历走完两个奇数度顶点之间的欧拉通路,知道所有的奇数度顶点都走完位置图就遍历完了

③有向图G是欧拉图的充分必要条件是图是强连通,并且每个定点的入度等于出度

④有向图G是半欧拉图的充分必要条件是图单向连通并且恰好有两个奇数度顶点,这两个奇数度顶点一个的出度比入度大1,另一个刚好反过来,其余的顶点的出度等于入度

⑤G是非平凡的欧拉图当且仅当G是连通的并且是若干个边不重合的圈的并

2、求解欧拉图

DFS算法

DFS应用——寻找欧拉回路
时间复杂度为O(|E|+|V|)

Hierholzer 算法

Fleury算法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值