Convex Hull 实现理论+自制Python代码

时间:2023-03-09 06:38:11
Convex Hull 实现理论+自制Python代码

Convex Hull

概述

计算n维欧式空间散点集的凸包,有很多的方法。但是如果要实现快速运算则其难点在于:如何快速判断散点集的成员是否是在凸集的内部。如果可以简化判断的运算过程,则可以极大简化迭代过程中的运算负荷。下面简述一下我用单纯形做的一个在高维欧式空间下快速实现Convex Hull函数的算法。

点的位置判断
假定已知n维欧式空间的单纯形S,S以 Convex Hull 实现理论+自制Python代码为顶点,b为任意点。那么点Convex Hull 实现理论+自制Python代码和b在Convex Hull 实现理论+自制Python代码的超平面的不同侧当且仅当:

Convex Hull 实现理论+自制Python代码

等价于:

Convex Hull 实现理论+自制Python代码

根据单纯形的构造可知,b在S的内部当且仅当:

Convex Hull 实现理论+自制Python代码

算法
Step1.先选取散点集U中成员都是边界点的一个子集V,任取V中的n+1个点构成单纯形S,依次对点 Convex Hull 实现理论+自制Python代码进行判定

Convex Hull 实现理论+自制Python代码

Step2.任取U中的n个点,这n个点构成一个超平面P,依次对点集 Convex Hull 实现理论+自制Python代码进行判定(超平面分离定理)

Convex Hull 实现理论+自制Python代码

Step3.重复Step1和Step2直至Convex Hull 实现理论+自制Python代码

python代码
后续上传中...