• 新知识添加·欧拉回路+欧拉路径


    §概念

    欧拉通路: 通过图中每条边且只通过一次,并且经过每一顶点的通路;

    欧拉回路: 通过图中每条边且只通过一次,并且经过每一顶点的回路;

    欧拉环:图中经过每条边一次且仅一次的环;

    欧拉路径:图中经过每条边一次且仅一次的路径;

    欧拉图:有至少一个欧拉环的图;

    半欧拉图:没有欧拉环,但有至少一条欧拉路径的图;

    基图:对一个图而言把所有边视作无向边得到其基图,即将所有有向边变成无向边形成的无向图。

    无向图

      设G是连通无向图,则称经过G的每条边一次并且仅一次的路径为欧拉通路

     如果欧拉通路是回路(起点和终点是同一个顶点),则称此回路是欧拉回路

      具有欧拉回路的无向图G成为欧拉图

    有向图

    (1)设D是有向图,D的基图连通,则称经过D的每条边一次并且仅有一次的有向路径为 有向欧拉通路

    (2)如果有向欧拉通路是有向回路,则称此有向回路为  有向欧拉回路

    (3)具有有向欧拉回路的图D称为有向欧拉图

    定理

     无向图G存在欧拉通路的充要条件是:G为连通图,并且G仅有两个奇度结点(度数为奇数的顶点)或者无奇度结点。

    推论

    (1) 当G是仅有两个奇度结点的连通图时,G的欧拉通路必以此两个结点为端点;

    (2)当G是无奇度结点的连通图时,G必有欧拉回路

    (3)G为欧拉图(存在欧拉回路)的充分必要条件是  G为无奇度结点的连通图

    (有向图) 定理

    有向图D存在欧拉通路的充要条件是:D为有向图,D的基图连通,并且所有顶点的出度与入度相等;或者  除两个顶点外,其余顶点的出度与入度都相等,而这两个顶点中一个顶点的出度与入度之差为1,另一个顶点的出度与入度之差为-1.

    推论

    (1)当D除出、入度之差为1,-1的两个顶点之外,其余顶点的出度与入度相等时,D的有向欧拉通路必以出、入度之差为1的顶点作为始点,以出、入度之差为-1的顶点作为终点。

    (2)当D的所有顶点的出、入度都相等时,D中存在有向欧拉回路。

    (3)有向图D为有向欧拉图的充要条件是  D的基图为连通图,并且所有顶点的出、入度都相等。

    欧拉回路的求解

    两种方法:(1)DFS搜索  (Fleury)佛罗莱算法

    (1)DFS搜索 思想求解欧拉回路的思路为:利用欧拉定理判断出一个图存在欧拉通路或欧拉回路后,选择一个正确的起始顶点,用DFS算法遍历所有的边(每条边只遍历一次),遇到走不通就回退。在搜索前进方向上将遍历过的边按顺序记录下来。这组边的排列就组成了一条欧拉通路或回路。

    (2) (Fleury)佛罗莱算法

    设G为一个无向欧拉图,求G中一条欧拉回路的算法如下:

    (1) 任取G中一顶点v0,令P0=v0;

    (2)假设沿Pi=v0e1v1e2v2......eivi走到顶点vi,按下面方法从E(G)-{e1,e2,...,ei}中选ei+1。

            ei+1与vi相关联

            除非无别的边可供选择,否则ei+1不应该是Gi=G-{e1,e2,...,ei}中的桥。

    (3)当(2)不能再进行时算法停止。

            可以证明的是,当算法停止时,所得到的简单回路Pm=v0e1v1e2v2......emvm,(vm=v0)为G中一条欧拉回路。

    加一道简单题  洛谷-1341(详情见图论杂题专题)

    2017-10-20 13:57:14 Hathaway

  • 相关阅读:
    GPU 版 TensorFlow failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED
    Python -- 值转换为字符串的两种机制
    Python
    vim中注释多行python代码
    HTTP协议状态码详解(HTTP Status Code)
    关于Python报错:SyntaxError: Non-ASCII character 'xe5' in file的解决方法
    Linux如何查看进程、杀死进程、启动进程等常用命令
    vim 如何设置显示行号和缩进
    一、报错
    二、极光推送
  • 原文地址:https://www.cnblogs.com/Hathawaxy/p/7699171.html
Copyright © 2020-2023  润新知