第0章 预备知识 1
0.1 算法与数据结构 1
0.1.1 算法 1
0.1.2 数据结构 4
前言 7
0.2 相关的几何知识 8
0.2.1 基本定义 8
0.2.2 线性变换群下的不变量 9
0.2.3 几何对偶性 10
0.3 计算模型 11
第1章 几何查找(检索) 14
1.1 点定位问题 15
1.1.1 点q是否在多边形P内 15
1.1.2 确定点q在平面剖分中的位置 20
1.2 范围查找问题 27
1.2.1 多维二叉树(k-D树)的方法 28
1.2.2 直接存取方法 30
1.2.3 范围树方法 31
1.3 判定点集是否在多边形内 32
1.4 平面中线段集和空间中三角形集的正交询问 34
1.4.1 吊床询问及推广的吊床询问 35
1.4.2 正交限制 36
第2章 多边形 38
2.1 凸多边形 38
2.2 简单多边形 42
2.3 多边形的三角剖分 47
2.4 多边形的凸划分 49
第3章 凸壳 57
3.1 凸壳的基本概念 57
3.2.1 卷包裹法 60
3.2 计算凸壳的算法(二维) 60
3.2.2 格雷厄姆方法 61
3.2.3 分治算法 62
3.2.4 Z3-1算法和Z3-2算法 64
3.2.5 实时凸壳算法 66
3.2.6 增量算法 70
3.2.7 近似凸壳算法 71
3.3 计算凸壳的算法(三维) 71
3.3.1 基本概念 71
3.3.2 卷包裹法 73
3.3.3 分治算法 74
3.3.4 Z3-3算法 76
3.3.5 增量算法 77
3.4 凸壳的应用 78
3.4.1 确定任意多边形的凸、凹顶点 78
3.4.2 利用凸壳求解货郎担问题 80
3.4.3 凸多边形直径 82
3.4.4 连接两个多边形成一条回路 84
4.1 Voronoi图的基本概念 88
第4章 Voronoi图及其应用 88
4.2 构造Voronoi图的算法 92
4.2.1 半平面的交 92
4.2.2 增量构造方法 93
4.2.3 分治法 95
4.2.4 减量算法 97
4.2.5 平面扫描算法 98
4.2.6 构造最远点意义下Voronoi图的算法 100
4.3 平面点集的三角剖分 101
4.3.1 平面点集三角剖分的贪心算法 101
4.3.2 Delaunay三角剖分与多边形内部点集的三角剖分 103
4.3.3 平面点集三角剖分的算法 105
4.4 Voronoi图与三角剖分的应用 110
4.4.1 最近邻近 110
4.4.2 最大化最小角与三角剖分 110
4.4.3 最大空圆 111
4.4.4 最小生成树 114
4.4.5 货郎担问题 115
4.4.6 中轴 116
4.4.7 Voronoi图形与凸壳的关系 121
4.4.8 Voronoi图的推广 123
4.4.9 几何数据压缩 130
第5章 交与并 133
5.1 线段交的算法 133
5.2 多边形的交 139
5.2.1 凸多边形交的算法 139
5.2.2 星形多边形交的算法 143
5.2.3 任意简单多边形交的算法 144
5.3 半平面的交及其应用 146
5.3.1 半平面的交 146
5.3.2 两个变量的线性规划 147
5.4 多边形的并 153
5.5 凸多面体的交 157
第6章 矩形几何 161
6.1 判定垂直、水平线段是否相交的算法 161
6.2 矩形几何问题的特征及解决问题的途径 162
6.3 矩形并的面积与周长 163
6.4 矩形并的轮廓 166
6.5 矩形并的闭包 168
6.6 矩形并的非平凡轮廓和外轮廓 171
6.7 矩形的交 173
6.8 应用举例 175
第7章 几何体的排列 177
7.1 基本概念 177
7.2 确定直线排列的算法 180
7.3 对偶性 181
7.4 Voronoi图 185
7.4.1 一维情况 185
7.4.2 二维情况 187
7.5 应用 187
7.5.1 k-最近邻近 187
7.5.2 删去隐藏面 188
7.5.3 特征图 189
7.5.4 点集的分割 190
第8章 算法的运动规划 192
8.1 最短路径 192
8.1.1 可视图及其构造 192
8.1.2 Dijkstra算法 193
8.2 移动圆盘 196
8.3 平移凸多边形 197
8.4 移动杆状机器人 200
8.4.1 网格分解 201
8.4.2 收缩方法 203
8.5 机器人臂的运动 204
8.5.1 可达性 205
8.5.2 构造可达性 206
8.6 可分离性 209
8.6.1 多种可分离性 209
8.6.2 借助于平移的可分离性 209
8.6.3 分离问题是NP-难的 210
8.6.4 模拟河内塔问题 211
9.1 G(S)问题 212
第9章 几何拓扑网络设计 212
9.1.1 最大间隙问题(MAX G) 213
9.1.2 最小覆盖问题(MIN C) 215
9.1.3 最近对问题(CPP) 218
9.1.4 所有最近邻近问题(ANNP) 219
9.1.5 邮局问题(POFP) 219
9.2 G(E)问题 220
9.2.1 EMST问题 221
9.2.2 欧几里德TSP 222
9.2.3 欧几里德最大生成树问题(EMXT) 223
9.3 G(S,E)问题 224
9.3.1 欧几里德Steiner最小树问题(ESMT) 225
9.3.2 直线Steiner最小树问题(RSMT) 227
9.4 G(Ω)问题 228
9.4.1 有障碍物的最大空隙问题(MAX G(Ω)) 229
9.4.2 具有障碍物的欧几里德最短路径问题(ESPO) 230
9.4.3 具有障碍物的Steiner最小树问题(ESMTO) 231
第10章 随机几何算法与并行几何算法 236
10.1 分类和搜索线性表的随机算法 236
10.1.1 随机二叉树 237
10.1.2 跳越表 240
10.2 增量算法 241
10.2.1 四边形分解 242
10.2.2 凸多胞形 245
10.2.3 Voronoi图 248
10.2.4 构形空间 250
10.3 动态算法 253
10.4 随机抽样 257
10.4.1 具有限界的构形空间 257
10.4.2 顶-向下的抽样 258
10.4.3 底-向上的抽样 260
10.4.4 动态抽样 261
10.5 并行几何算法 264
10.5.1 凸壳问题 266
10.5.2 排列与分解 268
10.5.3 邻近 269
10.5.4 几何搜索 270
10.5.5 可视性和最优化 270
算法索引 272
参考文献 275