Introduction
文章目录
课程介绍
什么是计算几何?
计算几何是一门算法设计课程
用几何的方法来设计算法解决问题(问题图形化)
Look up the nearest public phone
上图所划分中,各个区域到自己区域内的电话亭的距离最近。
是一个voronoi图
Short Connection
找出图中两个点之间的最短路径(避开障碍物),可应用于机器人的运动规划问题
Overlaying maps
将两张地图的信息结合起来
Overlaying maps是地理信息系统的基本操作之一。涉及到在地图中定位对象位置,计算交集等。
计算结合的各个应用领域
Robotics
Computer graphics
CAD/CAM
Geographic information systems
Internet
Virtual reality
Virtual surgery
1.1 an example:Convex Hulls
Concept of Convex
平面的子集S被称为凸,当且仅当对于任何一对点p,q∈S时,线段pq完全包含在S中。
集合S的凸包CH(S)是包含S的最小的凸集.更确切地说,它是包含S的所有凸集的交集。
凸包的定义
凸包是唯一的凸多边形,满足其顶点是来自P的点并且包含P的所有点。
凸包的计算
如下图所示
输入
点集 p1, p2, p3, p4, p5, p6, p7, p8, p9
输出
点集 p4, p5, p8, p2, p9
pq构成有向边,如果所有点都位于pq的右侧,则pq是凸包的边。
Algorithm SLOWCONVEXHULL§
Time complexity of SLOWCONVEXHULL
第1-7步的时间复杂度为O(n3)
第8步的时间复杂度为O(n2)
总的时间负责度为O(n3)
Degenerate case: three points on a line
pq是凸包的边 当且仅当 所有的点都位于pq的右侧或者在pq上。
浮点运算可能会引起计算结果的不准确
incremental algorithm(增量式算法)
将凸包分为上凸包和下凸包
按照x坐标顺序编号点集p1-pn,
首先将p1和p2 放入上凸包中,接下来逐一考虑p3-pn
如果最新的三个点形成左拐的形式,则删掉第二个点,将第一个点和第三个点连接。以此重复。
计算下凸包的时候,按照p(n-2)-p1的顺序来考虑
如果最新的三个点形成左拐的形式,则删掉第二个点,将第一个点和第三个点连接。以此重复。
Algorithm CONVEXHULL§
共线点必须被视为左转。
Theorem 1.1
The convex hull of a set of n points in the plane can be computed in O(nlogn) time.
1.2 Degeneracies and Robustness
开发几何算法经历了三个阶段
第一阶段
我们试图忽略一切会混淆我们对我们正在处理的几何概念的理解。
第二阶段
调整在第一阶段设计的算法在退化情况下是正确的。
第三阶段
实际实施。
使用整数,有理数甚至代数数字,具体取决于问题的类型