互联网
类型
可以朗读
语音朗读
198千字
字数
2022-01-01
发行日期
展开全部
主编推荐语
本书的目的是帮助初学者掌握编程中的基础算法,并通过Python语言进行实战演练,通过即学即练的方式掌握这些经典算法,让读者真正体会算法的美妙,成为读者学习算法的领路人。
内容简介
本书分为8章,涵盖的主要内容有算法之美,通过生活中的例子学习算法;贪心算法,选择当前最优的方案;分而治之算法,将复杂的问题拆分为简单的问题;树算法,围绕树结构的各种算法;图算法,围绕图结构的各种算法;动态规划,一种求解最优问题的强大工具;回溯法,深度优先遍历问题的解空间;分支限界法,广度优先遍历问题的解空间。
目录
- 版权信息
- 内容简介
- 前言
- 第1章 算法之美
- 1.1 生活中的算法——猜数游戏
- 1.1.1 好玩的猜数游戏
- 1.1.2 游戏的秘密——二分搜索技术
- 1.1.3 猜数游戏算法实现
- 1.2 算法的指标——空间复杂度和时间复杂度
- 1.2.1 时间复杂度
- 1.2.2 空间复杂度
- 1.3 经典算法回顾——排序算法
- 1.3.1 冒泡排序
- 1.3.2 简单选择排序
- 1.3.3 直接插入排序
- 1.4 怎样才能学好算法
- 第2章 贪心算法
- 2.1 短浅的眼光——贪心
- 2.1.1 适当的贪心——坏事变好事
- 2.1.2 过度贪心——赔了夫人又折兵
- 2.1.3 为贪心加上限制
- 2.2 美丽心灵——哈夫曼编码
- 2.2.1 认识哈夫曼编码
- 2.2.2 如何设计哈夫曼编码
- 2.2.3 哈夫曼编码算法实现
- 2.3 带你去旅行——单源最短路径
- 2.3.1 如何最快到朋友家做客
- 2.3.2 从最短的第一条路开始分析
- 2.3.3 找到抵达朋友家的最短路径
- 2.3.4 Dijkstra算法实现
- 2.4 选择困难症——背包问题
- 2.4.1 如何装沙子赚更多的钱
- 2.4.2 海盗的智慧
- 2.4.3 背包问题算法实现
- 2.5 搬家师傅的烦恼——集装箱装载问题
- 2.5.1 如何装更多的物品
- 2.5.2 搬家师傅的十年经验
- 2.5.3 装载问题算法实现
- 第3章 分而治之算法
- 3.1 纵横捭阖,各个击破——分而治之
- 3.1.1 分而治之——把复杂的事情简单化
- 3.1.2 可分可治,缺一不可
- 3.1.3 合久必分,分久必合——治而合之
- 3.2 真币和假币——伪币问题
- 3.2.1 可恶的假币
- 3.2.2 先对一半的硬币进行考虑
- 3.2.3 找出硬币的规律
- 3.3 再谈排序算法(1)——合并排序
- 3.3.1 如何将分而治之思想应用到合并排序上
- 3.3.2 先对一半的数字进行考虑
- 3.3.3 合并排序算法实现
- 3.4 再谈排序算法(2)——快速排序
- 3.4.1 如何将分而治之思想应用到快速排序上
- 3.4.2 找到一个“分”的中心
- 3.4.3 快速排序算法实现
- 3.4.4 排序算法总结
- 3.5 累人的比赛——循环赛日程安排
- 3.5.1 最公平的比赛
- 3.5.2 如何设计循环赛
- 3.5.3 找出循环赛的排列规律
- 第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.5 二叉树的平层遍历
- 4.3 重建家谱图——二叉树的还原
- 4.3.1 什么是二叉树的还原
- 4.3.2 前序遍历和中序遍历还原家谱图
- 4.3.3 中序遍历和后序遍历还原家谱图
- 4.4 十年树木,百年树人——二叉树的高度
- 4.4.1 什么是树的高度
- 4.4.2 在树的遍历基础上增加高度信息
- 4.4.3 遍历树获得高度信息
- 4.5 寻根溯源——找到所有祖先结点
- 4.5.1 什么是树的祖先
- 4.5.2 在树的遍历基础上增加结点找到信息
- 4.5.3 遍历树获得所有祖先
- 第5章 图算法
- 5.1 生活中的“图”
- 5.1.1 城市的交通轨道
- 5.1.2 人与人之间的关系
- 5.1.3 互联网的连接
- 5.2 寻找所有的城市——有向图的遍历
- 5.2.1 什么是有向图
- 5.2.2 有向图的深度优先遍历
- 5.2.3 有向图的广度优先遍历
- 5.3 最短的管道——Kruskal算法
- 5.3.1 如何铺设最短的管道
- 5.3.2 什么是最小生成树
- 5.3.3 Kruskal算法的贪心思想
- 5.3.4 Kruskal算法实现
- 5.4 再谈最短的管道——Prim算法
- 5.4.1 基于管道的边和结点贪心的区别
- 5.4.2 Prim算法的贪心思想
- 5.4.3 Prim算法实现
- 5.5 多源最短路径——Floyd算法
- 5.5.1 朋友之间相互访问的最短路径
- 5.5.2 自上而下分析朋友之间的最短路径
- 5.5.3 自下而上迭代朋友之间的最短路径
- 5.5.4 Floyd算法实现
- 第6章 动态规划算法
- 6.1 长远的眼光——动态规划
- 6.1.1 时间倒流,改变历史
- 6.1.2 慎用贪心算法
- 6.1.3 强者恒强,弱者恒弱——最优子结构
- 6.2 智能的语言翻译——编辑距离
- 6.2.1 设计语言翻译系统
- 6.2.2 考虑最后一次编辑情况
- 6.2.3 自下而上进行距离编辑
- 6.3 智能的电梯——电梯优化
- 6.3.1 设计智能电梯
- 6.3.2 先考虑最后一次电梯停留的情况
- 6.3.3 自下而上计算电梯的停留过程
- 6.4 名字的相似度——最长公共子序列
- 6.4.1 外国人名的相似度
- 6.4.2 考虑最后一个字符比较情况
- 6.4.3 自下而上进行距离编辑
- 第7章 回溯法
- 7.1 现代计算机的福音——回溯法
- 7.1.1 让猴子打出《莎士比亚全集》
- 7.1.2 一条路走到黑——深度遍历
- 7.1.3 乱花渐欲迷人眼——搜索中的剪枝
- 7.2 不能攻击的皇后——8个皇后问题
- 7.2.1 一山不容二虎
- 7.2.2 如何设计8个皇后的解向量
- 7.2.3 搜索过程中的剪枝
- 7.3 绝望的小老鼠——迷宫中的小老鼠
- 7.3.1 上帝视角帮助小老鼠
- 7.3.2 小老鼠如何进行搜索
- 7.3.3 小老鼠的出逃之路
- 7.4 再谈0/1背包问题
- 7.4.1 背包问题回顾
- 7.4.2 还可以使用贪心算法求解吗
- 7.4.3 通过搜索求解背包问题
- 7.5 再谈集装箱装载问题
- 7.5.1 集装箱装载问题回顾
- 7.5.2 使用贪心算法求解而存在的问题
- 7.5.3 通过搜索求解装载问题
- 第8章 分支限界法
- 8.1 一步一个脚印——分支限界
- 8.1.1 步步为营——广度遍历
- 8.1.2 剪掉没有营养的分支
- 8.1.3 条条大路通罗马——和回溯法的区别
- 8.2 再谈迷宫中的小老鼠问题
- 8.2.1 迷宫中的小老鼠问题回顾
- 8.2.2 使用分支限界思路规划小老鼠的路径
- 8.2.3 小老鼠的出逃之路
- 8.3 三谈0/1背包问题
- 8.3.1 0/1背包问题回顾
- 8.3.2 使用分支限界的思路装船
- 8.3.3 背包的搜索过程
- 8.4 三谈集装箱装载问题
- 8.4.1 集装箱装载问题回顾
- 8.4.2 使用分支限界的思路装载集装箱
- 8.4.3 集装箱的装载过程
展开全部
出版方
电子工业出版社
电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。