编辑推荐
本书从算法之美娓娓道来,没有高深的原理,也没有枯燥的公式,通过趣味故事引出算法问题,包含50多个实例及完美图解,结合学生提问,分析算法本质,并给出代码实现的详细过程和运行结果。
本书的特色和价值:
(1)实例丰富,通俗易懂
(2)完美图解,简单有趣
(3)深入浅出,透析本质
(4)实战演练,循序渐进
(5)网络资源,技术支持
内容简介
本书内容按照算法策略分为7章。第1章从算法之美、简单小问题、趣味故事引入算法概念、时间复杂度、空间复杂度的概念和计算方法,以及算法设计的爆炸性增量问题,使读者体验算法的奥妙。第2~7章介绍经典算法的设计策略、实战演练、算法分析及优化拓展,分别讲解贪心算法、分治算法、动态规划、回溯法、分支限界法、线性规划和网络流。每一种算法都有4~10个实例,共50个大型实例,包括经典的构造实例和实际应用实例,按照问题分析、算法设计、完美图解、伪代码详解、实战演练、算法解析及优化拓展的流程,讲解清楚且通俗易懂。附录介绍常见的数据结构及算法改进用到的相关知识,包括sort函数、优先队列、邻接表、并查集、四边不等式、排列树、贝尔曼规则、增广路复杂性计算、zui大流zui小割定理等内容。
本书可作为程序员的学习用书,也适合从未有过编程经验但又对算法有强烈兴趣的初学者使用,同时也可作为高等院校计算机、数学及相关专业的师生用书和培训学校的教材。
作者简介
陈小玉,副教授,硕士,高级程序员,研究方向:智能计算、机器学习与数据挖掘。主讲《数据结构》、《算法设计与分析》、《人工智能》等专业课程,并发表过多篇计算机专业论文和项目。
目录
- 第1章 算法之美t1
- 1.1 打开算法之门t2
- 1.2 妙不可言—算法复杂性t2
- 1.3 美不胜收—魔鬼序列t9
- 1.4 灵魂之交—马克思手稿中的数学题t16
- 1.5 算法学习瓶颈t21
- 1.6 你怕什么t22
- 第2章 贪心算法t24
- 2.1 人之初,性本贪t25
- 2.1.1 贪心本质t25
- 2.1.2 贪亦有道t26
- 2.1.3 贪心算法秘籍t26
- 2.2 加勒比海盗船—最优装载问题t27
- 2.2.1 问题分析t27
- 2.2.2 算法设计t28
- 2.2.3 完美图解t28
- 2.2.4 伪代码详解t29
- 2.2.5 实战演练t30
- 2.2.6 算法解析及优化拓展t31
- 2.3 阿里巴巴与四十大盗—背包问题t32
- 2.3.1 问题分析t32
- 2.3.2 算法设计t33
- 2.3.3 完美图解t33
- 2.3.4 伪代码详解t34
- 2.3.5 实战演练t35
- 2.3.6 算法解析及优化拓展t36
- 2.4 高级钟点秘书—会议安排t37
- 2.4.1 问题分析t38
- 2.4.2 算法设计t39
- 2.4.3 完美图解t40
- 2.4.4 伪代码详解t41
- 2.4.5 实战演练t42
- 2.4.6 算法解析及优化拓展t45
- 2.5 一场说走就走的旅行—最短路径t45
- 2.5.1 问题分析t46
- 2.5.2 算法设计t46
- 2.5.3 完美图解t47
- 2.5.4 伪代码详解t51
- 2.5.5 实战演练t52
- 2.5.6 算法解析及优化拓展t55
- 2.6 神秘电报密码—哈夫曼编码t59
- 2.6.1 问题分析t60
- 2.6.2 算法设计t62
- 2.6.3 完美图解t63
- 2.6.4 伪代码详解t65
- 2.6.5 实战演练t74
- 2.6.6 算法解析及优化拓展t77
- 2.7 沟通无限校园网—最小生成树t77
- 2.7.1 问题分析t78
- 2.7.2 算法设计t79
- 2.7.3 完美图解t80
- 2.7.4 伪代码详解t87
- 2.7.5 实战演练t88
- 2.7.6 算法解析t90
- 2.7.7 算法优化拓展t90
- 第3章 分治法t99
- 3.1 山高皇帝远t100
- 3.1.1 治众如治寡—分而治之t100
- 3.1.2 天时地利人和—分治算法要素t100
- 3.1.3 分治算法秘籍t101
- 3.2 猜数游戏—二分搜索技术t101
- 3.2.1 问题分析t101
- 3.2.2 算法设计t102
- 3.2.3 完美图解t102
- 3.2.4 伪代码详解t103
- 3.2.5 实战演练t104
- 3.2.6 算法解析与拓展t105
- 3.3 合久必分,分久必合—合并排序t107
- 3.3.1 问题分析t108
- 3.3.2 算法设计t108
- 3.3.3 完美图解t108
- 3.3.4 伪代码详解t108
- 3.3.5 实战演练t111
- 3.3.6 算法解析与拓展t112
- 3.4 兵贵神速—快速排序t113
- 3.4.1 问题分析t114
- 3.4.2 算法设计t115
- 3.4.3 完美图解t116
- 3.4.4 伪代码详解t117
- 3.4.5 实战演练t118
- 3.4.6 算法解析与拓展t120
- 3.5 效率至上—大整数乘法t124
- 3.5.1 问题分析t124
- 3.5.2 算法设计t125
- 3.5.3 完美图解t126
- 3.5.4 伪代码详解t128
- 3.5.5 实战演练t132
- 3.5.6 算法解析与拓展t135
- 3.6 分治算法复杂度求解秘籍t137
- 第4章 动态规划t141
- 4.1 神奇的兔子序列t142
- 4.2 动态规划基础t143
- 4.2.1 算法思想t143
- 4.2.2 算法要素t143
- 4.2.3 解题秘籍t143
- 4.3 孩子有多像爸爸—最长的公共子序列t145
- 4.3.1 问题分析t145
- 4.3.2 算法设计t147
- 4.3.3 完美图解t148
- 4.3.4 伪代码详解t152
- 4.3.5 实战演练t153
- 4.3.6 算法解析及优化拓展t155
- 4.4 DNA基因鉴定—编辑距离t156
- 4.4.1 问题分析t156
- 4.4.2 算法设计t158
- 4.4.3 完美图解t159
- 4.4.4 伪代码详解t161
- 4.4.5 实战演练t162
- 4.4.6 算法解析及优化拓展t163
- 4.5 长江一日游—游艇租赁t164
- 4.5.1 问题分析t164
- 4.5.2 算法设计t166
- 4.5.3 完美图解t166
- 4.5.4 伪代码详解t170
- 4.5.5 实战演练t171
- 4.5.6 算法解析及优化拓展t172
- 4.6 快速计算—矩阵连乘t172
- 4.6.1 问题分析t173
- 4.6.2 算法设计t176
- 4.6.3 完美图解t176
- 4.6.4 伪代码详解t180
- 4.6.5 实战演练t181
- 4.6.6 算法解析及优化拓展t182
- 4.7 切呀切披萨—最优三角剖分t183
- 4.7.1 问题分析t183
- 4.7.2 算法设计t186
- 4.7.3 完美图解t187
- 4.7.4 伪代码详解t191
- 4.7.5 实战演练t192
- 4.7.6 算法解析及优化拓展t194
- 4.8 小石子游戏—石子合并t194
- 4.8.1 问题分析t195
- 4.8.2 算法设计t197
- 4.8.3 完美图解t198
- 4.8.4 伪代码详解t203
- 4.8.5 实战演练t205
- 4.8.6 算法解析及优化拓展t206
- 4.9 大卖场购物车1—0-1背包问题t209
- 4.9.1 问题分析t210
- 4.9.2 算法设计t211
- 4.9.3 完美图解t212
- 4.9.4 伪代码详解t216
- 4.9.5 实战演练t217
- 4.9.6 算法解析及优化拓展t218
- 4.10 快速定位—最优二叉搜索树t220
- 4.10.1 问题分析t221
- 4.10.2 算法设计t225
- 4.10.3 完美图解t226
- 4.10.4 伪代码详解t239
- 4.10.5 实战演练t241
- 4.10.6 算法解析及优化拓展t243
- 4.11 动态规划算法秘籍t246
- 第5章 回溯法t248
- 5.1 回溯法基础t249
- 5.1.1 算法思想t249
- 5.1.2 算法要素t249
- 5.1.3 解题秘籍t251
- 5.2 大卖场购物车2—0-1背包问题t252
- 5.2.1 问题分析t252
- 5.2.2 算法设计t253
- 5.2.3 完美图解t255
- 5.2.4 伪代码详解t258
- 5.2.5 实战演练t259
- 5.2.6 算法解析t262
- 5.2.7 算法优化拓展t262
- 5.3 部落护卫队—最大团t265
- 5.3.1 问题分析t266
- 5.3.2 算法设计t267
- 5.3.3 完美图解t269
- 5.3.4 伪代码详解t274
- 5.3.5 实战演练t275
- 5.3.6 算法解析及优化拓展t277
- 5.4 地图调色板—地图着色t278
- 5.4.1 问题分析t278
- 5.4.2 算法设计t279
- 5.4.3 完美图解t280
- 5.4.4 伪代码详解t285
- 5.4.5 实战演练t286
- 5.4.6 算法解析及优化拓展t288
- 5.5 一山不容二虎—n皇后问题t289
- 5.5.1 问题分析t290
- 5.5.2 算法设计t291
- 5.5.3 完美图解t292
- 5.5.4 伪代码详解t300
- 5.5.5 实战演练t301
- 5.5.6 算法解析及优化拓展t303
- 5.6 机器零件加工—最优加工顺序t305
- 5.6.1 问题分析t305
- 5.6.2 算法设计t308
- 5.6.3 完美图解t308
- 5.6.4 伪代码详解t313
- 5.6.5 实战演练t314
- 5.6.6 算法解析t316
- 5.6.7 算法优化拓展t316
- 5.7 奇妙之旅1—旅行商问题t319
- 5.7.1 问题分析t319
- 5.7.2 算法设计t320
- 5.7.3 完美图解t321
- 5.7.4 伪代码详解t330
- 5.7.5 实战演练t331
- 5.7.6 算法解析及优化拓展t333
- 5.8 回溯法算法秘籍t336
- 第6章 分支限界法t338
- 6.1 横行天下—广度优先t339
- 6.1.1 算法思想t340
- 6.1.2 算法步骤t340
- 6.1.3 解题秘籍t341
- 6.2 大卖场购物车3—0-1背包问题t341
- 6.2.1 问题分析t342
- 6.2.2 算法设计t343
- 6.2.3 完美图解t345
- 6.2.4 伪代码详解t350
- 6.2.5 实战演练t352
- 6.2.6 算法解析t355
- 6.2.7 算法优化拓展—优先队列式分支限界法t356
- 6.3 奇妙之旅2—旅行商问题t366
- 6.3.1 问题分析t366
- 6.3.2 算法设计t367
- 6.3.3 完美图解t368
- 6.3.4 伪代码详解t371
- 6.3.5 实战演练t373
- 6.3.6 算法解析t376
- 6.3.7 算法优化拓展t377
- 6.4 铺设电缆—最优工程布线t385
- 6.4.1 问题分析t386
- 6.4.2 算法设计t386
- 6.4.3 完美图解t387
- 6.4.4 伪代码详解t399
- 6.4.5 实战演练t400
- 6.4.6 算法解析及优化拓展t403
- 6.5 回溯法与分支限界法的异同t404
- 第7章 线性规划网络流t405
- 7.1 线性规划问题t406
- 7.1.1 线性规划标准型t408
- 7.1.2 单纯形算法图解t409
- 7.1.3 解题秘籍t413
- 7.1.4 练习t413
- 7.2 工厂最大效益—单纯形算法t414
- 7.2.1 问题分析t414
- 7.2.2 完美图解t415
- 7.2.3 伪代码详解t418
- 7.2.4 实战演练t420
- 7.2.5 算法解析及优化拓展t423
- 7.3 最大网络流—最短增广路算法t424
- 7.3.1 问题分析t424
- 7.3.2 增广路算法t427
- 7.3.3 完美图解t431
- 7.3.4 伪代码详解t437
- 7.3.5 实战演练t439
- 7.3.6 算法解析t441
- 7.3.7 算法优化拓展—重贴标签算法ISAPt442
- 7.4 最小费用最大流—最小费用路算法t455
- 7.4.1 问题分析t456
- 7.4.2 算法设计t456
- 7.4.3 完美图解t457
- 7.4.4 伪代码详解t459
- 7.4.5 实战演练t461
- 7.4.6 算法解析t465
- 7.4.7 算法优化拓展—消圈算法t466
- 7.5 精明的老板—配对方案问题t468
- 7.5.1 问题分析t468
- 7.5.2 算法设计t469
- 7.5.3 完美图解t469
- 7.5.4 伪代码详解t470
- 7.5.5 实战演练t471
- 7.5.6 算法解析t475
- 7.5.7 算法优化拓展—匈牙利算法t475
- 7.6 国际会议交流—圆桌问题t480
- 7.6.1 问题分析t481
- 7.6.2 算法设计t482
- 7.6.3 完美图解t482
- 7.6.4 伪代码详解t484
- 7.6.5 实战演练t485
- 7.6.6 算法解析及优化拓展t489
- 7.7 要考试啦—试题库问题t489
- 7.7.1 问题分析t490
- 7.7.2 算法设计t490
- 7.7.3 完美图解t491
- 7.7.4 伪代码详解t493
- 7.7.5 实战演练t494
- 7.7.6 算法解析及优化拓展t498
- 7.8 太空实验计划—最大收益问题t499
- 7.8.1 问题分析t499
- 7.8.2 算法设计t500
- 7.8.3 完美图解t502
- 7.8.4 伪代码详解t505
- 7.8.5 实战演练t506
- 7.8.6 算法解析及优化拓展t510
- 7.9 央视娱乐节目购物街—方格取数问题t511
- 7.9.1 问题分析t511
- 7.9.2 算法设计t512
- 7.9.3 完美图解t513
- 7.9.4 伪代码详解t514
- 7.9.5 实战演练t516
- 7.9.6 算法解析及优化拓展t520
- 7.10 走着走着,就走到了西藏—旅游路线问题t521
- 7.10.1 问题分析t521
- 7.10.2 算法设计t523
- 7.10.3 完美图解t523
- 7.10.4 伪代码详解t525
- 7.10.5 实战演练t528
- 7.10.6 算法解析及优化拓展t532
- 7.11 网络流问题解题秘籍t533
- 附录A 特征方程和通项公式t534
- 附录B sort函数t537
- 附录C 优先队列t541
- 附录D 邻接表t549
- 附录E 并查集t555
- 附录F 四边不等式t561
- 附录G 排列树t565
- 附录H 贝尔曼规则t579
- 附录I 增广路中称为关键边的次数t582
- 附录J 最大流最小割定理t585