时间复杂度
算法复杂度用于比较多种算法的效率。算法复杂度公式以N为自变量,度量算法的复杂情况。如果一个算法的计算量不超过N的多项式函数,那么称这个算法是多项式函数复杂度的。如果一个问题存在一个多项式复杂度的算法,那么称这个问题为P(Polynomial)问题。
Non-polynomial的问题是实际无法解决的问题,比N的多项式函数还要高,例如计算每一步围棋的最佳走法。值得注意的是,不是所有的问题都确定说一定找不到N的多项式函数复杂度算法,可能只是当前没有找到,这类问题被称为Nondeterministic Polynomial,简称NP问题。NP-Complete问题(NPC)问题:认为所有的NP问题都可以在多项式时间内规约到NPC问题。对于计算复杂度至少是NPC的甚至更大的问题,称之为NP-hard问题。
所以在面对一个问题,寻找计算机算法时候,首先要寻找多项式复杂度的算法。有些无法找到多项式复杂度算法的问题,我们只能简化问题寻找近似解。而数学在计算机科学中的一个重要作用就是寻找到计算复杂度尽可能低的算法。同时,为NP-Hard问题找到近似解。