第1章 算法概述
学习要点:
理解算法的概念。
理解什么是程序,程序与算法的区别和内在联系。
掌握算法的计算复杂性概念。
掌握算法渐近复杂性的数学表述。
掌握用C++语言描述算法的方法。
算法(Algorithm)
算法是指解决问题的一种方法或一个过程。
算法是若干指令的有穷序列,满足性质:
(1)输入:有外部提供的量作为算法的输入。
(2)输出:算法产生至少一个量作为输出。
(3)确定性:组成算法的每条指令是清晰,无歧义的。
(4)有限性:算法中每条指令的执行次数是有限的,执行每条指令的时间也是有限的。
程序(Program)
程序是算法用某种程序设计语言的具体实现。
程序可以不满足算法的性质(4)。
例如操作系统,是一个在无限循环中执行的程序,因而不是一个算法。
操作系统的各种任务可看成是单独的问题,每一个问题由操作系统中的一个子程序通过特定的算法来实现。该子程序得到输出结果后便终止
算法复杂性分析
算法复杂性 = 算法所需要的计算机资源
算法的时间复杂性T(n);
算法的空间复杂性S(n)。
其中n是问题的规模(输入大小)。