非确定性多项式(NP)与多项式(P)?

时间:2016-07-30 11:41:05

标签: algorithm np

我实际上正在寻找描述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?
  6. 多项式问题: - 如果运行时间是输入**大小的某个多项式函数,例如,如果算法以线性时间或二次时间或立方时间运行,那么我们说算法在多项式时间内运行。示例可以是二分搜索

    现在我了解多项式问题。但无法将其与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)?为什么在常规计算机上的某些多项式时间内无法解决这个问题?如果他们划分n,我们可以检查从1到n的所有数字。对 ? 此外验证部分来到这里(我的意思是它是否可以在多项式时间内求解,但是如何在多项式时间内验证问题解决方案)?

3 个答案:

答案 0 :(得分:1)

你的问题涉及几点。

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

第二,虽然定义NP类的方法不止一种,但对于决策问题(这是你在问题中提出的类型,也就是真实与否) )如果答案是真的,那么就有一个&#34;证书&#34;可以在多项式时间内验证。例如,考虑Hamilton Path Problem。这(可能)是一个难以解决的问题,但是,如果给你一个汉密尔顿路径作为答案,很容易验证它是如此;具体而言,它可以在多项式时间内完成。对于Hamilton Path问题,该路径是一个多项式时间可验证证书,因此这个问题是NP。

答案 1 :(得分:0)

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

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

标记图1到n的顶点,其中n是顶点数。我们的字母表是数字1到n,我们的语言包含所有单词

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

b)对于单词中的每个连续整数对,具有这些标签的顶点是连接的

答案 2 :(得分:-1)

多项式时间: - 在输入大小的多项式时间内可以求解的问题称为多项式问题。用简单的话说: - 这里解决问题的方法很快。对于 示例排序,二进制搜索

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

但非正式地,人们在谈话/帖子时使用NP术语 在输入大小的多项式时间内无法解决的问题称为多项式问题。用简单的话说: - 这里解决问题的方法并不快。您可能必须尝试不同的排列/组合或猜测工作。但验证部分很快,可以在多项式时间内完成。喜欢  输入一些数字X并将数字分成两组,其总和之差为最小值

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