您的位置:首页 > 其它

算法导论第1章—算法在计算中的作用

2014-08-10 19:08 155 查看
算法:

非形式地说,算法(algorithm)就是任何良定义的计算过程,该过程取某个值或值的集合作为输入并产生某个值或值的集合作为输出。这样算法就是把输入转换成输出的计算步骤的一个序列。

我们也可以把算法看成是用于求解良说明的计算问题的工具。一般来说,问题陈述说明了期望的输入输出关系。算法则描述一个特定的计算过程来实现该输入输出关系。

算法可以用英语说明,也可以说明成计算机程序,甚至说明成硬件设计。唯一的要求是这个说明必须精确描述所要遵循的计算过程。

许多有趣的算法问题共有的特征:

1. 存在许多候选解,但绝大多数候选解都没有解决手头上的问题。寻找最优解。

2. 存在实际应用。

数据结构

数据结构是一种存储和组织数据的方式,旨在便于访问和修改。没有一种单一的数据结构对所有用途均有效,所以重要的是知道几种数据结构的优势和局限。

技术

本书教你一些算法设计与分析的技术,以便你能自行设计算法、证明其正确性和理解其效率。

难题

本书大部分讨论有效算法。我们关于效率的一般量度是速度,即一个算法花多长时间产生结果。然而有一些问题,目前还不知道有效的解法。第34章研究这些问题的一个有效地子集,其中的问题被称为NP完全的。对于NP完全问题:第一,目前还不知道是否存在有效的解法。第二,如果一个NP完全问题存在有效解法,那么所有NP完全问题都存在有效解法。

并行性

多核计算机(并行计算机),为了从多核计算机上获得最佳的性能,设计算法时必须考虑并行性。第27章给出了充分利用多核的”多线程“算法的一个模型。从理论的角度来看,该模型具有一些优点,它形成了几个成功的计算机程序的基础,包括一个国际象棋博弈程序。

作为一种技术的算法:

效率

为求解相同问题而设计的不同算法在效率方面常常具有显著地差别。这些差别可能比由于硬件和软件造成的差别要重要得多。

算法与其他(先进的计算机)技术

1. 先进的计算机体系结结构与制造技术

2. 易于使用、直观的图形用户界面(GUI)

3. 面向对象的系统

4. 集成的万维网技术

5. 有线与无线网络的快速组网

是否具有算法知识与技术的坚实基础是区分真正熟练的 程序员与初学者的一个特征。使用现代计算技术,如果你对算法懂得不多,你也可以完成一些任务,但是,如果有一个好的算法背景,那么你可以做的事情就多得多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: