【问题标题】:Is there any efficient algorithm to find the length of the longest cycle in a undirected graph?是否有任何有效的算法可以找到无向图中最长循环的长度?
【发布时间】:2019-04-11 05:45:14
【问题描述】:

我想知道有没有什么有效的算法可以求出图中最长循环的长度?

该图是无向图。

算法不必告诉循环中的顶点是什么,只需知道长度即可。

【问题讨论】:

  • 图中可能的最长循环是Hamiltonian cycle。引用这篇文章:“确定图 [...] 中是否存在这样的 [...] 循环是 NP 完全的。”
  • 所以没有在多项式时间内有效的算法。
  • 这将是我的答案,但我们会看看是否有人这么说。 OTOH,如果图表上有约束,这些约束可能会使问题变得更容易。

标签: algorithm graph-algorithm cycle


【解决方案1】:

在图中找到最长循环的问题是NP-hard,因为解决这个问题可以回答问题“这个图是哈密顿吗?”(是否它具有汉密尔顿循环),这本身就是一个 NP 完全问题。
因此,事实上,没有有效的算法可以做到这一点。
有一些基于矩阵乘法的方法可以在图中找到长度为k 的循环。 您可以在this quesion 中找到有关使用矩阵乘法查找循环的说明。但请注意,矩阵乘法方法允许在 2 个顶点之间检测给定长度的walks,并且允许在遍历中重复顶点。

【讨论】:

    猜你喜欢
    • 2014-01-17
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    相关资源
    最近更新 更多