沈孝钧计算机算法基础答案,计算机算法基础

本书深入浅出地介绍了计算机算法的基本理论和方法,包括算法复杂度、分治法、贪心法、动态规划等。内容涵盖排序、选择、图的遍历、最短路径、网络流等问题的算法,以及NP完全问题和近似算法。适合计算机科学学生和研究人员阅读。
摘要由CSDN通过智能技术生成

图书简介

本书作者根据自己20多年在国内、国外的教学与科研实践,深入浅出地介绍计算机算法中涉及的基本理论和方法。主要内容包括算法复杂度的概念和表达、分治法、贪心法、动态规划、图的遍历技术、扫描线技术、回溯法、分枝限界法、剪技等。在讲述这些技术的同时,介绍一系列重要问题的算法,包括排序问题、选择问题、最小生成树问题、最短路经问题、网络流问题、二分图的匹配问题、字符串的匹配问题以及若干几何算法问题,并将这些问题的解法及所用技术紧密相连,有机地编排在一起。此外,本书还介绍了问题本身固有的计算复杂性的概念和NP完全问题的理论以及近似算法。最后,对书中用到的红黑树这一数据结构在附录中进行了详细介绍。本书讲解细腻、分析透彻,以探索解决问题的方式深入分析了大量案例,使读者能清晰触摸到作者的思维方法,并建立起自己独立思考的学习习惯。本书可以作为计算机科学等相关专业本科生、研究生的教材,也可供从事计算机设计与分析的教师与研究人员参考。

章节目录

目 录

前言

教学建议

第1章 概述1

1.1 算法与数据结构及程序的关系1

1.1.1 什么是算法1

1.1.2 算法与数据结构的关系1

1.1.3 算法与程序的关系1

1.1.4 选择排序的例子2

1.1.5 算法的伪码表示2

1.2 算法复杂度分析3

1.2.1 算法复杂度的度量3

1.2.2 算法复杂度与输入数据规模的关系3

1.2.3 输入数据规模的度量模型4

1.2.4 算法复杂度分析中的两个简化假设4

1.2.5 最好情况、最坏情况和平均情况的复杂度分析5

1.3 函数增长渐近性态的比较6

1.3.1 三种比较关系及O、Ω、Θ记号6

1.3.2 表示算法复杂度的常用函数6

1.4 算法复杂度与问题复杂度的关系8

1.4.1 问题复杂度是算法复杂度的下界8

1.4.2 问题复杂度与最佳算法8

1.4.3 易处理问题和难处理问题8

习题9

第2章 分治法10

2.1 分治法原理10

2.1.1 二元搜索的例子10

2.1.2 表示复杂度的递推关系11

2.2 递推关系求解11

2.2.1 替换法12

2.2.2 序列求和法和递归树法13

2.2.3 常用序列和公式14

2.2.4 主方法求解16

习题16

第3章 基于比较的排序算法19

3.1 插入排序19

3.1.1 插入排序的算法19

3.1.2 插入排序算法的复杂度分析20

3.1.3 插入排序的优缺点20

3.2 合并排序21

3.2.1 合并算法及其复杂度21

3.2.2 合并排序的算法及其复杂度22

3.2.3 合并排序的优缺点24

3.3 堆排序24

3.3.1 堆的数据结构24

3.3.2 堆的修复算法及其复杂度25

3.3.3 为输入数据建堆27

3.3.4 堆排序算法28

3.3.5 堆排序算法的复杂度29

3.3.6 堆排序算法的优缺点29

3.3.7 堆用作优先队列30

3.4 快排序31

3.4.1 快排序算法31

3.4.2 快排序算法最坏情况复杂度33

3.4.3 快排序算法平均情况复杂度34

3.4.4 快排序算法最好情况复杂度34

3.4.5 快排序算法优缺点36

习题36

第4章 不基于比较的排序算法39

4.1 比较排序的下界39

4.1.1 决策树模型及最坏情况下界39

*4.1.2 二叉树的外路径总长与平均情况下界41

*4.1.3 二叉树的全路径总长及堆排序最好情况下界43

4.2 不基于比较的线性时间排序算法46

4.2.1 计数排序46

4.2.2 基数排序48

4.2.3 桶排序49

习题51

第5章 中位数和任一顺序数的选择53

5.1 问题定义53

5.2 最大数和最小数的选择53

5.2.1 最大和最小顺序数的选择算法及其复杂度53

5.2.2 同时找出最大数和最小数的算法54

5.3 线性时间找出任一顺序数的算法55

5.3.1 最坏情况复杂度为O (n)的算法56

5.3.2 平均情况复杂度为O (n)的算法58

5.4 找出k个最大顺序数的算法58

5.4.1 一个理论联系实际的问题58

5.4.2 利用堆来找k个最大的顺序数的算法59

5.4.3 利用锦标赛树来找k个最大顺序数的算法59

习题60

第6章 动态规划62

6.1 动态规划的基本原理62

6.2 矩阵连乘问题63

6.3 最长公共子序列问题68

*6.4 最佳二元搜索树71

6.5 多级图及其应用76

6.6 最长递增子序列问题78

习题80

第7章 贪心算法86

7.1 最佳邮局设置问题86

7.2 最佳活动安排问题87

7.3 哈夫曼编码问题89

7.3.1 前缀码89

7.3.2 最佳前缀码——哈夫曼编码90

7.4 最佳加油计划问题94

习题96

第8章 图的周游算法100

8.1 图的表示100

8.1.1 邻接表100

8.1.2 邻接矩阵101

8.2 广度优先搜索及应用101

8.2.1 广度优先搜索策略101

8.2.2 广度优先搜索算法及距离树102

8.2.3 无向图的二着色问题105

8.3 深度优先搜索及应用107

8.3.1 深度优先搜索策略107

8.3.2 深度优先搜索算法和深度优先树107

8.3.3 深度优先搜索算法举例和图中边的分类110

8.3.4 拓扑排序112

8.3.5 无回路有向图中最长路径问题及应用114

8.3.6 有向图的强连通分支的分解116

8.3.7 无向图的双连通分支的分解119

习题124

第9章 图的最小支撑树128

9.1 计算最小支撑树的一个通用的贪心算法策略129

9.2 Kruskal算法130

9.3 Prim算法133

习题137

第10章 单源最短路径140

10.1 Dijkstra算法140

10.2 Bellman-Ford算法144

习题148

第11章 网络流150

11.1 网络模型和最大网络流问题150

11.2 网络中流与割的关系152

11.2.1 网络中的割及其容量153

11.2.2 剩余网络和增广路径154

11.2.3 最大流最小割定理156

11.3 Ford-Fulkerson 方法157

11.3.1 Ford-Fulkerson 的通用方法157

11.3.2 Edmonds-Karp算法159

11.3.3 Dinic算法161

11.3.4 0-1网络的最大流问题164

11.4 二部图的匹配问题165

11.4.1 用网络流求二部图的最大匹配算法166

11.4.2 Philip-Hall婚配定理167

11.4.3 Birkhoff-von Neuman定理169

11.5 推进-重标号算法简介170

11.5.1 预流和高度函数170

11.5.2 在剩余图中对顶点的两个操作171

11.5.3 推进-重标号算法的初始化172

11.5.4 推进-重标号的通用算法172

习题174

第12章 计算几何基础177

12.1 平面线段及相互关系177

12.1.1 向量的点积和叉积177

12.1.2 平面线段的相互关系178

12.2 平扫线技术和线段相交的确定181

12.2.1 平扫线的状态182

12.2.2 用平扫线确定线段相交的算法182

12.3 平面点集的凸包185

12.3.1 Graham扫描法186

12.3.2 Jarvis 行进法190

12.4 最近点对问题192

习题195

第13章 字符串匹配197

13.1 一个朴素的字符串匹配算法197

13.2 Rabin-Karp算法198

13.3 基于有限状态自动机的匹配算法199

13.3.1 有限状态自动机简介199

13.3.2 字符串匹配自动机200

13.3.3 基于有限状态自动机的串匹配算法202

13.4 Knuth-Morris-Pratt(KMP)算法203

13.4.1 模式的前缀函数203

13.4.2 KMP算法的伪码205

习题207

第14章 NP完全问题208

14.1 预备知识209

14.1.1 图灵机209

14.1.2 符号集和编码对计算复杂度的影响210

14.1.3 判断型问题和优化型问题及其关系210

14.1.4 判断型问题的形式语言表示211

14.1.5 多项式关联和多项式归约212

14.2 P和NP语言类214

14.2.1 非确定图灵机和NP语言类214

14.2.2 多项式检验算法和NP类语言215

14.3 NP完全语言类和NP完全问题216

14.3.1 第一个NPC问题217

14.3.2 若干著名NPC问题的证明220

习题231

第15章 近似算法236

15.1 近似算法的性能评价236

15.2 顶点覆盖问题237

15.3 货郎担问题238

15.3.1 满足三角不等式关系的货郎担问题238

15.3.2 无三角不等式关系的一般货郎担问题241

15.4 集合覆盖问题242

15.5 MAX-3-SAT问题244

15.6 加权的顶点覆盖问题245

15.7 子集和问题247

15.7.1 一个保证最优解的指数型算法247

15.7.2 子集和问题的一个完全多项式近似机制248

*15.8 鸿沟定理和不可近似性251

15.8.1 鸿沟定理251

15.8.2 任务均匀分配问题252

习题254

第16章 穷举搜索257

16.1 搜索问题及方法的描述257

16.2 回溯法259

16.2.1 回溯法的通用算法259

16.2.2 n皇后问题259

16.2.3 子集和问题260

16.2.4 回溯法的效率估计262

16.3 分支限界法263

16.3.1 分支限界法解n皇后问题264

16.3.2 0/1背包问题266

16.4 博弈树和α-β剪枝271

16.4.1 博弈树及其评估的方法271

16.4.2 α-β剪枝法275

习题276

附录 红黑树278

参考文献289

图书评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值