Appearance
皮克定理
顶点坐标均是整数的简单多边形,其面积
平面最近点对
问题描述:给出平面上
引理:如果平面上
法一:经典分治算法
- 分:画一条垂直的线将点集均分为左右两个子集
- 治:分别求出左右两个子集的最近点对
- 合:求出跨越分界线的最近点对,与子问题的最近点对比较取最优
令两个子问题的最近点对距离为
找出所有离分界线距离
对每个范围内的点,遍历与其纵坐标(y)之差 d 以内的所有点,更新最近点对。
根据引理,此范围内的点能更新的最近点对是常数级别的。
法二:扫描线
对所有点按横坐标(x)排序,从左到右扫描,记录当前的最近点对距离
对于一个新的点,遍历之前的点中所有与其横坐标(x)之差小于
用一个 multiset 存放与新点横坐标(x)之差小于
使用队列按 multiset 中移除。
在 multiset 中二分找到纵坐标(y)之差小于
时间复杂度:
法三:随机化算法
令前
对第
如果最近点对被更新,以新的最近点对距离
若点的顺序为随机打乱的,那么期望时间复杂度为
辛普森积分
普通辛普森积分
辛普森积分简单来说就是使用二次函数去拟合待求曲线
对于一个二次函数
对于一个曲线
对于两个相邻的区间,三个点
自适应辛普森积分
对于普通辛普森积分,若
所以可以采用自适应辛普森积分。
自适应辛普森积分采用分治的方式,若将当前区间再递归一层后计算的答案和当前直接计算的答案误差小于
在分治判断的时候,除了判断精度是否正确,一般还要强制执行最少的迭代次数。
注:辛普森积分需要注意积分区间的连续性,如果中间存在间断部分,使用辛普森积分求解可能会出现错误。
仿射变换
仿射变换指,对点进行变换:
应用
椭圆
对多个椭圆同时进行仿射变换成圆,需要满足离心率相等和主轴方向平行。
平行四边形
对多个平行四边形同时进行仿射变换成正方形,需要满足底角相等,底边平行。
仿射变换面积等比例变换
