哈密顿路径和欧拉路径的区别
Posted
技术标签:
【中文标题】哈密顿路径和欧拉路径的区别【英文标题】:Difference between hamiltonian path and euler path 【发布时间】:2011-03-17 04:32:54 【问题描述】:谁能告诉我哈密顿路径和欧拉路径之间的区别。它们看起来很相似!
【问题讨论】:
我已经删除了 C/C++ 标签。如果您实际上正在寻找某种关于欧拉/哈密顿路径的算法代码,请随时将它们添加回来。 一个路径只包含每个顶点一次(在封闭路径/循环的情况下可能是第一个/最后一个顶点)。所以 欧拉路径 或 欧拉循环 对我来说似乎是一种误导。它应该是欧拉轨迹或欧拉回路。 我同意阿布·纳菲医学博士的观点。Euler path
这个名称似乎具有误导性,因为其中重复了顶点。它的原名是Eulerian trail
。 Euler path
用词不当。
【参考方案1】:
欧拉路径 - 欧拉路径是每条边只经过一次的路径。
哈密顿路径 - 哈密顿路径是指每个顶点只经过一次的路径。
如果您曾经困惑过,请记住 E - Euler E - Edge。
【讨论】:
【参考方案2】:图论定义
(按一般性降序排列)
Walk:一系列边,其中一条边的结束标志着下一条边的开始
Trail:不重复任何边的行走。所有的小径都是步行。
路径:每个顶点最多遍历一次的路径。 (路径过去是指开放式行走,现在定义已更改)最多遍历顶点一次的属性意味着边也最多交叉一次,因此所有路径都是路径。
哈密顿路径和欧拉路径
哈密顿路径:访问图中的每个顶点(恰好一次,因为它是一条路径)
欧拉轨迹:只访问一次图中的每条边(因为它是一条轨迹,顶点很可能会多次交叉。)
【讨论】:
+1 用于考虑 Path 的定义(每个顶点只遍历一次)。 Euler Path 或 Euler Cycle 对我来说似乎具有误导性。它应该始终是欧拉轨迹或欧拉回路。不幸的是,其他答案没有考虑 Path 的定义。 请添加这些定义的官方来源的链接。【参考方案3】:欧拉路径是通过每条边恰好一次的路径。如果它在初始顶点处结束,则它是一个 欧拉循环。
Hamiltonian 路径 是通过每个顶点恰好一次(不是每条边)的路径。如果它在初始顶点处结束,则它是一个 Hamiltonian 循环。
在欧拉路径中,您可能会多次通过一个顶点。
在哈密顿路径中,您可能不会通过所有边。
【讨论】:
来自:pballew.net/graphs.html 请注意,对于欧拉路径,您可以多次访问每个顶点,而在汉密尔顿路径中,不必遍历每条边。 IIRC,很容易找到是否存在欧拉路径(或循环),但是图是否具有哈密顿量是 NP 完全的。 是的,我相信欧拉路径的某些属性可以用来证明图具有欧拉路径,而无需算法来遍历它。寻找哈密顿路径是一个 NP 完全的,我认为该算法涉及反复试验。我认为将其添加到答案中将超出原始问题的范围,OP 显然是图论的新手:D 对我来说已经有一段时间了,我可能会翻出我的旧书。 一个路径只包含每个顶点一次(在封闭路径/循环的情况下可能是第一个/最后一个顶点)。所以 欧拉路径 或 欧拉循环 对我来说似乎是一种误导。它应该是欧拉轨迹或欧拉回路。 我同意阿布·纳菲医学博士的观点。Euler path
这个名称似乎具有误导性,因为其中重复了顶点。它的原名是Eulerian trail
。 Euler path
用词不当。【参考方案4】:
欧拉路径是一条使用了每条边的路径 只绘制一次。它必须恰好有两个奇数顶点。路径在不同的顶点开始和结束。哈密顿循环是包含图的每个顶点的循环,因此您可能不会使用图的所有边。
【讨论】:
【参考方案5】:我将使用生物学中的一个常见例子;通过制作 DNA 样本重建基因组。
从头组装
要从短读取构建基因组,有必要构建这些读取的图表。我们通过将读取分解为 k-mer 并将它们组装成一个图来做到这一点。
我们可以通过访问每个节点一次来重建基因组,如图所示。这称为哈密顿路径。
不幸的是,构建这样的路径是 NP 难的。不可能推导出一个有效的算法来解决它。相反,在生物信息学中,我们构建了一个欧拉循环,其中一条边代表一个重叠。
【讨论】:
【参考方案6】:欧拉路径是使用图的每条边(注意)恰好一次的图。欧拉回路是一条覆盖所有边后返回起点的欧拉路径。
虽然汉密尔顿路径是一个只覆盖所有顶点(注意)一次的图。当这条路径回到起点时,这条路径称为汉密尔顿回路。
【讨论】:
【参考方案7】:它们是相关的,但既不依赖也不相互排斥。如果一个图有一个欧勒环,它可能也有也可能没有哈密顿环,反之亦然。
欧拉循环只访问图中的每个边一次。如果图中的顶点有两条以上的边,那么根据定义,循环将多次通过这些顶点。因此,顶点可以重复,但边不能重复。
Hamiltonian 循环 只访问图中的每个顶点 一次(类似于旅行商问题)。因此,边和顶点都不能重复。
【讨论】:
您将路径和电路混为一谈。哈密顿/欧拉回路是在同一节点开始和结束的适当类型的路径/轨迹。 一个 Path 只包含每个顶点一次(在闭合路径/循环的情况下可能是第一个/最后一个顶点)。因此,Euler Path 或 Euler Cycle 对我来说似乎具有误导性。应该是欧拉轨迹或欧拉回路。【参考方案8】:哈密顿路径恰好访问每个节点(或顶点)一次,而欧拉路径恰好遍历每条边一次。
【讨论】:
一个 Path 只包含每个顶点一次(在闭合路径/循环的情况下可能是第一个/最后一个顶点)。因此,Euler Path 或 Euler Cycle 对我来说似乎具有误导性。应该是欧拉轨迹或欧拉回路。【参考方案9】:欧拉路径必须只访问每个边一次,而哈密顿路径必须只访问每个顶点一次。
【讨论】:
一个 Path 只包含每个顶点一次(在闭合路径/循环的情况下可能是第一个/最后一个顶点)。所以 欧拉路径 或 欧拉循环 对我来说似乎是一种误导。它应该是欧拉轨迹或欧拉回路。 请添加这些定义的官方来源的链接。以上是关于哈密顿路径和欧拉路径的区别的主要内容,如果未能解决你的问题,请参考以下文章