📜  DAA-P和NP类

📅  最后修改于: 2021-01-12 03:41:58             🧑  作者: Mango


在计算机科学中,要解决的问题是目标是最大化或最小化某些值,而在其他问题中,我们尝试查找是否存在解决方案。因此,问题可以归纳为以下几种:

优化问题

优化问题是目标是最大化或最小化某些值的问题。例如,

  • 找到给定图形着色所需的最小颜色数。

  • 在图中找到两个顶点之间的最短路径。

决策问题

对于许多问题,答案是是或否。这些类型的问题称为决策问题。例如,

  • 给定图是否只能用4色着色。

  • 在图形中查找汉密尔顿周期不是决策问题,而检查图形是否为汉密尔顿周期则是决策问题。

什么是语言?

每个决策问题只能有两个答案,是或否。因此,如果决策问题为特定输入提供答案“是”,则它可能属于一种语言。语言是输入的总和,答案是肯定的。前几章讨论的大多数算法都是多项式时间算法

对于输入大小n ,如果算法的最坏情况时间复杂度为O(n k ) ,其中k为常数,则该算法为多项式时间算法。

诸如矩阵链乘法,单源最短路径,全对最短路径,最小生成树等算法在多项式时间内运行。但是,存在许多问题,例如旅行营业员,最佳图形着色,汉密尔顿周期,在图形中找到最长路径以及满足布尔公式,而对于这些公式,多项式时间算法是未知的。这些问题属于一类有趣的问题,称为NP-完全问题,其状态未知。

在这种情况下,我们可以将问题分类如下-

P级

P类由在多项式时间内可解决的那些问题组成,即,这些问题可以在最坏情况下(其中k为常数)在时间O(n k )中解决。

这些问题称为易处理的,而其他问题称为难处理的或超多项式的

形式上,算法是多项式时间算法,如果存在多项式p(n) ,则该算法可以在时间O(p(n))中求解大小为n的任何实例。

对于大的n,需要Ω(n 50 )时间来解决的问题基本上是棘手的。大多数已知的在时间为O(n k)的多项式时间算法运行对于k的相当低的值。

考虑多项式时间算法的类别的优势在于,所有合理的确定性单处理器计算模型都可以相互模拟,最多使用多项式慢速算法。

NP级

NP类包含可在多项式时间内验证的那些问题。 NP是一类决策问题,通过一些额外的信息,很容易检查所要求答案的正确性。因此,我们并不是在寻求找到解决方案的方法,而只是在核实所谓的解决方案确实正确。

此类中的每个问题都可以使用穷举搜索在指数时间内解决。

P与NP

可通过确定性多项式时间算法解决的每个决策问题也可通过多项式时间非确定性算法解决。

P中的所有问题都可以使用多项式时间算法解决,而NP-P中的所有问题都是棘手的。

不知道P = NP 。但是,在NP中已知许多问题,这些问题具有以下性质:如果它们属于P,则可以证明P = NP。

如果P≠NP ,则NP中的问题既不在P中,也不在NP-Complete中。

如果很容易找到问题的解决方案,则此问题属于P类。如果很容易检查可能很难找到的解决方案,则问题属于NP