- 1
- 0
- 约1.35千字
- 约 14页
- 2021-01-12 发布于天津
- 举报
蛋白质组学北京大学人工智能实验室 ProteomicsArtificialIntelligenceLaboratoryofPekingUniversity 线性规划 ? 这个大家都知道 ? 其实线性规划就是半平面求交 ? 由 n 个形如 ax+by+c=0 的不等式确定的半平 面,求其交集区域 ? 容易知道该区域是至多 n 边的 凸 多边形 ? 当然前提是在一个有限范围内,如果题目要 求无限范围,你只要自己定一个足够大的有 限范围即可 朴素算法 ? 初始设区域 A 为整个平面 ? 一次用给定不等式对应的直线切割 A ? 所有直线切割完毕后得到最终的交集 ? 复杂度 O(n 2 ) ? 如果要求每增加一个不等式都要输出一次 A , 该算法是最优的 分治算法 ? 如果可以在 O(n+m) 的时间里求出一个 n 条边的凸多边形和一个 m 条边的凸多边 形的交集,那么就可以吧半平面求交的 问题分治为两个相当的小问题,然后再 合并结果 ? 那么时间复杂度变为 O(nlogn) 两个凸多边形的交 ? 如右图所示,过凸多边 形的顶点做平行于 y 轴 的直线,这些直线将整 个平面分成若干个区域, 在每个区域里,都是两 个梯形(或退化的梯形) 求交,只需用时 O(1) 两个凸多边形的交 ? 根据这个思想,我们分别求出凸多边形的上 方边界和下方边界,合起来就是一个凸多边 形 ? 由于最多分成 n+m 个区域,所以求这些梯形 的交用时 O(n+m) ? 在求顶点的 x 坐标顺序时,可以使用归并排序 的思想,用时 O(n+m) ? 总用时 O(n+m) 经典问题一 ? 已知一个多边形 ? 求其中是否存在一个点,能看到整个多边形 经典问题一 ? 首先,能够看到所有边的点必然能看到整个 多边形 ? 假设多边形的顶点按逆时针方向给出 V 0 V 1 V 2 ……V n , V 0 = V n 。能看到边 V i V i+1 的点 Q i 必然满足 Q i V i × Q i V i+1 =0 (指两个向量叉 乘),事实上此时 Q i 的解集是一个半平面 ? 问题转化为这些半平面的交是否为空 经典问题二 ? 在一个矩形区域中有 n 个点,找到一个点,使 得其到所有给定点的距离的最小值最大 经典问题二 ? 首先,我们想确定区域内的每个点,是到哪个给定 点的距离最近,如果这样分类成功,我们就可以求 出每个给定点的对应区域中离它最远的点,然后求 其中的最大值 ? 对于一个给定点,其对应区域的所有点必须满足到 其他点的距离比到给定点的距离长 ? 对于只有两个点的情况,这个区域正是两点的中垂 线分割出来的区域,是一个半平面 ? 那么问题就转化成了半平面求交 Voronoi 图 ? 上题中提到的对于给定点的区域凸多边形划 分,是一个计算几何中的经典模型,被称做 Voronoi 图 ? 半平面求交并不是求 Voronoi 图的最优算法 联想 Delaunay 三角剖分 ? 回忆上学期学过的 Delaunay 三角剖分,发现 其与 Voronoi 图有一些共同特点 ? 都是给定了若干点,然后做一个划分 ? Delaunay 三角剖分和 Voronoi 图都是唯一的 ? 都包含了某种最优划分的思想
原创力文档

文档评论(0)