算法设计与分析基础
作者简介:
作者:(美国)莱维汀(Anany Levitin) 译者:潘彦
内容简介:
作者基于丰富的教学经验,开发了一套全新的算法分类方法。该分类法站在通用问题求解策略的高度,对现有大多数算法准确分类,从而引领读者沿着一条清晰、一致、连贯的思路来探索算法设计与分析这一迷人领域。《算法设计与分析基础(第3版)》作为第3版,相对前版调整了多个章节的内容和顺序,同时增加了一些算法,并扩展了算法的应用,使得具体算法和通用算法设计技术的对应更加清晰有序;各章累计增加了70道习题,其中包括一些有趣的谜题和面试问题。《算法设计与分析基础(第3版)》十分适合用作算法设计和分析的基础教材,也适合任何有兴趣探究算法奥秘的读者使用,只要读者具备数据结构和离散数学的知识即可。
目录:
目录 第1章绪论 1.1什么是算法 习题1.1 1.2算法问题求解基础 1.2.1理解问题 1.2.2了解计算设备的性能 1.2.3在精确解法和近似解法之间做出选择 1.2.4算法的设计技术 1.2.5确定适当的数据结构 1.2.6算法的描述 1.2.7算法的正确性证明 1.2.8算法的分析 1.2.9为算法写代码 习题1.2 1.3重要的问题类型 1.3.1排序 1.3.2查找 1.3.3字符串处理 1.3.4图问题 1.3.5组合问题 1.3.6几何问题 1.3.7数值问题 习题1.3 1.4基本数据结构 1.4.1线性数据结构 1.4.2图 1.4.3树 1.4.4集合与字典 习题1.4 小结 第2章算法效率分析基础 2.1分析框架 2.1.1输入规模的度量 2.1.2运行时间的度量单位 2.1.3增长次数 2.1.4算法的最优、最差和平均效率 2.1.5分析框架概要 习题2.1 2.2渐近符号和基本效率类型 2.2.1非正式的介绍 2.2.2符号O 2.2.3符号Q 2.2.4符号θ 2.2.5渐近符号的有用特性 2.2.6利用极限比较增长次数 2.2.7基本的效率类型 习题2.2 2.3非递归算法的数学分析 习题2.3 2.4递归算法的数学分析 习题2.4 2.5例题:计算第n个斐波那契数 习题2.5 2.6算法的经验分析 习题2.6 2.7算法可视法 小结 第3章蛮力法 3.1选择排序和冒泡排序 3.1.1选择排序 3.1.2冒泡排序 习题3.1 3.2顺序查找和蛮力字符串匹配 3.2.1顺序查找 3.2.2蛮力字符串匹配 习题3.2 3.3最近对和凸包问题的蛮力算法 3.3.1最近对问题 3.3.2凸包问题 习题3.3 3.4穷举查找 3.4.1旅行商问题 3.4.2背包问题 3.4.3分配问题 习题3.4 3.5深度优先查找和广度优先查找 3.5.1深度优先查找 3.5.2广度优先查找 习题3.5 小结 第4章减治法 4.1插入排序 习题4.1 4.2拓扑排序 习题4.2 4.3生成组合对象的算法 4.3.1生成排列 4.3.2生成子集 习题4.3 4.4减常因子算法 4.4.1折半查找 4.4.2假币问题 4.4.3俄式乘法 4.4.4约瑟夫斯问题 习题4.4 4.5减可变规模算法 4.5.1计算中值和选择问题 4.5.2插值查找 4.5.3二叉查找树的查找和插入 4.5.4拈游戏 习题4.5 小结 第5章分治法 5.1合并排序 习题5.1 5.2快速排序 习题5.2 5.3二叉树遍历及其相关特性 习题5.3 5.4大整数乘法和Strassen矩阵乘法 5.4.1大整数乘法 5.4.2Strassen矩阵乘法 习题5.4 5.5用分治法解最近对问题和凸包问题 5.5.1最近对问题 5.5.2凸包问题 习题5.5 小结 第6章变治法 6.1预排序 习题6.1 6.2高斯消去法 6.2.1LU分解 6.2.2计算矩阵的逆 6.2.3计算矩阵的行列式 习题6.2 6.3平衡查找树 6.3.1AVL树 6.3.22—3树 习题6.3 6.4堆和堆排序 6.4.1堆的概念 6.4.2堆排序 习题6.4 6.5霍纳法则和二进制幂 6.5.1霍纳法则 6.5.2二进制幂 习题6.5 6.6问题化简 6.6.1求最小公倍数 6.6.2计算图中的路径数量 6.6.3优化问题的化简 6.6.4线性规划 6.6.5简化为图问题 习题6.6 小结 第7章时空权衡 7.1计数排序 习题7.1 7.2字符串匹配中的输入增强技术 7.2.1Horspool算法 7.2.2Boyer—Moore算法 习题7.2 7.3散列法 7.3.1开散列(分离链) 7.3.2闭散列(开式寻址) 习题7.3 7.4B树 习题7.4 小结 第8章动态规划 8.1三个基本例子 习题8.1 8.2背包问题和记忆功能 8.2.1背包问题 8.2.2记忆化 习题8_2 8.3最优二叉查找树 习题8.3 8.4Warshall算法和Floyd算法 8.4.1Warshall算法 8.4.2计算完全最短路径的Floyd算法 习题8.4 小结 第9章贪婪技术 9.1Prim算法 习题9.1 9.2Kruskal算法 习题9.2 9.3Diikstra算法 习题9.3 9.4哈夫曼树及编码 习题9.4 小结 第10章迭代改进 10.1单纯形法 10.1.1线性规划的几何解释 10.1.2单纯形法概述 10.1.3单纯形法其他要点 习题10.1 10.2最大流量问题 习题10.2 10.3二分图的虽大匹配 习题10.3 10.4稳定婚姻问题 习题10.4 小结 第11章算法能力的极限 11.1如何求下界 11.1.1平凡下界 11.1.2信息论下界 11.1.3敌手下界 11.1.4问题化简 习题11.1 11.2决策树 11.2.1排序的决策树 11.2.2查找有序数组的决策树 习题11.2 11.3P、NP和NP完全问题 11.3.1P和NP问题 11.3.2NP完全问题 习题11.3 11.4数值算法的挑战 习题11.4 小结 第12章超越算法能力的极限 12.1回溯法 12.1.1n皇后问题 12.1.2哈密顿回路问题 12.1.3子集和问题 12.1.4一般性说明 习题12.1 12.2分支界限法 12.2.1分配问题 12.2.2背包问题 12.2.3旅行商问题 习题12.2 12.3NP困难问题的近似算法 12.3.1旅行商问题的近似算法 12.3.2背包问题的近似算法 习题12.3 12.4解非线性方程的算法 12.4.1平分法 12.4.2试位法 12.4.3牛顿法 习题12.4 小结 跋 附录A算法分析的实用公式 附录B递推关系简明指南 习题提示 参考文献
评论