算法基础——打开程序设计之门

算法基础——打开程序设计之门
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2019-03
版次: 1
ISBN: 9787121358685
定价: 69.00
装帧: 其他
开本: 16开
纸张: 胶版纸
页数: 280页
字数: 392千字
6人买过
  • 算法是一系列解决问题的清晰指令,是程序设计的灵魂。同一问题可采用不同的算法解决,而一个算法的优劣将直接影响程序的执行效率。本书以ACM程序设计竞赛的题目为基础,详细介绍一些常用的算法以及相关的理论知识,主要内容包括高级数据结构、字符串、动态规划进阶算法、图论高级算法、经典算法问题、组合数学、计算几何、组合游戏论。 梁冰,女,博士,计算机应用技术专业,毕业于哈尔滨工程大学,现工作于大连理工大学,大连理工大学创新创业学院ACM/ICPC实验室主任,长期负责算法的教学创新和学院学生参加ACM大赛的指导工作。 目  录

    第1章 高级数据结构(1)

    1.1 堆(1)

    1.1.1 堆的定义(1)

    1.1.2 建堆(1)

    1.1.3 堆排序算法(2)

    1.2 树状数组(3)

    1.2.1 树状数组的定义(4)

    1.2.2 树状数组的实现和使用(4)

    1.2.3 例题讲解(5)

    1.3 左倾堆(7)

    1.3.1 左倾堆相关定义和性质(7)

    1.3.2 左倾堆的操作(7)

    1.3.3 例题讲解(8)

    1.4 平衡二叉树(10)

    1.4.1 Treap(11)

    1.4.2 Splay树(13)

    1.4.3 例题讲解(18)

    1.5 练习题(22)

    第2章 字符串(24)

    2.1 Trie树(24)

    2.1.1 Trie树的原理(24)

    2.1.2 Trie树的实现(25)

    2.1.3 例题讲解(26)

    2.2 KMP算法(29)

    2.2.1 KMP算法的原理(29)

    2.2.2 KMP算法的实现(31)

    2.2.3 例题讲解(32)

    2.3 Aho-Corasick自动机(35)

    2.3.1 Aho-Corasick自动机原理(35)

    2.3.2 Aho-Corasick自动机算法的实现(37)

    2.3.3 例题讲解(39)

    2.4 后缀数组(43)

    2.4.1 后缀数组基本原理(43)

    2.4.2 后缀数组的应用(46)

    2.4.3 例题讲解(49)

    2.5 练习题(54)

    第3章 动态规划进阶算法(57)

    3.1 树状DP(57)

    3.1.1 树状DP的定义(57)

    3.1.2 树状DP解题方法(58)

    3.1.3 例题讲解(58)

    3.2 状态压缩DP(62)

    3.2.1 集合的整数表示(62)

    3.2.2 例题讲解(63)

    3.3 动态规划的优化方法(66)

    3.3.1 单调队列优化的动态规划(66)

    3.3.2 例题讲解(66)

    3.3.3 斜率优化的动态规划(68)

    3.3.4 例题讲解(68)

    3.3.5 四边形不等式优化的动态规划(71)

    3.3.6 例题讲解(71)

    3.4 练习题(73)

    第4章 图论高级算法(76)

    4.1 最大流(76)

    4.1.1 最大流的定义(76)

    4.1.2 增广路算法涉及的三个重要概念(77)

    4.1.3 Edmonds-Karp算法(79)

    4.1.4 Dinic算法(82)

    4.1.5 ISAP算法(84)

    4.1.6 网络流的建图(89)

    4.1.7 例题讲解(91)

    4.2 最小费用流(99)

    4.2.1 最小费用流算法(99)

    4.2.2 例题讲解(100)

    4.3 二分图匹配(109)

    4.3.1 二分图的定义(109)

    4.3.2 二分图的最大匹配(109)

    4.3.3 二分图的性质与应用(114)

    4.3.4 例题讲解(115)

    4.4 练习题(118)

    第5章 经典算法问题(121)

    5.1 多项式与快速傅里叶变换(121)

    5.1.1 多项式(121)

    5.1.2 多项式的表示与多项式乘法(121)

    5.1.3 DFT和FFT的实现(123)

    5.1.4 例题讲解(124)

    5.2 NP完全性(127)

    5.2.1 NP问题简介(127)

    5.2.2 哈密顿回路(127)

    5.2.3 例题讲解(128)

    5.3 对偶图问题(135)

    5.3.1 基本概念(135)

    5.3.2 平面图转化为对偶图(137)

    5.3.3 对偶图的应用(140)

    5.4 RMQ问题(144)

    5.4.1 RMQ问题的简单求解方法(145)

    5.4.2 ST(Sparse Table)算法(145)

    5.4.3 例题讲解(146)

    5.5 LCA问题(151)

    5.5.1 LCA问题的简单求解方法(151)

    5.5.2 基于倍增的双亲存储法(152)

    5.5.3 高效的LCA算法(152)

    5.5.4 例题讲解(154)

    5.6 练习题(158)

    第6章 组合数学(161)

    6.1 排列组合(161)

    6.1.1 基本计数原则(161)

    6.1.2 排列(161)

    6.1.3 组合(162)

    6.1.4 例题讲解(163)

    6.2 母函数(164)

    6.2.1 母函数基础(165)

    6.2.2 母函数的两类具体应用(165)

    6.2.3 例题讲解(166)

    6.3 整数划分(169)

    6.3.1 从动态规划到母函数(169)

    6.3.2 例题讲解(170)

    6.4 Stirling数和Catalan数(172)

    6.4.1 第一类Stirling数(172)

    6.4.2 第二类Stirling数(173)

    6.4.3 Catalan数(173)

    6.4.4 例题讲解(174)

    6.5 容斥原理与反演(179)

    6.5.1 容斥原理(179)

    6.5.2 反演理论(180)

    6.5.3 Mobius反演(181)

    6.5.4 例题讲解(184)

    6.6 群论与Polya定理(187)

    6.6.1 群的基本性质(187)

    6.6.2 置换群(188)

    6.6.3 Burnside定理及Polya定理(189)

    6.6.4 例题讲解(190)

    6.7 练习题(192)

    第7章 计算几何(195)

    7.1 多边形上的数据结构表示(195)

    7.1.1 点(195)

    7.1.2 线段(197)

    7.1.3 多边形类(198)

    7.1.4 例题讲解(199)

    7.2 多边形相交问题(202)

    7.2.1 线段相交(202)

    7.2.2 多边形相交问题的讨论(203)

    7.2.3 例题讲解(204)

    7.3 多边形求面积(207)

    7.3.1 计算多边形的面积(207)

    7.3.2 格点数(208)

    7.3.3 例题讲解(209)

    7.4 凸包(210)

    7.4.1 凸多边形(210)

    7.4.2 凸多边形的性质(215)

    7.4.3 构造凸包(215)

    7.4.4 例题讲解(219)

    7.5 相交问题(230)

    7.5.1 半平面交(230)

    7.5.2 凸多边形交(232)

    7.5.3 例题讲解(232)

    7.6 圆(240)

    7.6.1 圆与线段的交(240)

    7.6.2 圆与多边形的交的面积(241)

    7.6.3 圆与圆的交的面积(241)

    7.6.4 圆与圆的并的面积(245)

    7.7 练习题(249)

    第8章 组合游戏论(252)

    8.1 组合游戏论中的游戏(252)

    8.1.1 组合游戏论的定义(252)

    8.1.2 博弈树模型(253)

    8.1.3 巴什博弈(253)

    8.1.4 威佐夫博弈(254)

    8.1.5 例题讲解(255)

    8.2 NIM游戏和SG函数(256)

    8.2.1 NIM游戏的定义(256)

    8.2.2 NIM游戏中的性质(256)

    8.2.3 Sprague-Grundy函数的价值(257)

    8.2.4 SG函数的应用(258)

    8.2.5 例题讲解(259)

    8.3 NIM游戏的变形(262)

    8.3.1 ANTI-NIM问题(262)

    8.3.2 Staircase NIM(264)

    8.3.3 例题讲解(265)

    8.4 练习题(267)

    参考文献(269)
  • 内容简介:
    算法是一系列解决问题的清晰指令,是程序设计的灵魂。同一问题可采用不同的算法解决,而一个算法的优劣将直接影响程序的执行效率。本书以ACM程序设计竞赛的题目为基础,详细介绍一些常用的算法以及相关的理论知识,主要内容包括高级数据结构、字符串、动态规划进阶算法、图论高级算法、经典算法问题、组合数学、计算几何、组合游戏论。
  • 作者简介:
    梁冰,女,博士,计算机应用技术专业,毕业于哈尔滨工程大学,现工作于大连理工大学,大连理工大学创新创业学院ACM/ICPC实验室主任,长期负责算法的教学创新和学院学生参加ACM大赛的指导工作。
  • 目录:
    目  录

    第1章 高级数据结构(1)

    1.1 堆(1)

    1.1.1 堆的定义(1)

    1.1.2 建堆(1)

    1.1.3 堆排序算法(2)

    1.2 树状数组(3)

    1.2.1 树状数组的定义(4)

    1.2.2 树状数组的实现和使用(4)

    1.2.3 例题讲解(5)

    1.3 左倾堆(7)

    1.3.1 左倾堆相关定义和性质(7)

    1.3.2 左倾堆的操作(7)

    1.3.3 例题讲解(8)

    1.4 平衡二叉树(10)

    1.4.1 Treap(11)

    1.4.2 Splay树(13)

    1.4.3 例题讲解(18)

    1.5 练习题(22)

    第2章 字符串(24)

    2.1 Trie树(24)

    2.1.1 Trie树的原理(24)

    2.1.2 Trie树的实现(25)

    2.1.3 例题讲解(26)

    2.2 KMP算法(29)

    2.2.1 KMP算法的原理(29)

    2.2.2 KMP算法的实现(31)

    2.2.3 例题讲解(32)

    2.3 Aho-Corasick自动机(35)

    2.3.1 Aho-Corasick自动机原理(35)

    2.3.2 Aho-Corasick自动机算法的实现(37)

    2.3.3 例题讲解(39)

    2.4 后缀数组(43)

    2.4.1 后缀数组基本原理(43)

    2.4.2 后缀数组的应用(46)

    2.4.3 例题讲解(49)

    2.5 练习题(54)

    第3章 动态规划进阶算法(57)

    3.1 树状DP(57)

    3.1.1 树状DP的定义(57)

    3.1.2 树状DP解题方法(58)

    3.1.3 例题讲解(58)

    3.2 状态压缩DP(62)

    3.2.1 集合的整数表示(62)

    3.2.2 例题讲解(63)

    3.3 动态规划的优化方法(66)

    3.3.1 单调队列优化的动态规划(66)

    3.3.2 例题讲解(66)

    3.3.3 斜率优化的动态规划(68)

    3.3.4 例题讲解(68)

    3.3.5 四边形不等式优化的动态规划(71)

    3.3.6 例题讲解(71)

    3.4 练习题(73)

    第4章 图论高级算法(76)

    4.1 最大流(76)

    4.1.1 最大流的定义(76)

    4.1.2 增广路算法涉及的三个重要概念(77)

    4.1.3 Edmonds-Karp算法(79)

    4.1.4 Dinic算法(82)

    4.1.5 ISAP算法(84)

    4.1.6 网络流的建图(89)

    4.1.7 例题讲解(91)

    4.2 最小费用流(99)

    4.2.1 最小费用流算法(99)

    4.2.2 例题讲解(100)

    4.3 二分图匹配(109)

    4.3.1 二分图的定义(109)

    4.3.2 二分图的最大匹配(109)

    4.3.3 二分图的性质与应用(114)

    4.3.4 例题讲解(115)

    4.4 练习题(118)

    第5章 经典算法问题(121)

    5.1 多项式与快速傅里叶变换(121)

    5.1.1 多项式(121)

    5.1.2 多项式的表示与多项式乘法(121)

    5.1.3 DFT和FFT的实现(123)

    5.1.4 例题讲解(124)

    5.2 NP完全性(127)

    5.2.1 NP问题简介(127)

    5.2.2 哈密顿回路(127)

    5.2.3 例题讲解(128)

    5.3 对偶图问题(135)

    5.3.1 基本概念(135)

    5.3.2 平面图转化为对偶图(137)

    5.3.3 对偶图的应用(140)

    5.4 RMQ问题(144)

    5.4.1 RMQ问题的简单求解方法(145)

    5.4.2 ST(Sparse Table)算法(145)

    5.4.3 例题讲解(146)

    5.5 LCA问题(151)

    5.5.1 LCA问题的简单求解方法(151)

    5.5.2 基于倍增的双亲存储法(152)

    5.5.3 高效的LCA算法(152)

    5.5.4 例题讲解(154)

    5.6 练习题(158)

    第6章 组合数学(161)

    6.1 排列组合(161)

    6.1.1 基本计数原则(161)

    6.1.2 排列(161)

    6.1.3 组合(162)

    6.1.4 例题讲解(163)

    6.2 母函数(164)

    6.2.1 母函数基础(165)

    6.2.2 母函数的两类具体应用(165)

    6.2.3 例题讲解(166)

    6.3 整数划分(169)

    6.3.1 从动态规划到母函数(169)

    6.3.2 例题讲解(170)

    6.4 Stirling数和Catalan数(172)

    6.4.1 第一类Stirling数(172)

    6.4.2 第二类Stirling数(173)

    6.4.3 Catalan数(173)

    6.4.4 例题讲解(174)

    6.5 容斥原理与反演(179)

    6.5.1 容斥原理(179)

    6.5.2 反演理论(180)

    6.5.3 Mobius反演(181)

    6.5.4 例题讲解(184)

    6.6 群论与Polya定理(187)

    6.6.1 群的基本性质(187)

    6.6.2 置换群(188)

    6.6.3 Burnside定理及Polya定理(189)

    6.6.4 例题讲解(190)

    6.7 练习题(192)

    第7章 计算几何(195)

    7.1 多边形上的数据结构表示(195)

    7.1.1 点(195)

    7.1.2 线段(197)

    7.1.3 多边形类(198)

    7.1.4 例题讲解(199)

    7.2 多边形相交问题(202)

    7.2.1 线段相交(202)

    7.2.2 多边形相交问题的讨论(203)

    7.2.3 例题讲解(204)

    7.3 多边形求面积(207)

    7.3.1 计算多边形的面积(207)

    7.3.2 格点数(208)

    7.3.3 例题讲解(209)

    7.4 凸包(210)

    7.4.1 凸多边形(210)

    7.4.2 凸多边形的性质(215)

    7.4.3 构造凸包(215)

    7.4.4 例题讲解(219)

    7.5 相交问题(230)

    7.5.1 半平面交(230)

    7.5.2 凸多边形交(232)

    7.5.3 例题讲解(232)

    7.6 圆(240)

    7.6.1 圆与线段的交(240)

    7.6.2 圆与多边形的交的面积(241)

    7.6.3 圆与圆的交的面积(241)

    7.6.4 圆与圆的并的面积(245)

    7.7 练习题(249)

    第8章 组合游戏论(252)

    8.1 组合游戏论中的游戏(252)

    8.1.1 组合游戏论的定义(252)

    8.1.2 博弈树模型(253)

    8.1.3 巴什博弈(253)

    8.1.4 威佐夫博弈(254)

    8.1.5 例题讲解(255)

    8.2 NIM游戏和SG函数(256)

    8.2.1 NIM游戏的定义(256)

    8.2.2 NIM游戏中的性质(256)

    8.2.3 Sprague-Grundy函数的价值(257)

    8.2.4 SG函数的应用(258)

    8.2.5 例题讲解(259)

    8.3 NIM游戏的变形(262)

    8.3.1 ANTI-NIM问题(262)

    8.3.2 Staircase NIM(264)

    8.3.3 例题讲解(265)

    8.4 练习题(267)

    参考文献(269)
查看详情
相关图书 / 更多
算法基础——打开程序设计之门
算法构建论文层次学科分类体系的应用研究
耿海英
算法基础——打开程序设计之门
算法分析与设计实践
王小明
算法基础——打开程序设计之门
算法详解(卷4)——NP-Hard问题算法
[美]蒂姆·拉夫加登(Tim Roughgarden)
算法基础——打开程序设计之门
算法设计方法与优化(第2版)
滕国文;滕泰
算法基础——打开程序设计之门
算法详解 卷3 贪心算法和动态规划
[美]蒂姆·拉夫加登(Tim Roughgarden)
算法基础——打开程序设计之门
算法与数据结构(C++语言版)(第2版)
冯广慧
算法基础——打开程序设计之门
算法分析与设计
李少芳;卓明秀
算法基础——打开程序设计之门
算法设计与分析基础(Java版)(微课视频版)
李春葆;刘娟;喻丹丹
算法基础——打开程序设计之门
算法设计与分析基础(C++版)(微课视频版)
李春葆;陈良臣;喻丹丹
算法基础——打开程序设计之门
算法社会:技术、权力和知识(法律与科技译丛)
马克·舒伦伯格(Marc Schuilenburg)
算法基础——打开程序设计之门
算法设计实例教程
雷小宇
算法基础——打开程序设计之门
算法设计与分析基础(Java版)学习与上机实验指导
李春葆;刘娟;喻丹丹