首页 > 图书中心 > 算法设计与分析

前言

进入21世纪,各国高科技发展突飞猛进,对教育资源、人才资源的争夺也日益激烈。计算机软件开发更是处在核心竞争地位。培养应用型软件开发人才成为提高一个国家科技实力的重要步骤。我国973信息技术与高性能软件基础规划项目首席科学家顾钧教授和中国工程院院士李国杰教授指出:“我国的软件开发要算法先行,这样才能推动软件技术的研究与开发,提高我国企业软件产品的技术竞争力和市场竞争力。”

算法设计与分析是一门理论性与实践性相结合的课程,是计算机科学与计算机应用专业的核心课程。学习算法设计可以在分析解决问题的过程中,培养学生的抽象思维和缜密概括的能力,提高学生的软件开发设计能力。

本书共包含四篇:

第一篇“引入篇”,共两章。从认识算法开始,介绍问题求解的步骤及算法在其中的重要地位,讲解算法效率分析的基本方法,对当前常用的算法软件进行简要概述(即为带“*”号的1.3节,此节可作为选修)。

第二篇“基础篇”,对算法的重复操作机制——循环和递归的设计要点、算法中数据结构的选择和提高算法效率的基本技巧做了讲解,这些都是算法设计的重要基础。

第三篇“核心篇”,共两章。主要介绍了几种常用的算法策略,如枚举法、递推法、分治法、贪婪算法、动态规划及与图搜索有关的算法策略,并对算法策略进行了总结比较。

第四篇“应用篇”,它是以问题为节,每节中针对同一问题采用不同的数学模型、不同数据结构或不同的算法策略进行算法设计,并进行效率分析。这部分内容是对算法设计学习的实践。

本书着重从分析问题开始,进行算法设计和算法分析。这样做有利于培养学生“设计”算法的能力,而不是“记忆” 算法的能力。并力争浅显易懂地讲解较深奥的算法设计和算法分析方法。

本书的主要特点有:

1. 重应用

现有的一些算法设计教材,适用于纯算法研究方向研究生的学习和研究工作,讲解重理论。本教材则侧重对有算法设计应用需求的研究生和本科生的教学,以算法设计的基本策略、步骤、技巧及应用为重点。突出算法设计的思想,总结了不同问题在同一策略下的应用差别,并进行了归类讲解。

2. 重能力

在学习算法设计中,学生一般较容易理解已写好的算法,但面对问题进行算法设计往往就感到比较难。为了改变这种现象,本书中每个例题要经过问题分析、数学建模、数据结构设计后,才给出算法设计和算法分析。这样能使学生对算法“知其然,也知其所以然”,从而较好地提高学生分析问题和设计算法的能力。

3. 重基础

第二篇“基础篇”,在程序设计与算法设计之间起承上启下的作用。对问题求解的基本方法、算法基本要素的使用及提高算法效率的基本技巧做了介绍,相信这些内容会给学生较大的帮助。

4. 重兴趣培养

第一篇中对现代算法的概览旨在扩大学生的知识面,让学生明白只有打好算法设计的基础才能开发出解决现实问题的算法。同时还可以增强读者对算法设计学习的兴趣。

5. 重实践

为了更好地实践前几章学习的知识,本书第四篇中以问题为节,每节针对同一问题,采用不同的数学模型、不同的数据结构或不同的算法策略进行算法设计。从而扩展学生解决问题的思路,学会灵活运用算法知识,而不是硬性地套用算法策略。同时,也可以通过对多种算法设计的分析、比较,认识算法的优劣。

在学习算法设计的过程中,有的读者一定会感到所学的内容和大多例题都离现实问题较远,似乎用途不大。这是因为现实中的实际问题往往较复杂,需要具备算法设计、软件工程等综合能力。所以,只能通过一些简单、抽象的例子,对基础的算法策略进行讲解。待打好算法设计基础且有足够的知识储备后,才能去解决实际应用问题。

随着信息化时代的到来,计算机开发平台日新月异,计算机的应用也不断拓展到了各个领域;各类算法和技巧层出不穷,本书只能是管中窥豹。若能达到本书的初衷——使读者能掌握到算法设计的基本方法和技巧,打好软件开发的基础,就深感满意了。

虽然力争精确,但由于作者水平有限,书中不当之处敬请专家和读者指正。

作者

2005年10月

版权所有(C)2023 清华大学出版社有限公司 京ICP备10035462号 京公网安备11010802042911号

联系我们 | 网站地图 | 法律声明 | 友情链接 | 盗版举报 | 人才招聘