普通高等教育软件工程“十三五”规划教材

算法设计与分析

提供典型算法的C++实现代码
分享 推荐 3 收藏 47 阅读 7.3K
王幸明 张晓霞 (作者) 978-7-115-47266-3

关于本书的内容有任何问题,请联系 人邮社 王宣

1.针对精简学时的教学:讲算法最核心的问题,算法描述采用伪码,力求突出对问题本身的分析和求解方法的阐述。
2.在各章中体现了将同一算法的设计方法和设计策略用于求解不同问题,更便于学生体会、掌握算法设计的思路。
3.在叙述中不但注意理论的严谨,也精选了大量生动有趣的例子,每章都配有难度适当的练习,适合教学使用
4.提供典型算法的C++实现代码

内容摘要

本书以程序设计作为基础,数据结构作为工具,六大核心算法作为目标,系统地介绍了算法设计中典型问题的求解过程。
全书内容包括算法设计基础、递归算法、分治算法、贪心算法、动态规划算法、回溯算法、分支限界算法、实验指导。六大核心算法后都配有典型问题的C++代码,并结合实验指导辅助读者进行算法实践训练。

目录

第 1章 算法设计与分析基础 1
1.1 算法概述 2
1.1.1 什么是算法 2
1.1.2 学习算法的重要性 6
1.2 问题的求解过程 6
1.2.1 问题及问题的求解过程 6
1.2.2 算法设计与算法表示 7
1.2.3 算法确认和算法分析 8
1.3 算法的复杂性分析 8
1.3.1 算法评价的基本原则 9
1.3.2 影响程序运行时间的因素 10
1.3.3 算法复杂度 11
1.3.4 使用程序步分析算法 14
1.3.5 渐近表示法 15
1.4 算法设计中常见的重要问题类型 18
1.4.1 排序问题 18
1.4.2 查找问题 19
1.4.3 图问题 19
1.4.4 组合问题 20
1.4.5 几何问题 20
1.4.6 数值问题 21
1.4.7 其他常见问题 21
1.5 常用的算法设计方法 22
1.5.1 数值计算算法 23
1.5.2 非数值计算算法 24
1.6 小结 28
练习题 29
第 2章 递归算法 31
2.1 递归算法的思想 32
2.1.1 递归算法的特性 32
2.1.2 递归算法的执行过程 32
2.1.3 递推关系 33
2.2 递归法应用举例 37
2.2.1 汉诺塔问题 37
2.2.2 斐波那契数列问题 39
2.2.3 八皇后问题 40
2.3 典型问题的C++程序 43
2.4 小结 48
练习题 48
第3章 分治算法 50
3.1 分治算法的思想 51
3.2 排序问题中的分治算法 52
3.2.1 归并排序 53
3.2.2 快速排序 55
3.3 查找问题中的分治算法 57
3.3.1 折半查找 57
3.3.2 选择问题 59
3.4 组合问题中的分治算法 60
3.4.1 最大子段和问题 60
3.4.2 棋盘覆盖问题 62
3.5 典型问题的C++程序 64
3.6 小结 70
练习题 71
第4章 贪心算法 72
4.1 贪心算法的思想 73
4.1.1 问题的提出 73
4.1.2 贪心算法设计思想 73
4.1.3 贪心算法的基本要素 74
4.1.4 贪心算法的求解过程 74
4.2 组合问题中的贪心算法 75
4.2.1 背包问题 75
4.2.2 多机调度问题 77
4.3 图问题中的贪心算法 78
4.3.1 单源最短路径问题 78
4.3.2 最小代价生成树 80
4.4 典型问题的C++程序 84
4.5 小结 92
练习题 92
第5章 动态规划算法 94
5.1 动态规划算法的思想 95
5.2 查找问题中的动态规划算法 97
5.2.1 最优二叉搜索树 97
5.2.2 近似串匹配问题 100
5.3 图问题中的动态规划算法 102
5.3.1 多段图问题 102
5.3.2 每对结点间的最短距离 105
5.4 组合问题中的动态规划算法 108
5.4.1 0/1背包问题 108
5.4.2 最长公共子序列 112
5.4.3 流水作业调度 115
5.5 典型问题的C++程序 120
5.6 小结 125
练习题 126
第6章 回溯算法 128
6.1 回溯算法的思想 129
6.1.1 基本概念 129
6.1.2 基本思路 130
6.1.3 回溯算法的适用条件 132
6.1.4 回溯算法的效率估计 132
6.2 组合问题中的回溯算法 133
6.2.1 装载问题 133
6.2.2 0/1背包问题 134
6.2.3 n皇后问题 136
6.2.4 图的m着色问题 139
6.2.5 子集和数问题 141
6.3 图问题中的回溯算法 143
6.3.1 深度优先搜索 143
6.3.2 货郎(TSP)问题 143
6.3.3 最大团(MCP)问题 145
6.3.4 哈密顿环问题 146
6.4 算法效率的影响因素及改进途径 148
6.4.1 影响算法效率的因素 148
6.4.2 回溯算法的改进途径 148
6.5 典型问题的C++程序 148
6.6 小结 165
练习题 165
第7章 分支限界算法 167
7.1 分支限界算法的思想 168
7.2 求最优解的分支限界算法 170
7.2.1 FIFO分支限界算法 171
7.2.2 LC分支限界算法 172
7.3 组合问题中的分支限界算法 173
7.3.1 0/1背包问题 173
7.3.2 带限期的作业排序 175
7.4 图问题中的分支限界算法 179
7.4.1 旅行商问题 179
7.4.2 单源点最短路径问题 182
7.5 典型问题的C++程序 184
7.6 小结 188
练习题 188
附录 实验指导 190
实验一 递归与分治算法 191
1.1 实验目的与要求 191
1.2 实验课时 191
1.3 实验原理 191
1.4 实验题目 191
1.5 思考题 192
实验二 贪心算法 192
2.1 实验目的与要求 192
2.2 实验课时 192
2.3 实验原理 192
2.4 实验题目 193
2.5 思考题 194
实验三 动态规划算法 194
3.1 实验目的与要求 194
3.2 实验课时 195
3.3 实验原理 195
3.4 实验题目 195
3.5 思考题 197
实验四 回溯算法 197
4.1 实验目的与要求 197
4.2 实验课时 197
4.3 实验原理 197
4.4 实验题目 198
4.5 思考题 199
实验五 分支限界算法 199
5.1 实验目的与要求 199
5.2 实验课时 200
5.3 实验原理 200
5.4 实验题目 200
5.5 思考题 203
参考文献 204

读者评论

赶紧抢沙发哦!

我要评论

作者介绍

王幸民 太原理工大学高工。1984年7月毕业于山西大学计算数学专业,长期从事计算机课程的教学与科研工作,讲授程序设计技术基础(C语言)、面向对象程序设计基础(C++)、算法设计与分析、大学计算机基础、人工智能、管理信息系统等课程,主编与参编多本教材。

张晓霞,太原理工大学教师。长期从事计算机课程的基础教学与研究工作,主讲大学计算机基础、程序设计技术基础(C语言)、程序设计技术基础(VB语言)、算法设计与分析、微机原理及应用、计算机接口技术等课程,主编和参编过多本教材。

推荐用户

同系列书

  • 算法设计与分析

    王幸明 张晓霞

    本书以程序设计作为基础,数据结构作为工具,六大核心算法作为目标,系统地介绍了算法设计中典型问题的求解过程。 ...

    ¥45.00

购买本书用户

相关图书

人邮微信
本地服务
教师服务
教师服务
读者服务
读者服务
返回顶部
返回顶部