【问题标题】:Algorithm for finding a Hamiltonian Path in a DAG在 DAG 中寻找哈密顿路径的算法
【发布时间】:2013-04-20 20:26:11
【问题描述】:

我指的是 Skienna 的算法书。

测试图G是否包含Hamiltonian path的问题是NP-hard,其中哈密顿路径P是每个顶点恰好访问一次的路径。与哈密顿循环问题不同,G 中从 P 的结束顶点到起始顶点不一定有边。

给定一个有向无环图 G (DAG),给出一个 O(n + m) 时间算法来测试它是否包含哈密顿路径。

我的方法,

我打算使用DFSTopological sorting。但我不知道如何在解决问题时将这两个概念联系起来。如何使用拓扑排序来确定解决方案。

有什么建议吗?

【问题讨论】:

    标签: algorithm graph-algorithm directed-acyclic-graphs hamiltonian-cycle


    【解决方案1】:

    可以先对 DAG 进行拓扑排序(每个 DAG 都可以拓扑排序)O(n+m)。

    完成此操作后,您就知道边从较低的索引顶点到较高的索引顶点。 这意味着当且仅当连续顶点之间存在边时,才存在哈密顿路径,例如

    (1,2), (2,3), ..., (n-1,n).
    

    (这是因为在哈密顿路径中你不能“返回”,但你必须访问所有,所以唯一的方法是“不跳过”)

    您可以在 O(n) 中检查此条件。

    因此,总体复杂度为 O(m+n)。

    【讨论】:

    • 但是你假设图是连通的,难道不可以对部分不连通的图进行拓扑排序吗?
    • 我不假设图是连通的。如果图不连通,那么就没有哈密顿量,这个算法会检测到它,因为至少有一个连续的顶点不会连通(否则图表将被连接)。
    • 哈密顿循环、欧拉路径和欧拉循环同时出现呢?
    猜你喜欢
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多