1.减而治之(Decrease and Conquer)
插入排序
典型的减而治之算法就是插入排序方法
插入排序法: 在未排序中选择一个元素,插入到已经排序号的序列中
将凸包也采用减而治之的方法
2.In-Convex-Polygon Test
怎么判断引入的极点存在于多边形里面还是外面?
也就是需要区分出6,7,9 和 8。
判断上述的核心就是判断引入的点在凸包里面还是在外面
上述过程,先排序,再做二分算法,最后做In-Triangle test。
上述算法的问题:凸包并不是静态、一层不变的
如果采用插入排序法算法复杂度并不会降低,因为如果采用vector来存在,会存在失效的情况。实际情况复杂度还是n*n
还是采用朴素元素的方法
进而采用 to-left test 判断一个点是在内部还是外部,算法的复杂度是n*n
3.Support Line
如何将极点增加到现有的凸包上面去?
确定support line
st这一段就是Support Line/tangent
怎么确定s和t定点
4.Pattern Of Turns
s的特征:所有顶点都在它的左侧
t的特征:所有点点都在它的右侧
5.Exterior/Interior
6. Selection Sort与凸包
采用选择排序的方法,可以避免已经sorted的部分被打乱掉,但是需要知道根据什么规则来进行排序
采用类似于选择排序算法的方式,用在凸包寻找极点,缩小查找的范围
如何在当前已有的极边查找下一个极点?
可以通过角度来确定下一个极点,但是这种做法并不明智。采用 to-left-test 更加机智
起始点如何确定?
lowest-then-leftmost。 高度最低,然后最左边的点
实现
确认起点
output Sensitivity
h代表在凸包上需要行驶的步数