【问题标题】:Non deterministic Polynomial(NP) vs Polynomial(P)?非确定性多项式(NP)与多项式(P)?
【发布时间】:2016-12-05 00:57:47
【问题描述】:

我实际上是在寻找描述 NP 算法的实际含义以及什么样的算法/问题可以归类为 NP 问题

我在网上阅读了很多资源。我喜欢

  1. https://www.quora.com/What-are-P-NP-NP-complete-and-NP-hard
  2. What are the differences between NP, NP-Complete and NP-Hard?
  3. Non deterministic Turing machine
  4. What are NP problems?
  5. What are NP and NP-complete problems?

多项式问题:- 如果运行时间是输入**大小的某个多项式函数,例如,如果算法以线性时间或二次时间或三次时间运行,那么我们说该算法以多项式时间运行。例子可以是二分查找

现在我明白多项式问题了。但无法与 NP 对比。

NP(非确定性多项式问题):-

现在有很多程序(不一定)在普通计算机上以多项式时间运行,但在非确定性图灵机上却以多项式时间运行。这些程序解决了 NP 中的问题,NP 代表非确定性多项式时间。

我无法理解/想到不在常规计算机上以多项式时间运行的示例。根据我目前的理解,每个问题/算法都可以解决 在一些时间的多项式函数中,它可以或不能与时间成正比。我知道我在这里遗漏了一些东西,但真的无法理解这个概念。有人可以 举例说明在普通计算机上不能在多项式时间内解决但可以在多项式时间内验证的问题?

上面提到的第二个链接中给出的示例之一是Integer factorization is in NP. This is the problem that given integers n and m, is there an integer f with 1 < f < m, such that f divides n (f is a small factor of n)? 为什么这不能在普通计算机上的某个多项式时间内解决?我们可以检查从 1 到 n 的所有数字是否整除 n。正确的 ? 还有验证部分在哪里(我的意思是它是否可以在多项式时间内解决,但是如何在多项式时间内验证问题解决方案)?

【问题讨论】:

标签: algorithm np


【解决方案1】:

可能值得注意的是“在多项式时间内检查解决方案”的概念与解决问题的非确定性图灵机之间的关系:在正常(确定性)图灵机中,有一组明确定义的指令告诉机器在任何情况下都应该做什么(“如果您处于状态 3 并看到 'a',则向左移动,如果您处于状态 7 并看到 'c',则用 'b' 覆盖它,等等。 ”),而在非确定性图灵机中,在某些情况下有多个选择(“如果您处于状态 3 并看到“a”,则向右移动或用“b”覆盖它”) .在算法方面,这让我们“猜测”解决方案,如果我们可以将问题编码为字母表上的语言*,那么我们可以使用非确定性图灵机在该字母表上生成字符串,然后使用标准 (确定性)图灵机,以确保它是正确的。如果我们假设我们总是做出正确的猜测,那么我们算法的运行时间就是确定性检查部分的运行时间,对于 NP 问题,它在多项式时间内运行。这就是问题“在非确定性图灵机上可在多项式时间内确定”的含义,以及为什么它通常被简单地表述为“在多项式时间内检查解决方案/证书”。

* 示例:哈密顿路径问题可以编码如下:

标记图 1 到 n 的顶点,其中 n 是顶点数。我们的字母表是数字 1 到 n,我们的语言由所有单词组成,使得

a) 从 1 到 n 的每个整数只出现一次

b) 对于单词中的每一对连续整数,带有这些标签的顶点是相连的

【讨论】:

    【解决方案2】:

    多项式时间:- 可以在输入大小的多项式时间内解决的问题称为多项式问题。用简单的话来说:- 这里问题的解决方案很快。为了 示例排序,二分查找

    非确定性多项式:-理论上可以在多项式时间内验证的问题,而与实际求解时间复杂度无关(可以是多项式或非多项式)。所以有些问题是P也可以是NP。

    但是非正式的人们在对话/帖子中使用 NP 术语的含义如下 不能在输入大小的多项式时间内解决的问题称为多项式问题。用简单的话来说:-在这里解决问题并不快。您可能必须尝试不同的排列/组合或猜测工作。但验证部分速度很快,可以在多项式时间内完成。喜欢 输入一些数字 X 并将这些数字分成两组,它们的总和相差最小​​p>

    我真的很喜欢 https://www.quora.com/What-are-P-NP-NP-complete-and-NP-hard 上 Alex Flint 的回答。以上只是其中的要点。

    【讨论】:

    • 我认为您对“非确定性多项式”的定义根本不正确。特别是,如果 P=NP(尚未被反驳),则 NP 中的任何问题都可以在时间 P 中解决。即使不是,P 也是 NP 的一部分,所以NP中的一些问题可以在时间P中解决。
    • @AmiTavory 其实你是对的。但通常有两种版本的 NP,即一种是理论上的,第二种是人们在普通对话/帖子中使用 NP 时的实际意思。我已更正我的帖子以明确提及这一点
    • 我不遵循以“但通常”开头的段落。我认为您是在说非正式的“NP”意思是“NP 而不是 P”(或者至少是“NP 而我无法证明它是 P”),但看起来缺少单词/标点符号/语法,这很糟糕足以使结果几乎难以理解。
    • "有些问题是 P 也可以是 NP"。每个 P 的问题都必然是 NP ——如果问题在 P 中,你可以重新计算解决方案来验证问题。但是您的定义并不完全等同于标准定义(或者至少措辞不够精确,难以确定它们是否相等),因此根据这些定义,可能确实存在不存在的 P 问题NP。
    • 谢谢保罗。是的,这里通常是非正式的意思。更正了这一点。对于第二条评论,理论上你是正确的,但我的目的是让它变得简单,并澄清人们在使用 NP/P 一词时(非正式地)通常意味着什么。如前所述,这只是 Alex Flint 真棒答案的要点
    【解决方案3】:

    你的问题涉及到几点。

    首先,在与您的问题相关的意义上,问题的大小被定义为问题的表示的大小。因此,例如,当您写关于 n 的除数问题时。 n 的表示是什么?它是一系列长度为 q 的字符(我不想更具体)。通常,nq 中是指数的。因此,当您谈论从 1 到 n 的简单循环时,您谈论的是输入大小呈指数增长的东西。比如数字“999999999999999”代表数字999999999999999,这是一个很大的数字,但是这里用12个字符来表示。

    其次,虽然定义 NP 类的方法不止一种,但对于决策问题来说可能是最简单的一种(这是您在问题中提出的类型,即是真还是假) 是如果答案是真的,那么就有一个“证书”可以在多项式时间内进行验证。例如,考虑Hamilton Path Problem。这(可能)是一个很难解决的问题,但是,如果给你一个汉密尔顿路径作为答案,那么很容易验证它是否如此;具体来说,它可以在多项式时间内完成。对于 Hamilton 路径问题,路径是多项式时间可验证的证书,因此这个问题是 NP。

    【讨论】:

      猜你喜欢
      • 2017-03-05
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 2015-07-06
      • 2020-05-23
      相关资源
      最近更新 更多