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

欧拉回路

时间:2017-12-06 23:53:20      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:重复   ora   ati   次数   style   通过   顶点   基础   under   

如果图G中存在一条路径,该路径恰好包含图中的每条边且仅包含一次,那么称该路径为欧拉路径。如果路径的起点和终点重合,则称为欧拉回路

命题1:对于一个有向图G(V,E),若V中每个顶点都至少与一条边相连。则G为连通图,且每个顶点的出度和入度一致是图G含欧拉回路的充分必要条件。

证明:=============================================================

  必要性很容易证明,若G中含欧拉回路,设回路的起点和终点为s,则显然该回路上覆盖了V中所有顶点,因此图G连通。由于是回路,我们每次沿着一条入边进入一个顶点对应也要沿着一条出边离开这个顶点,即我们进入顶点和离开顶点的次数一致,结合欧拉回路含括所有边,因此所有顶点的入度和出度一致。

  充分性可以利用归纳法证明。假设后述所有图都满足所有顶点的入度和出度一致以及图为连通图这两条性质。当图中只有一个顶点时,显然该图是含有欧拉回路的(边只能从同一个点到同一个点)。当图中包含少于k个顶点时,图中含有欧拉回路,则对于包含k个顶点的图G(V,E),我们要证明欧拉回路依旧存在。首先由于图连通,因此我们可以任取一个顶点s作为原点,并寻找一条覆盖了所有V中顶点的不含重复边的回路,这是一定能找到的,我们将所有被路径包含的边进行标记。之后我们继续不断地尝试从s出发,寻找一条覆盖所有顶点的不含重复边且仅包含未被标记边的回路,如果找到,则将回路中的边进行标记,如果未找到,我们就退出循环。在我们退出循环后,记E‘为E中所有未被标记的边的集合,显然此时G(V,E‘)是非连通的。我们可以将图G(V,E‘)切分为若干个(至少两个)强连通分量,此时我们可以保证每个强连通分量都满足上述两个条件,即所有顶点的入度和出度一致以及图为连通图,此时每个图都含有各自的欧拉回路,我们分别记原点为s1,...,st,显然这些原点是各不相同的。回到问题,我们在图G(V,E)找到了l条原点为s的回路,由于终点和起点均为s,因此我们可以将其组合为一条回路。我们沿着s回路移动,当我们在s回路中第一次抵达si,i=1,...,t,我们就先走完其对应的包含si的强连通分量中的欧拉回路,之后继续走s回路。这样图G(V,E)中的欧拉回路就是我们所走完的路径,此时E\E‘中边在我们于图G(V,E)中走s回路时全部遍历一次,而剩余E‘中的边在我们首次抵达s1,...,st并完成各自强连通分量中的欧拉回路后分别遍历一次。

===============================================================

命题2:对于无向图G(V,E),若V中每个顶点都至少与一条边相连。则G为连通图,且每个顶点的度数为偶数是图G含欧拉回路的充分必要条件。

证明:===============================================================

  充分性可以利用命题1直接得到,只需要在保证图连通的前提下将每个顶点相连的边中一半视作出边,一半视作入边即可。

  对于必要性,由G含欧拉回路必定能导出G为连通图,这个不提供证明,而回路中每个顶点的进入次数和离开次数一致这个可以保证每个顶点的度都为偶数,因此必要性得证。

=========================================================================

命题3:对于无向图G(V,E),若V中每个顶点都至少与一条边相连。则G为连通图,且除了0或2个顶点有奇数度,其余顶点多有偶数度是图G含欧拉路径的充分必要条件。

证明:======================================================================

  实际上所有欧拉路径可以通过欧拉回路移除一条边形成,对立的所有欧拉回路也可以通过在欧拉路径的基础上加上一条边形成。这二者是等价的。

  对于任意含欧拉回路的图G,我们移除一条边后,图G必定依旧连通,且若移除的边连通两个不同的顶点,此时奇数度的顶点数量为2,如果移除的边的两端是同一个顶点,则所有G中的顶点有偶数度。因此必要性得证。

  而充分性,实际上满足这个条件的图,我们可以通过向G加入连接2个奇数度的顶点的边,可以形成欧拉回路。因此原图含欧拉路径,充分性得证。

=============================================================================

欧拉回路

标签:重复   ora   ati   次数   style   通过   顶点   基础   under   

原文地址:http://www.cnblogs.com/dalt/p/7995219.html

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