厦门大学---算法分析研讨——6.ppt

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

N后问题 整数因子分解 整数因子分解 用于整数因子分割的split算法 private static void split(n) {  int m = (int)Math.floor(Math.sqrt((double)n)); for(int i=2;i=m;i++) if(n%i==0) return I; return 1; } 分析 分析 对于解整数因子分解问题,目前还没有找到多项式时间算法; 算法split(n)是对1~x的所有整数进行试除而得到范围在1~x2的任意整数的因子分割; 基于拉斯维加斯算法的整数因子分解问题求解方案 Pollard算法——用split(n)算法相同的工作量可以得到在在1~x4范围内整数的因子分割. 实例说明 线性时间选择 跳跃表 线性时间选择 跳跃表 线性时间选择 线性时间选择 问题所在:选择合适的划分基准 对于选择问题,用拟中位数作为划分基准可以保证在最坏情况下用线性时间完成选择。 舍伍德型选择算法 随机选择一个组元素作为划分基准,既保证算法的线性时间平均性能,又可以避免计算中位数的麻烦。 Select算法分析 Select算法分析 如何得到? 考虑这种情况:无论n是奇数还是偶数,T(n/2)都出现2次 结论 结论 非递归的舍伍德型选择算法Select可以在O(n)平均时间内找出n个输入元素中的第k小元素 提示 对于某些确定性算法,可以将其改造成舍伍德算法,使得该算法以高概率对任何实例均有效。 对于某些不能直接改造的情况,可以借助预处理技术,不改变原有的确定性算法,而仅对其输入元素进行随机洗牌,同样可以收到舍伍德算法的效果。 线性时间选择 跳跃表 跳跃表 跳跃表 如果用有序链表来表示一个含有n个元素的有序集合S,则在最坏情况下,有哪些信誉好的足球投注网站S中的一个元素需要Ω(n)计算时间。为了跳高效率,可以在部分结点处增加附加指针来提高有哪些信誉好的足球投注网站性能(借助这些附加指针,可以跳过链表中的若干结点,从而加快有哪些信誉好的足球投注网站速度)。这种增加了向前附加指针的有序链表称为跳跃表。 2 3 5 7 NIL 11 13 17 19 23 0 举例说明 没有附加指针的有序链表 2 3 5 7 NIL 11 13 17 19 23 0 1 2 3 5 7 NIL 11 13 17 19 23 0 1 2 增加附加指针后的有序链表——跳跃表 如何进行有哪些信誉好的足球投注网站? 2 3 5 7 NIL 11 13 17 19 23 0 1 2 问题:如何在该跳跃表中有哪些信誉好的足球投注网站元素8? 如何在该跳跃表中有哪些信誉好的足球投注网站元素8? 2 3 5 7 NIL 11 13 17 19 23 0 1 2 元素8位置 2 3 5 7 NIL 11 13 17 19 23 0 1 2 2 3 5 7 NIL 11 13 17 19 23 0 1 2 元素8位置 ? 元素8不在集合S中 有序链表?跳跃表 存在的问题 应在哪些结点增加附加指针,增加多少? 2 3 5 7 NIL 11 13 17 19 23 0 随机算法的引入 解决方案 采用随机化方法来确定附加指针的增加结点位置和数量。使得跳跃表可以在O(logn)平均时间内支持关于有序集的有哪些信誉好的足球投注网站、插入和删除等运算操作。 实现方案参看教材256 2 3 5 7 NIL 11 13 17 19 23 0 1 2 如何保持附加指针的平衡性,如何随机生成新插入结点的级别 附加指针的平衡性 可用于指导附加指针的设置 解决方案 具体实现说明请参看教材page254 随机生成新插入结点的级别 解决方案 在完全跳跃表中,具有i级指针的结点中有一半同时具有i+1级指针 方案 事先确定一个实数p(0p1),并要求在跳跃表中维持在具有i级指针的结点中同时具有i+1级指针的结点所占比例为p。 在插入一个新结点时,先将其结点级别初始化为0,然后随机反复产生一个[0,1]间的随机实数q。 如果qp,则使新结点级别增加1,直到q=p为止。 为避免出现过大的结点级别,用log1/pn作为新结点级别的上界 ——参看教材255 跳跃表的算法实现 跳跃表的算法实现 参看教材259 提纲 随机数 数值概率算法 舍伍德算法 拉斯维加斯算法 蒙特卡罗算法 本章小结 拉斯维加斯算法 拉斯维加斯算法(Las Vegas) 能够显著改进算法的有效性,对某些目前还找不到有效算法的问题,也能得到较为满意的算法 不会得到不正确的解,但有时找不到问题的解  通常用boolean型方法来表示拉斯维加斯算法 找到解,返回true; 未找到解,返回false; 此时,可以对同一实例再次调用相同的算法 由随机算法的性质决定 效率分析 Public static void obstinate( Object x, Object y) {  boole

文档评论(0)

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

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

1亿VIP精品文档

相关文档