【问题标题】:Longest path in small graph with small degree小度数小图中的最长路径
【发布时间】:2016-05-25 20:20:09
【问题描述】:

这是我在课堂上遇到的一个问题(我向你保证,这不是家庭作业)。直到现在我还在思考这个问题。您将收到一个最多包含 25 个节点和 25 条边的图。此外,每个节点的度数最多为 3。任务是在该图中找到最长的路径。但是,您不仅会收到 1 个图表,而是 15,000 个图表,您需要在 1 秒内找到所有图表中最长的路径。谁能给我一个解决方案(或者更好,只是一个提示)这个问题?非常感谢!

信息:
- 可以重新访问节点,唯一的限制是边。
- 图形由边给出。所以第一行说明有多少节点和边,之后的行表示边,每条边由一对整数组成。
- 边未加权。
- 唯一需要的答案是长度路径,而不是路径本身。
- 这可能很重要:图形不一定是连接的。

【问题讨论】:

  • 最长路径的约束是什么?节点可以(不)被重新访问?我想不能重新访问边缘?
  • 由于有时间限制,我想问一下你打算如何读取输入?是否指定了格式?
  • 每个图 66 微秒(输入、计算、输出)。我怀疑它的可能
  • 问题已得到解答。
  • @Lashane:真的吗?假设该图具有适当的数据结构,这似乎并没有那么快。

标签: algorithm graph-algorithm


【解决方案1】:

当我看到“节点可以重新访问”之后,我意识到这在某些方面是一个棘手的问题。为了满足那些看似难以置信的时间限制,你在这里真正需要的不是构造这样一条路径的算法(通常称为 trail,顺便说一句,如果顶点可以重用),而是对于每个连接的图的组件,一种快速检测该组件中的所有或几乎所有边是否可以包含在单个轨迹中的方法。

所以这是我的提示:你知道柯尼斯堡有七座桥吗? ;-)

这可能看起来很神秘,但我认为一些快速搜索将为您指明正确的方向,并且您很快就会找到一种方法来快速检测组件中的 所有 边缘是否可以构成相同的踪迹。 (当上述问题的答案为“否”时,您需要做更多的思考以确定可以包含多少条边。)

【讨论】:

  • 你对“没有欧拉路径时可以包含多少条边”部分有很好的方法吗?乍一看感觉这部分还是NP完全的?
  • @PeterdeRivaz:非常好的问题,我不应该在那个部分挥手。根据kam.mff.cuni.cz/conferences/wg2011/files/slides/slides.pdf 的说法,删除最少的边以使图欧拉的问题确实是NP-hard(即要确保图具有欧拉循环;但要确保它有一个欧拉 path 就像这里一样,并不容易,因为后者的算法可以变成前者的 O(|E|) 倍慢一个,只需依次删除每条边,制作一个 EP,然后重新添加边缘)。
  • @PeterdeRivaz:有趣的是,用最少的边删除次数 解决所有顶点的偶度问题 - 参见幻灯片 10 和 11更多(但不是太多!)细节。所以使问题变得困难的似乎是结果图仍然连接的约束。
  • 另外,即使可以在 P 中找到最长的欧拉路径,该长度仍然只是真实答案的下限。
  • @user4034932:嗯......我不是在谈论“最长的欧拉路径”(这实际上是什么意思?)我说的是给出剩余图形所需的最少边删除一条欧拉路径。根据定义,这使用 所有 那些剩余(即未删除)的边,因此它将是最长的(至少如果我们在输入中的每个连接组件上运行它)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多