7.6
豆瓣评分
可以朗读
语音朗读
107千字
字数
2020-06-01
发行日期
展开全部
主编推荐语
本书为“算法详解”系列之一。详细讲解算法基础,展现算法本质。
内容简介
本书共有6章,主要介绍了3个主题,分别是图的搜索和应用、最短路径以及数据结构。附录简单回顾了渐进性表示法。本书的每一章均有小测验、章末习题,这为读者的自我检查以及进一步学习提供了方便。
本书提供了丰富而实用的资料,能够帮助读者提升算法思维能力。本书适合计算机专业的高校教师和学生,想要培养和训练算法思维和计算思维的IT专业人士,以及正在准备面试的应聘者和面试官阅读参考。
目录
- 版权信息
- 版权声明
- 内容提要
- 前 言
- 资源与支持
- 第1章 图的基础知识
- 1.1 基本术语
- 1.2 图的一些应用
- 1.3 图形的度量
- 1.3.1 图的边数量
- 1.3.2 稀疏图和稠密图
- 1.3.3 小测验1.1的答案
- 1.4 图的表示方法
- 1.4.1 邻接列表
- 1.4.2 邻接矩阵
- 1.4.3 图的表示形式之间的比较
- 1.4.4 小测验1.2和小测验1.3的答案
- 1.5 本章要点
- 1.6 章末习题
- 第2章 图的搜索及其应用
- 2.1 概述
- 2.1.1 一些应用
- 2.1.2 零代价的基本算法
- 2.1.3 通用的图搜索算法
- 2.1.4 宽度优先的搜索和深度优先的搜索
- 2.1.5 GenericSearch算法的正确性
- 2.2 宽度优先的搜索和最短路径
- 2.2.1 高层思路
- 2.2.2 BFS的伪码
- 2.2.3 BFS的一个例子
- 2.2.4 正确性和运行时间
- 2.2.5 最短路径
- 2.2.6 小测验2.1的答案
- 2.3 计算连通分量
- 2.3.1 连通分量
- 2.3.2 连通分量的应用
- 2.3.3 UCC(无向图连通分量)算法
- 2.3.4 UCC算法的一个例子
- 2.3.5 UCC算法的正确性和运行时间
- 2.3.6 小测验2.2的答案
- 2.4 深度优先的搜索
- 2.4.1 DFS的一个例子
- 2.4.2 DFS的伪码
- 2.4.3 正确性和运行时间
- 2.5 拓扑排序
- 2.5.1 拓扑顺序
- 2.5.2 什么时候存在拓扑顺序
- 2.5.3 计算拓扑顺序
- 2.5.4 通过DFS的拓扑排序
- 2.5.5 拓扑排序的一个例子
- 2.5.6 正确性和运行时间
- 2.5.7 小测验2.3和小测验2.4的答案
- *2.6 计算强连通分量
- 2.6.1 强连通分量的定义
- 2.6.2 为什么要使用深度优先的搜索
- 2.6.3 为什么要使用反转的图
- 2.6.4 Kosaraju的伪码
- 2.6.5 一个例子
- 2.6.6 正确性和运行时间
- 2.6.7 小测验2.5和小测验2.6的答案
- 2.7 Web的结构
- 2.7.1 Web图
- 2.7.2 蝴蝶结
- 2.7.3 主要发现
- 2.8 本章要点
- 2.9 章末习题
- 挑战题
- 编程题
- 第3章 Dijkstra最短路径算法
- 3.1 单源最短路径问题
- 3.1.1 问题定义
- 3.1.2 一些前提条件
- 3.1.3 为什么不使用宽度优先的搜索
- 3.1.4 小测验3.1的答案
- 3.2 Dijkstra算法
- 3.2.1 伪码
- 3.2.2 一个例子
- *3.3 为什么Dijkstra算法是正确的
- 3.3.1 一种虚假的简化
- 3.3.2 Dijkstra算法的一个糟糕例子
- 3.3.3 非负边长时的正确性
- 3.4 算法的实现及其运行时间
- 3.5 本章要点
- 3.6 章末习题
- 挑战题
- 编程题
- 第4章 堆数据结构
- 4.1 数据结构概述
- 4.1.1 选择正确的数据结构
- 4.1.2 进入更高层次
- 4.2 堆所支持的操作
- 4.2.1 Insert和ExtractMin
- 4.2.2 其他操作
- 4.3 堆的应用
- 4.3.1 应用:排序
- 4.3.2 应用:事件管理器
- 4.3.3 应用:中位值维护
- 4.4 Dijkstra算法的提速
- 4.4.1 为什么要使用堆
- 4.4.2 计划
- 4.4.3 维持不变性
- 4.4.4 运行时间
- *4.5 实现细节
- 4.5.1 树形式的堆
- 4.5.2 数组形式的堆
- 4.5.3 在O (log n)时间内实现Insert操作
- 4.5.4 在O (log n)时间内实现ExtractMin操作
- 4.6 本章要点
- 4.7 章末习题
- 挑战题
- 编程题
- 第5章 搜索树
- 5.1 有序数组
- 5.1.1 有序数组支持的操作
- 5.1.2 有序数组不支持的操作
- 5.2 搜索树支持的操作
- *5.3 实现细节
- 5.3.1 搜索树的属性
- 5.3.2 搜索树的高度
- 5.3.3 在O(高度)时间内实现Search
- 5.3.4 在O(高度)时间内实现Min和Max
- 5.3.5 在O(高度)时间内实现Predecessor
- 5.3.6 在O (n)时间内实现OutputSorted操作
- 5.3.7 在O(高度)时间内实现Insert操作
- 5.3.8 在O(高度)时间内实现Delete操作
- 5.3.9 强化的搜索树支持Select操作
- 5.3.10 小测验5.1的答案
- *5.4 平衡搜索树
- 5.4.1 努力实现更好的平衡
- 5.4.2 旋转
- 5.5 本章要点
- 5.6 章末习题
- 编程题
- 第6章 散列表和布隆过滤器
- 6.1 支持的操作
- 6.2 散列表的应用
- 6.2.1 应用:消除重复
- 6.2.2 应用:两数之和问题
- 6.2.3 应用:搜索巨大的状态空间
- 6.2.4 小测验6.2的答案
- *6.3 实现的高层思路
- 6.3.1 两个简单的解决方案
- 6.3.2 散列函数
- 6.3.3 冲突是不可避免的
- 6.3.4 解决冲突的方法:链地址法
- 6.3.5 解决冲突的方法:开放地址法
- 6.3.6 良好的散列函数是怎么样的
- 6.3.7 小测验6.3至小测验6.5的答案
- *6.4 更多的实现细节
- 6.4.1 负载和性能
- 6.4.2 管理散列表的负载
- 6.4.3 选择散列函数
- 6.4.4 选择冲突解决策略
- 6.4.5 小测验6.6的答案
- 6.5 布隆过滤器的基础知识
- 6.5.1 布隆过滤器支持的操作
- 6.5.2 布隆过滤器的应用
- 6.5.3 布隆过滤器的实现
- *6.6 布隆过滤器的启发式分析
- 6.6.1 启发式假设
- 6.6.2 部分位被设置为1
- 6.6.3 假阳性率
- 6.6.4 结束语
- 6.6.5 小测验6.7的答案
- 6.7 本章要点
- 6.8 章末习题
- 编程题
- 附录 快速回顾渐进性表示法
- 部分习题答案
展开全部
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。