哈密​​顿路径和欧拉路径的区别

Posted

技术标签:

【中文标题】哈密​​顿路径和欧拉路径的区别【英文标题】:Difference between hamiltonian path and euler path 【发布时间】:2011-03-17 04:32:54 【问题描述】:

谁能告诉我哈密顿路径和欧拉路径之间的区别。它们看起来很相似!

【问题讨论】:

我已经删除了 C/C++ 标签。如果您实际上正在寻找某种关于欧拉/哈密顿路径的算法代码,请随时将它们添加回来。 一个路径只包含每个顶点一次(在封闭路径/循环的情况下可能是第一个/最后一个顶点)。所以 欧拉路径欧拉循环 对我来说似乎是一种误导。它应该是欧拉轨迹欧拉回路 我同意阿布·纳菲医学博士的观点。 Euler path 这个名称似乎具有误导性,因为其中重复了顶点。它的原名是Eulerian trailEuler path 用词不当。 【参考方案1】:

欧拉路径 - 欧拉路径是每条边只经过一次的路径。

哈密顿路径 - 哈密顿路径是指每个顶点只经过一次的路径。

如果您曾经困惑过,请记住 E - Euler E - Edge。

【讨论】:

【参考方案2】:

图论定义

(按一般性降序排列)

Walk:一系列边,其中一条边的结束标志着下一条边的开始

Trail:不重复任何边的行走。所有的小径都是步行。

路径:每个顶点最多遍历一次的路径。 (路径过去是指开放式行走,现在定义已更改)最多遍历顶点一次的属性意味着边也最多交叉一次,因此所有路径都是路径。

哈密顿路径和欧拉路径

哈密顿路径:访问图中的每个顶点(恰好一次,因为它是一条路径)

欧拉轨迹:只访问一次图中的每条边(因为它是一条轨迹,顶点很可能会多次交叉。)

【讨论】:

+1 用于考虑 Path 的定义(每个顶点只遍历一次)。 Euler PathEuler Cycle 对我来说似乎具有误导性。它应该始终是欧拉轨迹欧拉回路。不幸的是,其他答案没有考虑 Path 的定义。 请添加这些定义的官方来源的链接。【参考方案3】:

欧拉路径是通过每条边恰好一次的路径。如果它在初始顶点处结束,则它是一个 欧拉循环

Hamiltonian 路径 是通过每个顶点恰好一次(不是每条边)的路径。如果它在初始顶点处结束,则它是一个 Hamiltonian 循环

在欧拉路径中,您可能会多次通过一个顶点。

在哈密顿路径中,您可能不会通过所有边。

【讨论】:

来自:pballew.net/graphs.html 请注意,对于欧拉路径,您可以多次访问每个顶点,而在汉密尔顿路径中,不必遍历每条边。 IIRC,很容易找到是否存在欧拉路径(或循环),但是图是否具有哈密顿量是 NP 完全的。 是的,我相信欧拉路径的某些属性可以用来证明图具有欧拉路径,而无需算法来遍历它。寻找哈密顿路径是一个 NP 完全的,我认为该算法涉及反复试验。我认为将其添加到答案中将超出原始问题的范围,OP 显然是图论的新手:D 对我来说已经有一段时间了,我可能会翻出我的旧书。 一个路径只包含每个顶点一次(在封闭路径/循环的情况下可能是第一个/最后一个顶点)。所以 欧拉路径欧拉循环 对我来说似乎是一种误导。它应该是欧拉轨迹欧拉回路 我同意阿布·纳菲医学博士的观点。 Euler path 这个名称似乎具有误导性,因为其中重复了顶点。它的原名是Eulerian trailEuler path 用词不当。【参考方案4】:

欧拉路径是一条使用了每条边的路径 只绘制一次。它必须恰好有两个奇数顶点。路径在不同的顶点开始和结束。哈密​​顿循环是包含图的每个顶点的循环,因此您可能不会使用图的所有边。

【讨论】:

【参考方案5】:

我将使用生物学中的一个常见例子;通过制作 DNA 样本重建基因组。

从头组装

要从短读取构建基因组,有必要构建这些读取的图表。我们通过将读取分解为 k-mer 并将它们组装成一个图来做到这一点。

我们可以通过访问每个节点一次来重建基因组,如图所示。这称为哈密顿路径。

不幸的是,构建这样的路径是 NP 难的。不可能推导出一个有效的算法来解决它。相反,在生物信息学中,我们构建了一个欧拉循环,其中一条边代表一个重叠。

【讨论】:

【参考方案6】:

欧拉路径是使用图的每条边(注意)恰好一次的图。欧拉回路是一条覆盖所有边后返回起点的欧拉路径。

虽然汉密尔顿路径是一个只覆盖所有顶点(注意)一次的图。当这条路径回到起点时,这条路径称为汉密尔顿回路。

【讨论】:

【参考方案7】:

它们是相关的,但既不依赖也不相互排斥。如果一个图有一个欧勒环,它可能也有也可能没有哈密顿环,反之亦然。


欧拉循环只访问图中的每个一次。如果图中的顶点有两条以上的边,那么根据定义,循环将多次通过这些顶点。因此,顶点可以重复,但边不能重复。

Hamiltonian 循环 只访问图中的每个顶点 一次(类似于旅行商问题)。因此,边和顶点都不能重复。

【讨论】:

您将路径和电路混为一谈。哈密​​顿/欧拉回路是在同一节点开始和结束的适当类型的路径/轨迹。 一个 Path 只包含每个顶点一次(在闭合路径/循环的情况下可能是第一个/最后一个顶点)。因此,Euler PathEuler Cycle 对我来说似乎具有误导性。应该是欧拉轨迹欧拉回路【参考方案8】:

哈密顿路径恰好访问每个节点(或顶点)一次,而欧拉路径恰好遍历每条边一次。

【讨论】:

一个 Path 只包含每个顶点一次(在闭合路径/循环的情况下可能是第一个/最后一个顶点)。因此,Euler PathEuler Cycle 对我来说似乎具有误导性。应该是欧拉轨迹欧拉回路【参考方案9】:

欧拉路径必须只访问每个一次,而哈密顿路径必须只访问每个顶点一次。

【讨论】:

一个 Path 只包含每个顶点一次(在闭合路径/循环的情况下可能是第一个/最后一个顶点)。所以 欧拉路径欧拉循环 对我来说似乎是一种误导。它应该是欧拉轨迹欧拉回路 请添加这些定义的官方来源的链接。

以上是关于哈密​​顿路径和欧拉路径的区别的主要内容,如果未能解决你的问题,请参考以下文章

哈密顿回路的算法

哈密顿回路算法详解

可行遍性——欧拉图and哈密顿图

CDOJ 1960 构造哈密顿路径

欧拉路径和欧拉回路判断方法

20191106测试