Convex Hull
概述
计算n维欧式空间散点集的凸包,有很多的方法。但是如果要实现快速运算则其难点在于:如何快速判断散点集的成员是否是在凸集的内部。如果可以简化判断的运算过程,则可以极大简化迭代过程中的运算负荷。下面简述一下我用单纯形做的一个在高维欧式空间下快速实现Convex Hull函数的算法。
点的位置判断
假定已知n维欧式空间的单纯形S,S以 为顶点,b为任意点。那么点
和b在
的超平面的不同侧当且仅当:
等价于:
根据单纯形的构造可知,b在S的内部当且仅当:
算法
Step1.先选取散点集U中成员都是边界点的一个子集V,任取V中的n+1个点构成单纯形S,依次对点 进行判定
Step2.任取U中的n个点,这n个点构成一个超平面P,依次对点集 进行判定(超平面分离定理)
Step3.重复Step1和Step2直至
python代码
后续上传中...