书籍详情
Swift常用算法:经典计算机科学问题的Swift实现
作者:[美] 大卫·科帕克(David Kopec),韩智文 著
出版社:清华大学出版社
出版时间:2018-12-01
ISBN:9787302517092
定价:¥98.00
购买这本书可以去
内容简介
《Swift常用算法 经典计算机科学问题的Swift实现》通过探究基本的编码技术和算法,进一步提高读者的Swift编程技能。读者在领略书中关于搜索、聚类、图等领域的示例时,脑海中将会重现一些已经淡忘的重要内容,并将找到“新”问题的经典解决方法。作者David Kopec具有出众的能力,将计算机科学的核心原理与诸如应用、数据、性能甚至通过工作面试等现实问题加以关联。 特色内容: ◆ 宽度优先、深度优先、A*搜索算法 ◆ 约束满足问题 ◆ 使用图算法来解决问题 ◆ 神经网络、遗传算法等 ◆ 全部代码示例采用Swift 4.1编写
作者简介
David Kopec是佛蒙特州伯灵顿的尚普兰学院计算机科学与创新专业的副教授。他是一名经验丰富的iOS开发人员,也是Dart for Absolute Beginners(Apress出版社,2014年出版)一书的作者。David拥有达特茅斯学院的经济学学士学位和计算机科学硕士学位。
目录
目 录
第1章 小型问题 1
1.1 斐波那契数列 1
1.1.1 尝试递归方法 1
1.1.2 利用基本情形 2
1.1.3 计算缓存技术 4
1.1.4 保持斐波那契简单 5
1.2 简单数据压缩 6
1.3 牢不可破的加密 9
1.3.1 数据排序 10
1.3.2 加密和解密 11
1.4 π的计算 12
1.5 汉诺塔 13
1.5.1 汉诺塔的建模 14
1.5.2 解决汉诺塔问题 15
1.6 实际应用 16
1.7 练习 17
第2章 搜索问题 19
2.1 DNA搜索 19
2.1.1 存储DNA 20
2.1.2 线性搜索 21
2.1.3 二分搜索 22
2.1.4 泛型示例 24
2.2 迷宫求解 25
2.2.1 生成随机迷宫 25
2.2.2 其他迷宫细节 26
2.2.3 深度优先搜索 28
2.2.4 广度优先搜索 32
2.2.5 A*搜索 34
2.3 传教士和食人族 39
2.3.1 问题表示 39
2.3.2 问题解决 42
2.4 实际应用 43
2.5 练习 44
第3章 约束满足问题 45
3.1 构建约束满足问题的解决 框架 46
3.2 澳大利亚地图着色问题 50
3.3 八皇后问题 53
3.4 单词搜索问题 55
3.5 SEND+MORE=MONEY问题 59
3.6 电路板布局问题 61
3.7 实际应用 61
3.8 练习 62
第4章 图问题 63
4.1 构建图框架 65
4.1.1 Edge的具体实现 70
4.1.2 Graph的具体实现 70
4.2 寻找最短路径 73
4.2.1 定义路径 73
4.2.2 广度优先搜索(BFS)回顾 74
4.3 最小化网络建设成本 77
4.3.1 权 77
4.3.2 寻找最小生成树 82
4.4 在带权图中寻找最短路径 88
4.5 实际应用 93
4.6 练习 94
第5章 遗传算法 95
5.1 生物学背景知识 95
5.2 预备知识 96
5.3 通用遗传算法 98
5.4 简单测试 105
5.5 重新讨论SEND+MORE=MONEY问题 108
5.6 遗传算法面临的挑战 112
5.7 实际应用 112
5.8 练习 113
第6章 k-均值聚类算法 115
6.1 预备知识 115
6.2 k-均值聚类算法 120
6.3 基于年龄和地理经度的州长聚类算法 124
6.4 k-均值聚类问题及其扩展 128
6.5 实际应用 129
6.6 练习 130
第7章 简单神经网络 131
7.1 来自生物学的灵感 131
7.2 人工神经网络 133
7.2.1 神经元 133
7.2.2 层 134
7.2.3 反向传播 135
7.2.4 整体情况 137
7.3 预备知识 138
7.3.1 借助随机化 138
7.3.2 快速算法 140
7.4 激活函数 141
7.5 构建神经网络 142
7.5.1 实现神经元 143
7.5.2 层的实现 144
7.5.3 神经网络的实现 146
7.6 分类问题 149
7.6.1 归一化数据 149
7.6.2 经典的iris(鸢尾属植物)数据集 150
7.6.3 葡萄酒分类问题 154
7.7 神经网络问题及其扩展 156
7.8 实际应用 157
7.9 练习 158
第8章 其他问题 159
8.1 背包问题 159
8.2 旅行推销员问题 163
8.2.1 简单方法 164
8.2.2 深层考虑 170
8.3 电话号码助记符 170
8.4 井字棋 172
8.4.1 管理状态 173
8.4.2 极小极大算法 175
8.5 实际应用 179
8.6 练习 180
附录A 术语表 181
附录B 更多资源 187
附录C Swift简史 193
第1章 小型问题 1
1.1 斐波那契数列 1
1.1.1 尝试递归方法 1
1.1.2 利用基本情形 2
1.1.3 计算缓存技术 4
1.1.4 保持斐波那契简单 5
1.2 简单数据压缩 6
1.3 牢不可破的加密 9
1.3.1 数据排序 10
1.3.2 加密和解密 11
1.4 π的计算 12
1.5 汉诺塔 13
1.5.1 汉诺塔的建模 14
1.5.2 解决汉诺塔问题 15
1.6 实际应用 16
1.7 练习 17
第2章 搜索问题 19
2.1 DNA搜索 19
2.1.1 存储DNA 20
2.1.2 线性搜索 21
2.1.3 二分搜索 22
2.1.4 泛型示例 24
2.2 迷宫求解 25
2.2.1 生成随机迷宫 25
2.2.2 其他迷宫细节 26
2.2.3 深度优先搜索 28
2.2.4 广度优先搜索 32
2.2.5 A*搜索 34
2.3 传教士和食人族 39
2.3.1 问题表示 39
2.3.2 问题解决 42
2.4 实际应用 43
2.5 练习 44
第3章 约束满足问题 45
3.1 构建约束满足问题的解决 框架 46
3.2 澳大利亚地图着色问题 50
3.3 八皇后问题 53
3.4 单词搜索问题 55
3.5 SEND+MORE=MONEY问题 59
3.6 电路板布局问题 61
3.7 实际应用 61
3.8 练习 62
第4章 图问题 63
4.1 构建图框架 65
4.1.1 Edge的具体实现 70
4.1.2 Graph的具体实现 70
4.2 寻找最短路径 73
4.2.1 定义路径 73
4.2.2 广度优先搜索(BFS)回顾 74
4.3 最小化网络建设成本 77
4.3.1 权 77
4.3.2 寻找最小生成树 82
4.4 在带权图中寻找最短路径 88
4.5 实际应用 93
4.6 练习 94
第5章 遗传算法 95
5.1 生物学背景知识 95
5.2 预备知识 96
5.3 通用遗传算法 98
5.4 简单测试 105
5.5 重新讨论SEND+MORE=MONEY问题 108
5.6 遗传算法面临的挑战 112
5.7 实际应用 112
5.8 练习 113
第6章 k-均值聚类算法 115
6.1 预备知识 115
6.2 k-均值聚类算法 120
6.3 基于年龄和地理经度的州长聚类算法 124
6.4 k-均值聚类问题及其扩展 128
6.5 实际应用 129
6.6 练习 130
第7章 简单神经网络 131
7.1 来自生物学的灵感 131
7.2 人工神经网络 133
7.2.1 神经元 133
7.2.2 层 134
7.2.3 反向传播 135
7.2.4 整体情况 137
7.3 预备知识 138
7.3.1 借助随机化 138
7.3.2 快速算法 140
7.4 激活函数 141
7.5 构建神经网络 142
7.5.1 实现神经元 143
7.5.2 层的实现 144
7.5.3 神经网络的实现 146
7.6 分类问题 149
7.6.1 归一化数据 149
7.6.2 经典的iris(鸢尾属植物)数据集 150
7.6.3 葡萄酒分类问题 154
7.7 神经网络问题及其扩展 156
7.8 实际应用 157
7.9 练习 158
第8章 其他问题 159
8.1 背包问题 159
8.2 旅行推销员问题 163
8.2.1 简单方法 164
8.2.2 深层考虑 170
8.3 电话号码助记符 170
8.4 井字棋 172
8.4.1 管理状态 173
8.4.2 极小极大算法 175
8.5 实际应用 179
8.6 练习 180
附录A 术语表 181
附录B 更多资源 187
附录C Swift简史 193
猜您喜欢