算法复杂度简介
一 概念
时间复杂度和空间复杂度是衡量算法效率的重要的指标,而现实中对时间复杂度尤为关心,面试经常会问。但是一问到空间复杂度就容易卡壳。其实在算法设计中,在规定量级空间复杂度去设计算法是件非常有趣的事。
时间复杂度:是指执行算法所需要的计算工作量。(其实就是所耗费的时间,但是用量级形势将其表示出来)
空间复杂度:执行这个算法所需要的内存空间。(其实就是消耗存储空间的大小)
二 时间复杂度
(一)P、NP、NPC、NPH问题
这个问题能很好反应时间复杂度是量级问题,而不是具体代码几行,一次运算消耗多长时间。
多项式时间:在计算复杂度理论中,指的是一个问题的计算时间不大于问题大小的多项式倍数。
P问题:所有可以在多项式时间内求解的判定问题构成P类问题。判定问题:判断是否有一种能够解决某一类问题的能行算法的研究课题。(P问题就是我们算法主要研究的问题)
NP问题:所有的非确定性多项式时间可解的判定问题构成NP类问题。非确定性算法:非确定性算法将问题分解成猜测和验证两个阶段。算法的猜测阶段是非确定性的,算法的验证阶段是确定性的,它验证猜测阶段给出解的正确性。设算法A是解一个判定问题Q的非确定性算法,如果A的验证阶段能在多项式时间内完成,则称A是一个多项式时间非确定性算法。有些计算问题是确定性的,例如加减乘除,只要按照公式推导,按部就班一步步来,就可以得到结果。但是&#x