网站大量收购独家精品文档,联系QQ:2885784924

国家集训队2004论文集 金恺.ppt

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
国家集训队2004论文集 金恺

极限法——解决几何最优化问题的捷径 长郡中学 金恺 概述 在平面几何问题中我们经常会遇到一些求极值的问题。在这些问题中,自变量和目标函数可能涉及到坐标、斜率、角度、周长、面积等等一些复杂的量,而且自变量往往还有复杂的约束条件,所以直接用求函数最值的方法无从下手或者极其复杂。 化无限为有限 在这些问题中,自变量往往有无穷多种取值方案(比如点在平面上),无法枚举每种取值方案来求最值。怎么办? 通过极限法,可以证明: 自变量取非特殊情况时函数不可能得到最优解,因为把自变量微调一个无穷小量能够使得目标函数变得更优。 从而只剩下有限个特殊情况需要考虑。枚举所有的特殊情况,就可找到最优解了。 化有限为少量 在另一些问题中,本就可以通过枚举有限个特殊情况求出最优解,但是枚举的量很大,时间复杂度较高; 尝试通过极限法减少需要枚举的情况数,降低时间复杂度。 极限法的本质就是对目标函数求导: 如果自变量不取定义域的边界(取边界时对应某些特殊情况)并且这一点的导数不为0(导数为0时对应另一些特殊情况),则目标函数不可能为最优值。 例题一、巧克力 问题描述: 两个小孩一起买了一块凸N边形巧克力,想一刀把它割成两半,两半的面积必须相等。 找出用以分割巧克力的分割线的最短长度。 数学模型: 已知量:N个点(Xi,Yi),1≤i≤N,构成一个凸包P; 求:一条分割线L; 约束条件:P在L两侧的面积相等; 目标函数:L的长度; 要求使目标函数值最小的一条L。 问题分析 设L的两个端点为A、B; L可能过P的顶点也可能不过,分开解决这两种情况: 1、A在P的顶点上(B在P的顶点上类似) 1)枚举P中的一个顶点 作为A; 2)由分割线两侧面积 相等确定B所在的边; 3)算出B的具体位置。 2、A、B都在P的边{不含端点}上: 枚举A、B所在的两条边a、b 设这两条边相交于C,∠C=γ 先把L绕B点往交点C方向旋转一个微量θ; 再平移一个微量到L使P在L两边的面积相等; L仍与a、b相交,交点为A、B; 则∠CAB=α+θ,∠CBA=β-θ; 由正弦定理: 结论 如果a、b平行即C在无穷远处,也有相同结论 若L是最短的分割线但不经过P的顶点,那么L与P的两个夹角必然相等。 枚举a、b后,确定L的斜率,根据P在L两边面积相等,可算出L的位置。 需要枚举的a、b只有N对,可以用滑动指针的算法找到所有这样的边对,总复杂度为O(N) 通过此题,我们已经初次接触到了极限法,并利用它得到了一个极其简单的结论。本题中极限法的作用是:把自变量的取值范围从无穷多条直线减少到了N条直线。 例题二、太空站 问题描述:平面上有n(3≤n≤10000)个互不重合的已知点,求一条直线,使得所有已知点到这条直线的距离和最小。 数学模型 已知n点的坐标分别为:V1(x1,y1), V2(x2,y2),…,Vn(xn,yn)。直线l(ax+by+c=0(ab≠0))的费用定义为 求min{f(l)} 想法:枚举所有的直线,得到最优值 平面中的直线有无穷多条 怎样的直线才有可能是我们要找的那一条呢? ①规定直线l经过某一个已知点。 若l不经过任何已知 点。设l两侧的点数分 别有a、b个,a≥b 将l往点多的一侧平 移一个无穷小量△到l 则f(l)-f(l)=b△-a△= (b-a)△≤0∴f(l)≤f(l) 所以已知点相对于l 的位置未发生改变,即 a、b值未变。 可不断往同一个方向平移l直至碰到一个已知点,到l处,同样有 f(l)≤f(l) 。 l经过某一个已知点,且费用不比l高。 ②直线l必经过两个已知点。 根据结论① ,设l过V1,而不过其它已知点。 定义: Li—Vi到V1的距离 αi—Vi到l的垂线与ViV1的夹角 证明② 将l绕V1逆时针旋转一个无穷小的角度θ到l; 将l顺时针旋转相同的角度θ到l; θ足够小,使旋转过程中不碰到其它的已知点。 当αi=0时 ∵直角三角形中直角边斜边 ∴不论直线旋转到l还是l,Vi到直线的距离都严格减小了 当αi0时 算法一 待枚举的直线变为了有限条(N 2条),得到一个有效的算法: min?∞ 枚举两个已知点 根据这两个点确定直线h 计算 f (h) 若f(h) min则 l?h, min?f(h) 时间复杂度为O(N 3) 可再次用极限法进一步减少需要枚举的直线 ③直线两侧的点数的关系 定义 a(l):直线l上方的已知点个数 b(l):直线l上的点数 c(l):直线l下方的已知点个数 若l最优则必有a(l)+b(l)c(l)且c(l)+b(l)a(l) 证明a(l)+b(l)c(l) {c(l)+b(l)a(l)对称} 反证:若a(l)+b(l) ≤c(l) 把l往下平移一个无穷小

文档评论(0)

ldj215322 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档