欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    算法合集之《问题中的变与不变》.ppt

    • 资源ID:3488329       资源大小:607.55KB        全文页数:25页
    • 资源格式: PPT        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    算法合集之《问题中的变与不变》.ppt

    问题中的变与不变,长沙市雅礼中学 陈雪,引言,对变量进行操作是信息学中的常见问题。 如果能找到变量之间的关系,把变量转化成不变量,那么算法的效率就将得到质的提升。,例一蚂蚁,一条树枝上有N只蚂蚁。给出他们的位置,如何安排蚂蚁初始的方向使得全部蚂蚁掉落的时间最早或最晚。 最多1,000,000只蚂蚁。,感性认识,左边的蚂蚁向左端走,右边的蚂蚁向右端走。 如何使全部掉落的时间最晚? 猜想:让左边的蚂蚁向右端走,同时右边的蚂蚁向左端走。,理性分析,直接证明猜想难度比较大。 看一般的情况: 纪录2只蚂蚁的有用信息:速度 和位置 。 设 。,在蚂蚁相遇前一刻,在蚂蚁相遇后一颗,一个集合内蚂蚁相遇,集合不变,继续分析,另 任何两只属于集合U内的蚂蚁相遇之后,集合U不变。 集合U只随着时间的变化而变化。 Ansi=蚂蚁I按起始方向走到端点,继续分析,回到原问题 最早时间= 最迟时间= 猜想得证! 最终时间复杂度O( n )。,即左边蚂蚁向左走,右边蚂蚁向右走,Max蚂蚁I向近端出发,Max蚂蚁I向远端出发,即左边蚂蚁向右走,右边蚂蚁向左走,小结,分析题目的特殊特点: 1.原路返回 2.速度相同 将速度变量固定,成为常量。 问题得到了简化。,例二circular way,安排一种方案 使得总代价最小 n50000 最小权匹配! 无法满足题目要求! 设A类点顺时针排序的坐标为A1,A2 An 设B类点顺时针排序的坐标为B1,B2 Bn,优化算法,最小权匹配必然满足下面的性质: 通过调整可以得到更优解,两条匹配边不会交叉,算法二,1.枚举和A1匹配的点Bk。 2.然后按顺序一一求出和Ai匹配的点。 3.最后统计当前的代价和,更新答案。,时间复杂度,继续分析,另Ci表示当前Ai与它匹配的Bj的距离。 当前的代价sum=Ci Ci随着我们枚举k而变化。,找出Ci中蕴含的不变?,观察Ci,由于Ai到Bj有顺时针,逆时针2种走法。 Ci =Min|Ai-Bj|,L-|Ai-Bj| Ci只同Ai和Bj有关。 不妨把Ci看成Ai和Bj的函数。 设Ci=f(Ai)+g(Bj),讨论Ci,0,从 顺时针走到,讨论Ci,0,从 逆时针走到,讨论Ci,0,从 顺时针走到,讨论Ci,0,从 逆时针走到,继续分析,根据Ai,Bi的有序性,得到f(Ai)的每种情况对应的Bj都是连续的一段。 f(Ai)在枚举和A1匹配的点Bk的过程中 只会发生4次变化。 从Ci的N次变化 f(Ai),g(Bi)的4次变化,回到原问题,当前的代价sum=Ci=f(Ai)+g(Bi) A1匹配Bk,sum已经求出。 当A1匹配Bk+1,更新f(Ai),g(Bi),sum。 sum=sum-f(Ai)+f(Ai)-g(Bi)+g(Bi) 把一个-f(Ai)+f(Ai)和-g(Bi)+g(Bi) 看成一次事件,f(Ai)表示上一时刻f(Ai) f(Ai)表示当前f(Ai),举例,A1匹配B4,有 A1匹配B1,有,看成一次事件,看成一次事件,分析,事件总数8n 根据Ai,Bi的有序性,预处理用指针即可,知道下一时刻k+1会发生的事件,更新sum,得到f (Ai)4种情况对应的Bj范围,每件事件发生时间,小结,算法流程如下 1将Ai,Bi排序 2预处理求出每个事件发生时间 3枚举和A1匹配的点Bk,更新sum。 4输出 时间复杂度 O(排序+事件总数)=O(nlgn),小结,将变化的Ci转化成“不变”的f(Ai)和g(Bi) 减少了操作规模 问题迎刃而解,总结,例一蚂蚁 以不变应万变 例二circular way 将变量的操作规模缩小,仔细分析,大胆猜想,把握问题的本质,问题迎刃而解,变 不变,谢谢大家,参考文献: 1 刘汝佳,黄亮.算法艺术与信息学竞赛. 清华大学出版社.2003 2 zju online judge 2376 ants. http:/acm.zju.edu.cn/show_problem.php?pid=2376 3 sgu online judge 313 circular railway. http:/acm.sgu.ru/problem.php?contest=0&problem=313,

    注意事项

    本文(算法合集之《问题中的变与不变》.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开