您的位置:首页 > 其它

p,np问题

2015-09-15 11:08 260 查看
多项式时间复杂度

所有形如a*n^k+b*n^(k-1)+c*n^(k-2)……都可记为O(n^k), n^k表示n的k次方,这样的复杂度称为多项式时间复杂度,若是时间复杂度形如k^n,k为大于1的常数,或n!,或更大的,就称为指数型时间复杂度。显然,当n足够大时,指数型时间比多项式要大得多的多。



非确定机

考虑另一种“计算机”,它可以“猜”。它的执行方式近乎神奇:它总是按照最好的情况“猜”。例如用它解决n皇后问题,只需要让它连续猜n次,就猜出了每个皇后的位置。非确定机的特点是:只要有一种猜法能满足要求,它一定能猜到。现在使用的计算机为确定机。目前这还只是一种虚构的机器,没有发现真实的机器可以达到这个要求。

p问题

对一个问题,凡是能找到计算复杂度可以表示为多项式的确定算法,这个问题就属于
P (polynomial) 问题。 所有能用多项式时间算法计算得到结果的问题,称为多项式问题,也就是P,所有绝对不可能用多项式时间求解的问题,称为指数型问题。

NP (non-deterministic polynomial)问题

NP 中的 N 是指非确定的(non-deterministic)算法,这是这样一种算法:(1)猜一个答案。(2)验证这个答案是否正确。(3)只要存在某次验证,答案是正确的,则该算法得解。 NP
(non-deterministic polynomial)问题就是指,用这样的非确定的算法,验证步骤(2)有多项式时间的计算复杂度的算法。即假使你得到了问题的解,我要验证你的解是否正确,我验证所花的时间是多项式,至于求解本身所花的时间是否是多项式我不管,可能有多项式算法,可能没有,也可能是不知道,这类问题称为NP问题。NP概念的奥妙在于,它躲开了求解到底需要多少时间这样的问题,而仅仅只是强调验证需要多少时间,显然,P肯定是NP,因为你既然能用多项式求解,就肯定能用多项式验证,但NP是否是P谁也确定不了。

问题的归约

大致就是这样:找从问题1的所有输入到问题2的所有输入的对应,如果相应的,也能有问题2的所有输出到问题1的所有输出的对应,则若我们找到了问题2的解法,就能通过输入、输出的对应关系,得到问题1的解法。由此我们说问题1可归约到问题2。

NP-Hard

有这样一种问题,所有 NP 问题都可以归约到这种问题,我们称之为 NP-hard 问题。

    

NP完全问题 (NP-Complete)

如果一个问题既是 NP 问题又是 NP-Hard 问题,则它是 NP-Complete 问题。可满足性问题就是一个 NP 完全问题,此外著名的给图染色、哈密尔顿环、背包、货郎问题都是 NP 完全问题。

    

从直觉上说,P<=NP<=NP-Complete<=NP-Hard,问题的难度递增。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: