【发布时间】:2018-12-24 01:12:35
【问题描述】:
我在网上看到找最长路径问题是NP-Complete问题。
出于某种原因,我的老师告诉我这不是一个 NP 完全问题。 因此,现在我正在寻找一个示例,该示例显示获得最长路径所需的计算量大于多项式时间。
目前,我只看到了具有多项式复杂时间的示例。
谁能给我证明这个问题是 NP 完全的?
【问题讨论】:
标签: graph theory proof np longest-path
我在网上看到找最长路径问题是NP-Complete问题。
出于某种原因,我的老师告诉我这不是一个 NP 完全问题。 因此,现在我正在寻找一个示例,该示例显示获得最长路径所需的计算量大于多项式时间。
目前,我只看到了具有多项式复杂时间的示例。
谁能给我证明这个问题是 NP 完全的?
【问题讨论】:
标签: graph theory proof np longest-path
对于初学者来说,根据您对最长路径问题的表述方式,问题实际上可能是 NP-hard 但不是 NP-complete。此问题的 NP 完整版本如下:
给定图 G 和长度 k,G 是否有长度为 k 或更长的简单路径?
众所周知,这个问题是 NP-complete 的,原因我稍后会详细说明。然而,这个密切相关的问题不实际上是NP完整的:
给定一个图 G,G 中最长的简单路径是多少?
第二个问题是 NP-hard 但不是 NP-complete。对于一个NP-完全的问题,该问题必须是一个决策问题,一个答案是布尔“是”或“否”的问题。然而,这个问题的第二个版本不是一个决策问题,因此它不能在 NP 中,因此它不能是 NP-完全的.当你的老师说最长路径问题不是NP-完全时,你的老师完全有可能考虑到这一点,尽管我不能肯定地说。
至于为什么最长路径问题是NP-完全的,我们需要论证两点:
此问题在 NP 中。直观地说,有一种有效的方法来检查问题的“是”答案。
这个问题是 NP 难的。也就是说,有一个 NP 难题可以简化为它。
对于第 (1) 点,直觉是,如果回答“此图是否有一条长度为 137 或更长的简单路径?”是“是的”,有一些简单的方法可以向某人展示这一点。只要给他们那个简单的路径。一旦他们有了路径,他们就很容易检查它是否确实符合要求。 (现在,找到这条路可能真的很难。但是一旦我们以某种方式将其隔离出来,让人们相信它是可行的并不难。)
对于第 (2) 点,执行此操作的一般方法是从现有的 NP 难题开始,然后将其简化为我们的问题。在这里,我们将从哈密顿路径问题开始,如下所示:
给定一个图 G,是否有一条简单的路径通过 G 中的每个节点一次且恰好一次?
以下是我们如何将该问题简化为最长路径问题。从图 G 开始。现在,问一个问题:G 是否有一条长度至少为 n - 1 的简单路径,其中 n 是 G 中的节点数?如果是这样,那么该简单路径必须访问每个节点一次且恰好一次,因为否则路径中没有足够的节点使其长度至少为 n - 1。相反,如果不是,则没有哈密顿路径,因为任何哈密顿路径都符合要求。因此,如果我们能有效地解决最长路径问题,我们就可以有效地解决哈密顿路径问题。由于哈密顿路径问题是 NP-hard,因此最长路径问题也是如此。
现在,这个问题是 NP-完全的事实并不意味着它没有多项式时间解。 P 与 NP 的问题仍未解决,也不知道 P = NP 还是 >P ≠ NP 我们不能说最长路径问题是否存在多项式时间算法。我们可以说没有已知算法在多项式时间内运行(你提到一些网站声称他们有针对这个问题的多项式时间算法,但这听起来不对;如果是这样,谁发现算法会成为百万富翁)。
现在,您可以提出一个后续问题:为什么哈密顿路径问题 NP 很难?证明这一点的常用方法是从 3SAT 开始,然后进行巧妙的、基于小工具的归约。在这里探索太长了,但是大多数介绍性理论教科书(包括 Sipser 的著名教科书)都很好地解释了这一点。
【讨论】: