Algorithm 有向图中的Euler回路

Algorithm 有向图中的Euler回路,algorithm,data-structures,graph,graph-theory,euler-path,Algorithm,Data Structures,Graph,Graph Theory,Euler Path,如何检查有向图是否是欧拉图 1) 阶数非零的所有顶点都属于一个强连通组件 2) 对于每个顶点,入度等于出度。资料来源: 问题: 在给定的两个条件中,第一个条件严格吗?我的意思是,为什么这个图必须是“强”连通图?如果图形只是连通的呢 我知道条件1可以用弱连通图代替。同样,如果图是刚连通的而不是弱连通的呢? 会很高兴看到一些例子。 P.S/:在上述讨论中始终考虑条件2。所谓“刚连接”,我的意思是在图中存在一个顶点,所有其他顶点都可以从该顶点到达。这是一个有趣的问题。据我所知,在有向图的上下文中,没

如何检查有向图是否是欧拉图

1) 阶数非零的所有顶点都属于一个强连通组件

2) 对于每个顶点,入度等于出度。资料来源:

问题: 在给定的两个条件中,第一个条件严格吗?我的意思是,为什么这个图必须是“强”连通图?如果图形只是连通的呢

我知道条件1可以用弱连通图代替。同样,如果图是刚连通的而不是弱连通的呢? 会很高兴看到一些例子。


<强> P.S/<强>:在上述讨论中始终考虑条件2。所谓“刚连接”,我的意思是在图中存在一个顶点,所有其他顶点都可以从该顶点到达。

这是一个有趣的问题。据我所知,在有向图的上下文中,没有“连接”的标准化含义。有向图中连通性的两个一般概念是

  • 强连接性,其中任何一对节点u和v都有一条从u到v的路径和一条从v到u的路径,以及
  • 弱连通性,其中忽略箭头上的方向性而形成的无向图是连通的
有向图的“刚连接”版本与这些定义略有不同,但它与强连接相关。任何有向图都可以将其节点划分为多个(SCC)节点组,这些节点组可以相互连接。这些强连接组件形成一个DAG,其中每个强连接组件是一个节点,并且如果第一个SCC中的一个节点与第二个SCC中的一个节点有一条边,则从一个SCC到另一个SCC有一条边

您对“刚刚连接”的图形的定义可以如下所示:

  • “刚刚连接”:SCCs的DAG有一个可以到达所有其他节点的源节点
请注意,“justconnected”表示弱连接,但并非相反

事实证明,在这种情况下,如果你有一个图,其中每个节点的indegree恰好等于它的outdegree,那么如果这个图是“刚连接的”,那么它有一个Euler回路。如果你的图是“刚连通的”,那么它是弱连通的。然后,我们要声明,任何索引等于outdegrees的弱连通图也必须是强连通的。要查看此信息,请在SCC的DAG中拾取任何没有传入边的SCC。进入此SCC中任何节点的任何边缘必须来自该SCC内。因此,如果我们遍历了SCC中的每个节点,并将离开该节点的边的数量相加,那么该总数将与进入SCC中每个节点的边的数量相匹配。但是,由于节点的独立度之和等于节点的独立度之和,因此不可能有任何边从这个SCC开始,到另一个SCC结束,因为所有边都被考虑在内。因此,该SCC没有留下任何边缘

我们刚刚展示了,任何源SCC必须与任何其他SCC没有边。由于在某些源SCC中有一些节点可以到达每个节点,这意味着图中没有其他SCC,因此图只有一个SCC,因此是强连接的