算法:用计算机语言实现的解决某些具体问题的方法。一个算法需要由若干条有限指令组成才能称之为有效算法。
算法性质:
- 0~n个输入
- 至少一个输出
- 组成算法的每条指令都是确定的,有效的
- 算法中的每条指令都必须有在限定时间内执行。
程序:程序是由算法堆砌而成的。
算法复杂性:
针对一个问题,要提出解决方案。而对于我们提出的方案,需要我们用特点的方法去分析这个方案是否有效,是否最优。只有通过复杂性的分析,我们才能在众多有效的方案中寻找到最有价值的解决方法。
那么算法的复杂性分析体现在算法运行所需要的计算机资源上。如果所需要的资源是时间资源那么此时的复杂性称为时间复杂性;如果所需要的资源是空间资源那么此时的复杂性称为空间复杂性。通常对于大多初学算法的人来说,大多分析时间复杂度,进而分析算法,得出最有效的的解决问题的算法。
算法所需要的资源体现在针对问题的规模(N),算法的输入(I),以及算法本身(A)上。如果用C表示算法复杂性,那么有:C=F(N,I,A).
一个算法的时间复杂性分为:最坏情况下的时间复杂性,最好情况下的时间复杂性,和平均情况下的时间复杂性。而评判一个算法最优且最有实际价值的算法复杂性体现在最坏情况下的时间复杂度。
NP完全性理论:
- 通常把可以在多项式时间内解决的问题看做易解问题,而将需要指数函数时间解决的问题看做是难问题。
- 那些可以在多项式时间内解决的判定问题称为P类问题,即多项式问题。NP问题:非确定性问题。即针对一个问题,你要解决它,就得先提出解决方案,然后验证。在这个过程中,提出解决方案是不确定的,而验证时确定的。因此,解决一个问题要比验证一个问题困难的多。
Nearth==>算法设计与分析/第一章/算法概述
最新推荐文章于 2019-12-10 20:51:25 发布