Appearance
皮克定理
顶点坐标均是整数的简单多边形,其面积
平面最近点对
问题描述:给出平面上
引理:如果平面上
法一:经典分治算法
- 预处理:将所有点按横坐标排序;
- 分:按排序下标将点集均分为左右两个子集;
- 治:分别求出左右两个子集的最近点对距离
; - 合:令
,求出跨越分界线且距离小于 的点对。
为了得到
这样每一递归层的归并和条带扫描总计
法二:扫描线
对所有点按横坐标(x)排序,从左到右扫描,记录当前的最近点对距离
对于一个新的点,遍历之前的点中所有与其横坐标(x)之差小于
用一个 multiset 存放与新点横坐标(x)之差小于
使用队列按 multiset 中移除。
在 multiset 中二分找到纵坐标(y)之差小于
时间复杂度:
法三:随机化算法
先将点均匀随机打乱,用前两个点的距离初始化
对第
如果最近点对被更新且
在随机排列独立于输入、哈希表操作期望为
辛普森积分
普通辛普森积分
辛普森积分简单来说就是使用二次函数去拟合待求曲线。
对于一个二次函数
对于一个曲线
对于两个相邻的区间,三个点
自适应辛普森积分
对于普通辛普森积分,若
所以可以采用自适应辛普森积分。
记
因此,要求当前区间的绝对误差不超过
作为接受条件,并返回校正后的结果
若不满足条件,则分别以
已知不连续点应预先作为分界,将原区间拆成若干子区间分别积分;若函数在分界点无定义,还应使用单侧极限或避免在该点直接求值。端点奇异、无穷区间等瑕积分需要极限、截断或变量代换,不能仅依靠继续二分。算法没有只由
仿射变换
仿射变换将点映射为
应用
椭圆
在主轴方向已经对应平行的常见情形下,同一个仿射变换能将多个椭圆分别变成圆,当且仅当它们的长短轴比例相同,即离心率相同。
平行四边形
任意一个非退化平行四边形都能通过可逆仿射变换变成正方形。对于多个非退化平行四边形,设第
同一个仿射变换能将它们分别变成正方形,所得正方形不要求同大小、同位置或同朝向。当且仅当任选一个
平移
仿射变换将面积统一乘以
。
例如,当
