有向图:欧拉路径

时间:2014-12-20 21:13:36

标签: algorithm graph

根据标准定义,Eulerian Path是图表中的一条路径,它只访问每个边缘一次。

现在,我试图在有向图中找到一个Euler路径。我知道欧拉电路的算法。如果图形具有欧拉电路,它具有欧拉路径,这似乎是微不足道的。 source:geeksforgeeks

[image source:geeksforgeeks.org]

因此对于具有欧拉电路的上述有向图也具有欧拉路径。

现在,如果我删除一个Edge让我们说从4到0它就不再是欧拉电路了。

  1. 如果从顶点0开始我的DFS,我仍然有欧拉路径。
  2. 如果从顶点3开始,我没有欧拉路径
  3. 那么,有条件的图必须在欧拉电路中成为欧拉路径吗?我想,欧拉路径应该比欧拉电路更少限制。

    是否有任何有向图可以是欧拉路径但不是欧拉电路。

3 个答案:

答案 0 :(得分:4)

  

因此,有条件的图必须在Euler中,这是一个要求吗?   电路是欧拉路径吗?

没有

  

我认为,欧拉路径应该比欧拉电路的限制性要小。

正确

  

是否有任何有向图可以是欧拉路径但不是欧拉   电路。

我相信您的混淆源于这样一个事实:当您从不同节点开始DFS定向图时,您可能会得到不同的结果,因为从不同节点开始时可能无法访问某些节点。这与欧拉路径/轨迹的定义无关。为了在有向图中“实现”对欧拉路径的搜索,你应该从每个节点运行DFS - 并且只有当所有结果返回False(没有找到欧拉路径)时,你才能确定没有欧拉路径。如果存在欧拉循环,则必须有一个节点,您可以从该节点启动DFS并找到欧拉路径。

答案 1 :(得分:1)

是的,有很多图可以是欧拉路径而不是欧拉电路。就像删除4->0后的图表一样。

如果图形具有欧拉电路,则更容易找到欧拉路径,因为如果从每个节点开始,您可以找到欧拉路径,因为它们都在电路中,但如果您没有欧拉电路你不能从你希望找到你的欧拉路径的任何节点开始。因为只有一个节点将是路径的起点并且选择任何其他节点可能导致找不到路径。

一个简单的方法是从每个节点运行dfs并检查是否存在从其中任何节点开始的Euler路径,这是效率最高的算法,因为它具有 O的复杂度(V 2 < / sup> + E * V)

您可以找到其中一种here的好方法。复杂度 O(V + E),比以前的算法好V时间。

答案 2 :(得分:-1)

图表具有欧拉电路/路径的要求:

  • 电路(也算作路径):没有顶点有奇度
  • 路径(但没有电路):两个顶点有奇数度;在这种情况下,路径将从一个奇数顶点开始,到另一个
  • 结束