先行了解相关的几个名词:
计算复杂性理论:
研究计算资源中最常见的时间(要通过多少步演算才能解决问题)和空间(在解决问题时需要多少存储器)
归约:
是解决不同算法问题的一种手段。比如有两个算法任务A and B,假如任务A比任务B的复杂性低(简记为A≤B)。从归约的角度来看,就是说如果我们有了B的有效算法M,那么我们有一个有效算法N,它可以引用M,最终解决A问题。
所以 A≤B 等价 A归约到B(reduces A to B, or A is reducible to B, or A can be reduced to B)。
时间复杂度
时间复杂度不是表示程序解决一个问题要花费的时间,而是表示 当问题规模(数据)增大后,程序处理需要的时间增长的有多快。比如当数据扩大n倍后,程序处理的时间变慢n倍,那就是O(n)的时间复杂度。再比如冒泡排序,数据扩大2倍,时间变慢4倍,就是O(n^2)的时间复杂度。
如下表所示,时间复杂度排序递减
多项式时间
在计算复杂度理论中,指的是一个问题的计算时间 m ( n ) m(n)