算法技术手册
出版信息
George T. Heineman、Gary Pollice、Stanley Selkow / 杨晨、李明 / 机械工业出版社 / 2010-3 / 55.00元
内容简介
《算法技术手册》内容简介:开发健壮的软件需要高效的算法,然后程序员们往往直至问题发生之时,才会去求助于算法。《算法技术手册》讲解了许多现有的算法,可用于解决各种问题。通过阅读它,可以使您学会如何选择和实现正确的算法,来达成自己的目标。另外,书中的数学深浅适中,足够使您可以了解并分析算法的性能。
较之理论而言,《算法技术手册》更专注于应用。《算法技术手册》提供了高效的代码解决方案,使用多种语言进行编写,让您可以轻松地将其应用于特定的工程当中。通过《算法技术手册》,您可以:
· 解决特定代码的问题,或者提升既有解决方案的性能
· 快速找到与您所解决的问题相关的算法,并决定哪个算法才是最适合的那一个
· 探索使用C、C++、Java以及Ruby实现的算法解决方案以及开发小贴士
· 了解算法预期的性能,以及它达到最高性能时所需要的条件
· 发现不同算法之间相似的设计哲学
· 学习高级数据结构,来提升算法的性能
通过《算法技术手册》,您能学到如何提升算法的性能,这将是您的软件应用程序走向成功的关键。
作者简介
George T. Heineman是伍斯特理工学院计算机科学系的一名副教授,专注于软件工程方面的研究。他还参与编写了一本论述基于组件的软件工程方面的书:《Putting the Pieces Together》,由Addision-Wesley于2001年出版。George是2005年国际组件软件工程研讨会的议程主席。
Gary Pollice自称是一个乖戾的人(其实就是一个顽固的、坏脾气的老人),在工业界花费了35年来探索他究竟希望成为什么。但是在2003年,他毅然决定以不成熟之身从工业界转移到学术的殿堂。在这里他可以用这样激进的话语影响下一代软件工程师的思想,“为你的客户开发软件”,“学会如何成为团队的一员”,“要思考软件设计、代码质量、优雅程度和正确度”和“只要你成为了牛人,那么即使成为书呆子也无所谓啦”。
Gary是伍斯特理工学院的一位实践教授(这是一个头衔,也就是说他在成为一名教授之前有一份真实的工作)。由于对一起工作数年的WPI的毕业生们印象非常好,所以决定来WPI做一名教授。他和妻子Vikki,以及两条狗Aloysius和Ignatius一起住在麻省中部。他一直在做和极客相关的事情。你可以通过他的WPI网页http://web.cs.wpi.edu/~gpollice/来了解他,还可以随意地给他留言,抱怨或者赞美本书。
Stanley Selkow,伍斯特理工学院计算机系的一名教授,于1965年在卡内基理工学院(现卡内基梅隆大学)获得电子电气工程学士学位,1970年在宾夕法尼亚大学获得电子电气工程博士学位。在1968年~1970年间,他在马里兰州贝塞斯达的国家卫生研究所从事公众健康服务相关的工作。自1970年,他先后在田纳西的诺克斯维尔和麻省的伍斯特从事教员工作,他也在蒙特利尔、重庆、洛桑和巴黎做过访问学者。他的主要研究领域是图论和算法设计。
目录
前言
第一部分
第1章 算法真的很重要
理解问题
如果需要,尽可能用实践检验
解决问题的算法
花絮
故事的寓意
参考文献
第2章 算法的数学原理
问题样本的规模
函数的增长率
最好最坏和平均情况下的性能分析
性能指标
混合操作
基准测试
最后一点
参考文献
第3章 模式和领域
模式:一种交流语言
算法模式的格式
伪代码模式的格式
设计格式
基于经验的评价格式
领域和算法
浮点计算
手动内存分配
选择一门编程语言
参考文献
第二部分
第4章 排序算法
概述
插入排序
中值排序
快速排序
选择排序
堆排序
计数排序
选择排序算法的标准
参考文献
第5章 查找
概述
顺序查找
二分查找
基于散列的查找
二叉查找树
参考文献
第6章 图算法
概述
深度优先搜索
广度优先搜索
单源最短路径
所有点对最短路径
最小生成树算法
参考文献
第7章 人工智能中的寻路
概述
深度优先搜索
广度优先搜索
A*搜索
比较
Minimax
NegMax
AlphaBeta
参考文献
第8章 网络流算法
概述
最大流
二部图匹配
在增广路上的深入思考
最小开销流
转运问题
运输问题
任务分配问题
线性编程
参考文献
第9章 计算几何
概述
凸包扫描
线段扫描
最近点查询
范围查询
参考文献
第三部分
第10章 最后的招数
另类算法
近似算法
离线算法
并行算法
随机算法
结果可能出错却可以衰减错误率的算法
参考文献
第11章 尾声
概述
原则:了解数据
原则:将问题分解至更小的问题
原则:选择正确的数据结构
原则:空间换时间
原则:如果没有显而易见的解法,使用搜索
原则:如果没有显而易见的解法,将问题归约为另一个有解的问题
原则:编写算法难,测试算法更难
第四部分
附录 基准测试