0.参考
http://www.matrix67.com/blog/archives/105(极好,通俗易懂)
《算法导论》NP完全性
《算法设计与分析》NP完全性理论
1.基本概念
a.时间复杂度
定义:时间复杂度并不是表示一个程序解决问题需要花费多少时间,而是当一个问题规模扩大以后,程序需要的时间长度增长得有多快
例子:冒泡排序、插入排序等,数据扩大2倍,时间变慢4倍的,属于O(n^2)的复杂度
b.多项式级复杂度与非多项式级复杂度
一种是O(1),O(log(n)),O(n^a)等,我们把它叫做多项式级的复杂度,因为它的规模n出现在底数的位置。另一种是O(a^n)和O(n!)型复杂度,它是非多项式级的,其复杂度计算机往往不能承受。
c.易解问题和难解问题
能在多项式时间内解决的问题称为易解问题,只能在指数级时间内解决的问题称为难解问题
d.确定性计算模型(如确定性图灵机)与非确定性计算模型(如非确定性图灵机)