出版时间:2010-1 出版社:电子工业出版社 作者:[美]乌迪·曼博(Udi Manber) 页数:334
Tag标签:无
前言
编写本书的动机来源于我在教学实践中常常无法为给定算法给出清晰解析的困惑。与许多教师一样,我发现对一些学生来说,要他们亲自动手解决一些简单问题有困难,而让他们理解给定问题的解决方案同样有困难。我相信,事物的两个方面——创造和解释——是相关而不可分离的。为了完全了解一个问题,考察最后的答案远远不够,我们必须了解问题的求解过程。 本书强调了算法设计的创造性方面,其主要目的是要告诉读者如何去设计一个新的算法。本书描述算法的顺序不是“问题X、算法A、算法A'、程序P、程序P'”,而是像(但并不总是)“问题X、直接明了的问题求解算法、缺点、改进这些缺点的困难、(可能包含一些错误的)好的算法、进一步的改进、分析以及其他方法和算法的关系”。本书的目标不是给出一个容易转换为程序代码的算法,而是希望读者理解算法的原理。算法因此被解释为创造过程而不是最终产品。我们讲授算法的目标不仅是说明如何求解特定的问题,还包括传授如何求解未来将产生或遇到的新问题的技术。可以说,讲授算法设计的思维过程与讲授问题求解细节是同样重要的。
内容概要
本书是国际算法大师乌迪·曼博(Udi Manber)博士撰写的一本享有盛誉的著作。全书共分12章:第1章到第4章为介绍性内容,涉及数学归纳法、算法分析、数据结构等内容;第5章提出了与归纳证明进行类比的算法设计思想;第6章到第9章分别给出了4个领域的算法,如序列和集合的算法、图算法、几何算法、代数和数值算法;第10章涉及归约,也是第11章的序幕,而后者涉及NP完全问题;第12章则介绍了并行算法;最后是部分习题的答案及参考文献。本书的特色有二,旨在提高读者的问题求解能力,使读者能够理解算法设计的过程和思想:一是强调算法设计的创造性过程,注重算法设计背后的创造性思想,而不拘泥于某个具体算法的详细讨论;二是将算法设计类比于定理归纳证明,揭示了算法设计的基本思想和本质。 本书的组织结构清晰且易于理解,强调了创造性,具有浓郁特色,时至今日仍有其巨大的价值,并且适合作为计算机及相关专业算法和高级算法课程的教材。
作者简介
曼博(Udi Manber)美国著名的计算机科学家,国际公认的算法大师,在线信息搜索引擎的先驱。1982年于华盛顿大学获得计算机科学博士学位,曾是美国亚利桑那大学计算机专业教授。离开学校后在雅虎公司担任执行官,闫前是亚马逊(Amazon.com)的副总裁和首席算法师(CAO),也是亚马逊旗下搜索网站A9.corn的首席执行官。他提出的UDI测试已经成为衡量搜索引擎质量的评估标准。
书籍目录
第1章 引论第2章 数学归纳法 2.1 引言 2.2 三个简单的例子 2.3 平面内区域的计数 2.4 简单的着色问题 2.5 复杂一些的加法题 2.6 一个简单的不等式 2.7 欧拉公式 2.8 图论中的一个问题 2.9 格雷码 2.10 在图上寻找无重边的路 2.11 数学平均数和几何平均数定理 2.12 循环不变量:将十进制数转换为二进制数 2.13 常见的错误 2.14 小结第3章 算法分析 3.1 引言 3.2 符号O 3.3 时间与空间复杂度 3.4 习之和 3.5 递推关系 3.5.1 巧妙地猜测 3.5.2 分治关系 3.5.3 涉及全部历史的递推关系 3.6 一些有用的证明论据 3.7 小结第4章 数据结构简介 4.1 引言 4.2 基本数据结构 4.2.1 元素 4.2.2 数组 4.2.3 记录 4.2.4 链表 4.3 树 4.3.1 树的表示 4.3.2 堆 4.3.3 二叉搜索树 4.3.4 AVL树 4.4 散列 4.5 合并碴找问题 4.6 图 4.7 小结第5章 基于归纳的算法设计 5.1 引言 5.2 多项式求值 5.3 最大导出子图 5.4 寻找一对一映射 5.5 社会名流问题 5.6 分治算法:轮廓问题 5.7 在二叉树中计算平衡因子 5.8 寻找最大连续子序列 5.9 增强归纳假设 5.10 动态规划:背包问题 5.11 常见的错误 5.12 小结第6章 序列和集合的算法 6.1 引言 6.2 二叉搜索的几种形式 6.2.1 纯二叉搜索 6.2.2 循环序列的二叉搜索 6.2.3 二叉搜索特殊下标 6.2.4 二叉搜索长度未知的序列 6.2.5 重叠子序列问题 6.2.6 解方程 6.3 内插搜索 6.4 排序 6.4.1 桶排序和基数排序 6.4.2 插入排序和选择排序 6.4.3 归并排序 6.4.4 快速排序 6.4.5 堆排序 ……第7章 图算法第8章 几何算法第9章 代数和数值算法第10章 归约第11章 NP完全问题第12章 并行算法部分习题答案参考文献
章节摘录
插图:在《韦氏大学词典(第九版)》中,算法的解释是“求解数学问题(如寻找最大公约数)的一个过程,该过程步骤有限,通常还涉及重复的操作;广义地说,算法是按部就班解决一个问题或完成某个目标的过程。本书取广义的算法来定义。算法设计是一个古老的研究领域。自古以来,人们总是对发现更好的目标求解方法充满兴趣,不论是取火、建造金字塔还是对邮件进行排序。而计算机算法的研究当然是一个新的领域。一些计算机算法采用的方法早在计算机发明之前就存在,但大多数计算机算法的设计需要新的方法和技术。首先,告诉计算机诸如“察看小山,如果发现敌情就拉响警报”是不够的。一台计算机必须了解“察看”的确切含义,知道如何识别敌情,懂得如何拉响警报(基于技术原因,拉响警报是最容易的)。一台计算机可接受的指令应当是定义明确、长度有限的基本操作序列。将通常的命令转换为计算机可以理解的指令是一个困难的过程,而该过程就是编程,目前有成百万的程序员正在不同层次上进行编程。计算机上的编程,所需要的不仅仅是将那些为人所理解的命令转换为计算机可以理解的语言。在大多数情况下,程序员必须设计出完全崭新的算法来求解问题。只学习与计算机交谈所用的怪异语言会使编程变得困难,因为只有计算机才知道你说了什么。计算机不仅能以极快的速度执行先前由人完成的操作,它还可以做得更多。计算机能处理数十亿、数万亿比特单位的信息,能在一秒内完成数百万条基本指令。在这个数量级上进行算法设计是一种崭新的实践,有很多方面会与我们的直觉相反,因为我们通常只对自己能感知的事物进行思考。遗憾的是,一些能很好解决小问题的程序在处理大问题时就变得很糟。因此当进行大规模计算时不要忽视算法的复杂度和有效性。
编辑推荐
《算法引论:一种创造性方法》是国际算法大师乌迪·曼博(UdiManber)博士撰写的一本享有盛誉的著作,强调了算法设计的创造性方面,通过算法开发步骤来描述算法设计过程。此外,《算法引论:一种创造性方法》创造性地将算法设计过程同定理归纳证明过程进行类比,揭示了算法设计的基本思想和本质,旨在提高读者的问题求解以及理解算法设计的过程和思想的能力。《算法引论:一种创造性方法》特点:包括经典算法以及流行算法算法设计技巧及其综合应用并行算法设计犬多数算法的伪代码表示500多道习题,其中四分之一给出了答案将算法实现细节和算法思想尽可能分离
图书封面
图书标签Tags
无
评论、评分、阅读与下载