扩充

NP完全问题

例:在一个周六的晚上,你参加了一个盛大的晚会。由于感到局促不安,你想知道这一大厅中是否有你已经认识的人。宴会的主人向你提议说,你一定认识那位正在甜点盘附近角落的女士罗丝。不费一秒钟,你就能向那里扫视,并且发现宴会的主人是正确的。然而,如果没有这样的暗示,你就必须环顾整个大厅,一个个地审视每一个人,看是否有你认识的人。


生成问题的一个解通常比验证一个给定的解时间花费要多得多。这是这种一般现象的一个例子。与此类似的是,如果某人告诉你,数13717421可以写成两个较小的数的乘积,你可能不知道是否应该相信他,但是如果他告诉你它可以分解为3607乘上3803,那么你就可以用一个袖珍计算器容易验证这是对的。


人们发现,所有的完全多项式非确定性问题,都可以转换为一类叫做满足性问题的逻辑运算问题。既然这类问题的所有可能答案,都可以在多项式时间内计算,人们于是就猜想,是否这类问题,存在一个确定性算法,可以在多项式时间内,直接算出或是搜寻出正确的答案呢?这就是著名的NP=P?的猜想。不管我们编写程序是否灵巧,判定一个答案是可以很快利用内部知识来验证,还是没有这样的提示而需要花费大量时间来求解,被看作逻辑和计算机科学中最突出的问题之一。它是斯蒂文·考克于1971年陈述的。

常用排序算法的时间复杂度


排序法     最差时间分析  平均时间复杂度     稳定度     空间复杂度 
冒泡排序    O(n2)       O(n2)       稳定      O(1) 
快速排序    O(n2)       O(n*log2n)  不稳定     O(log2n)~O(n) 
选择排序    O(n2)       O(n2)       稳定      O(1) 
二叉树排序   O(n2)       O(n*log2n)  不一定     O(n) 
插入排序    O(n2)       O(n2)       稳定      O(1) 
堆排序 O(n*log2n)  O(n*log2n)  不稳定     O(1) 
希尔排序    O(n^s)1<s<2 O(nlogn)    不稳定     O(1)
posted @ 2017-10-09 23:15  WenOI  阅读(167)  评论(0编辑  收藏  举报
水波背景