算法设计与分析
作者: 王秋芬
出版社:清华大学出版社 2021-03-01
简介:本书主讲贪心算法、分治算法、动态规划算法、回溯算法、网络流、随机化算法、近似算法,侧重用具体实例图解演示算法运行过程及python语言实现。本书特色:深入浅出地从问题分析,到数据结构选择、算法设计、Python实战,提供问题解决的全程式指导;提供实例构造、详细图解,带领学习者直观、形象地逐步运行算法,看到算法单步运行结果;提供算法的Python语言实现,让算法在学习者心里落地生根。本书适用于计算机、大数据等相关专业本科教材,以及从事计算机领域的教学、科研人员,ACM程序设计大赛的算法爱好者。【目录】第1章算法概述1.1什么是算法1.2为什么学习算法1.3算法的描述方式1.4算法设计的一般过程1.5算法分析1.5.1算法分析的概念1.5.2时间复杂度和空间复杂度1.5.3渐近复杂性态1.5.4渐近意义下的记号1.5.5算法的运行时间T(n)建立的依据1.5.6算法所占用的空间S(n)建立的依据1.6递推方程求解方法1.6.1迭代法1.6.2递归树1.6.3差消法1.6.4主方法第2章贪心算法——贪心不足2.1概述2.1.1贪心算法的本质2.1.2贪心算法的基本要素2.2活动安排问题2.2.1问题分析——贪心策略2.2.2算法设计2.2.3实例构造2.2.4算法分析2.2.5Python实战2.3单源*短路径问题2.3.1问题分析——贪心策略2.3.2算法设计2.3.3实例构造2.3.4算法分析2.3.5Python实战2.4哈夫曼编码2.4.1问题分析——贪心策略2.4.2算法设计2.4.3实例构造2.4.4算法分析2.4.5Python实战2.5*小生成树——Prim算法2.5.1问题分析——贪心策略2.5.2算法设计2.5.3实例构造2.5.4算法分析2.5.5Python实战2.6*小生成树——Kruskal算法2.6.1问题分析——贪心策略2.6.2算法设计2.6.3实例构造2.6.4算法分析2.6.5Python实战2.7背包问题2.7.1问题分析——贪心策略2.7.2算法设计2.7.3实例构造2.7.4算法分析2.7.5Python实战第3章分治算法——分而治之3.1概述3.1.1分治算法的本质3.1.2分治算法的求解步骤3.2二分查找3.2.1问题分析——分与治的方法3.2.2算法设计3.2.3实例构造3.2.4算法分析3.2.5Python实战3.3选第二大元素3.3.1问题分析——分与治的方法3.3.2算法设计3.3.3实例构造3.3.4算法分析3.3.5Python实战3.4循环赛日程表3.4.1问题分析——分与治的方法3.4.2算法设计3.4.3实例构造3.4.4算法分析3.4.5Python实战3.5合并排序3.5.1问题分析——分与治的方法3.5.2算法设计3.5.3实例构造3.5.4算法分析3.5.5Python实战3.6快速排序3.6.1问题分析——分与治的方法3.6.2算法设计3.6.3实例构造3.6.4算法分析3.6.5Python实战3.7线性时间选择——找第k小问题3.7.1问题分析——分与治的方法3.7.2算法设计3.7.3实例构造3.7.4算法分析3.7.5Python实战第4章动态规划4.1概述4.1.1动态规划的基本思想4.1.2动态规划的求解步骤4.1.3动态规划的基本要素4.2矩阵连乘问题4.2.1问题分析——递归关系4.2.2算法设计4.2.3实例构造4.2.4算法分析4.2.5Python实战4.3凸多边形*三角剖分4.3.1问题分析——递归关系4.3.2算法设计4.3.3实例构造4.3.4算法分析4.3.5Python实战4.4*长公共子序列问题4.4.1问题分析——递归关系4.4.2算法设计4.4.3实例构造4.4.4算法分析4.4.5Python实战4.5加工顺序问题4.5.1问题分析——递归关系4.5.2算法设计4.5.3实例构造4.5.4算法分析4.5.5Python实战4.601背包问题4.6.1问题分析——递归关系4.6.2算法设计4.6.3实例构造4.6.4算法分析4.6.5算法的改进4.6.6Python实战4.7*二叉查找树4.7.1问题分析——递归关系4.7.2算法设计4.7.3实例构造4.7.4算法分析4.7.5Python实战第5章回溯法——深度优先搜索5.1概述5.2典型的解空间结构5.2.1子集树5.2.2排列树5.2.3满m叉树5.301背包问题——子集树5.3.1问题分析——解空间及搜索条件5.3.2算法设计5.3.3实例构造5.3.4算法的改进5.3.5算法分析5.3.6Python实战5.4*团问题——子集树5.4.1问题分析——解空间及搜索条件5.4.2算法设计5.4.3实例构造5.4.4算法分析5.4.5Python实战5.5批处理作业调度问题——排列树5.5.1问题分析——解空间及搜索条件5.5.2算法设计5.5.3实例构造5.5.4算法分析5.5.5Python实战5.6旅行商问题——排列树5.6.1问题分析——解空间及搜索条件5.6.2算法设计5.6.3实例构造5.6.4算法分析5.6.5Python实战5.7图的m着色问题——满m叉树5.7.1问题分析——解空间及搜索条件5.7.2算法设计5.7.3实例构造5.7.4算法分析5.7.5Python实战5.8*小质量机器设计问题——满m叉树5.8.1问题分析——解空间及搜索条件5.8.2算法设计5.8.3实例构造5.8.4算法分析5.8.5Python实战第6章分支限界法——宽度优先或*小耗费(*效益)优先搜索6.1分支限界法的基本思想6.201背包问题6.3旅行商问题6.4布线问题6.4.1问题分析——解空间及搜索条件6.4.2算法设计6.4.3实例构造6.4.4算法分析6.4.5Python实战6.5分支限界法与回溯法的比较第7章线性规划问题与网络流7.1线性规划问题7.1.1一般线性规划问题的描述7.1.2标准型线性规划问题的描述7.1.3标准型线性规划问题的单纯形算法7.2*网络流7.2.1基本概念7.2.2增广路算法7.2.3*网络流的变换与应用7.3*小费用*流7.3.1基本概念7.3.2消圈算法7.3.3*小费用*流的变换与应用第8章随机化算法8.1概述8.1.1随机化算法的类型及特点8.1.2随机数发生器8.2数值随机化算法8.2.1计算π的值8.2.2计算定积分8.3蒙特卡罗算法8.3.1主元素问题8.3.2素数测试8.4拉斯维加斯算法8.4.1整数因子分解8.4.2n皇后问题8.5舍伍德算法8.5.1随机快速排序8.5.2线性时间选择第9章NP完全理论9.1易解问题和难解问题9.2P类和NP类问题9.2.1P类问题9.2.2NP类问题9.2.3P类问题和NP类问题的关系9.3NP完全问题9.3.1多项式变换技术9.3.2典型的NP完全问题9.4NP完全问题的近似算法9.4.1顶点覆盖问题9.4.2装箱问题9.4.3旅行商问题TSP9.4.4集合覆盖问题参考文献