【发布时间】:2010-12-25 11:18:18
【问题描述】:
我需要使用 DFS 在有向图中找到最长的循环。
我曾经看到这篇 Wikipedia 文章描述了这样做的方式,我认为它解决的问题类似于将节点标记为以下三种状态之一:节点尚未访问,完成搜索节点,节点已访问,但未访问还没逛完。
如果有人可以与我分享链接,我将不胜感激。顺便说一句,这不是 Tarjan 算法。
下面的问题是我想要解决的,如果你想知道的话。
第一行给出的两位数是N和M,分别代表节点数和有向边数。
从第二行给出M组两位数A和B,这意味着节点A和B是相连的,但你只能从A到B遍历节点。
输入.txt:
7 9
1 2
2 3
3 1
3 4
4 5
5 1
5 6
6 7
7 2
本例中的答案是 6,因为 2>3>4>5>6>7>2。
【问题讨论】:
-
这不是NP完全的吗?如果你能找到最长的循环,在多项式时间内,你也可以找出图中是否包含哈密顿循环。
-
这是 NPC 问题,但如果你想在 DAG 中找到最长的路径,那就是 p,总而言之,你应该说出你所做的,让人们帮助你。
-
您可能会想到关于拓扑排序的维基百科文章。虽然,这是一个不同的问题......
标签: algorithm graph-theory depth-first-search