算法中的P问题、NP问题、NP完全问题和NP难问题梳理

您所在的位置:网站首页 和倍问题的算法 算法中的P问题、NP问题、NP完全问题和NP难问题梳理

算法中的P问题、NP问题、NP完全问题和NP难问题梳理

2024-07-16 10:15| 来源: 网络整理| 查看: 265

结论(可以简单这么初步认识):NPH>NPC>NP>或=P

在讲P类问题之前先介绍两个个概念:多项式,时间复杂度。(知道这两概念的可以自动跳过这部分)

1、多项式:

a x n − b x n − 1 + c . ax^n-bx^{n-1}+c. axn−bxn−1+c. 叫x最高次为n的多项式.

2、时间复杂度

我们知道在计算机算法求解问题当中,经常用时间复杂度和空间复杂度来表示一个算法的运行效率。空间复杂度表示一个算法在计算过程当中要占用的内存空间大小,这里暂不讨论。时间复杂度则表示这个算法运行得到想要的解所需的计算工作量,他探讨的是当输入值接近无穷时,算法所需工作量的变化快慢程度。

举个例子:冒泡排序。 在计算机当中,排序问题是最基础的,将输入按照大小或其他规则排好序,有利于后期运用数据进行其它运算。冒泡排序就是其中的一种排序算法。假设手上现在有n个无序的数,利用冒泡排序对其进行排序, ①首先比较第1个数和第2个数,如果后者>前者,就对调它们的位置,否则不变 ②接着比较第2个数和第3个数,如果后者>前者,就对调它们的位置,否则不变 ③一直向下比较直到第n-1和第n个数比较完,第一轮结束。(这时候最大的数移动到了第n个数的位置) ④重复前三步,但是只比较到第n-1个数(将第二大的数移动到第n-1个数位置) ⑤持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

举个实例:5,4,3,2,1,对其进行排序,先是比较5跟4变成4,5,3,2,1,第一轮结束后变成43215,可以计算,当对其排序完正好要经过4+3+2+1=10次比较,当然这是最复杂的情况,即完全反序。可以知道对于n个数,至多要经过1+2+…+n-1 即 (n ^ 2-n)/2 次比较才能排好序。这个式子里n的最高次阶是2,可知道当n→∞时,一次性对其比较次数影响很小,所以我们把这个算法的时间复杂度比作:o(n^2)。取其最高次,可以看出,这是一个时间复杂度为多项式的表示方式。

时间复杂度排序o(1)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3