本文主要是介绍快乐暑假(八)——欧拉回路和哈密顿回路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
欧拉回路
定义
欧拉回路:图G中每条边且只通过一次,并且经过每一顶点的回路
欧拉通路:(欧拉路径):图G中每条边且只通过一次,并且经过每一顶点的通路
欧拉图:存在欧拉回路的图
半欧拉图:存在欧拉通路的图
极大连通子图:在一个连通子图中,包含和顶点有关所有的边(the more the better),那就是极大连通子图。
判定一个图是否是(半)欧拉图
无向图:
定理1:无向图G为欧拉图,当且仅当G为连通图且所有顶点的度为偶数。
推论1:无向图G为半欧拉图,当且仅当G为连通图且除了两个顶点的度为奇数外,所有顶点的度为偶数。
有向图:
定理2:有向图 G {G} G为欧拉图,当且仅当 G {G} G的基图为连通图,且所有顶点的入度等于出度。
注:有向图的基图就是去掉所有方向的无向图。
推论2:有向图 G {G} G为半欧拉图,当且仅当 G {G} G的基图为连通图,且存在顶点 u {u} u的入度比出度大1, v {v} v的出度比入度大1,且其他的所有顶点的入度等于出度。
对于求解欧拉回路的,我们还需要以下两个性质:
- 设 C {C} C是欧拉图 G {G} G中的一个简单的回路,将 C {C} C中的边从图 G {G} G中删去的带一个新的图 G 1 {G^{1}}
这篇关于快乐暑假(八)——欧拉回路和哈密顿回路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!