1.1 应用场景
有多个手机信号发射器,求解一个最小区域,要求所有的发射器都包含在这个最小区域中,并且任意两台发射器之间的交流包含于在这个区域内。
将所有的发射器看做为点,任意两个点之间的连线都包含于一个平面S。
1.2 问题定义
一个平面的子集S是凸的,当且仅当S中的任意两个点之间的连线都包含于S中。点集P的凸包是所有包含P的凸集中的最小的一个。凸包是唯一的。
1.3 算法分析
将所有的点按照横坐标进行排列(升序),P={p1,p2,……,pn},求解一个点集Lup,这个点集中的点就是凸包上边缘的点,沿着点集连线,就可以得到凸包的上半部分,按照类似算法,可以求出Llower。
将p1,p2加入到Lup中,对于剩下的点集,即p3,……,pn,
for i <- 3 to n:
Lup.append(pi)
While ( Lup中至少包含三个点,并且最后的三个点没有形成向右转)
从Lup中删去这三个点中的中间那个点;
Llower同理求解。
凸包算法详解
2279

被折叠的 条评论
为什么被折叠?



