电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

用随机算法求第k小项

6页
  • 卖家[上传人]:汽***
  • 文档编号:476203134
  • 上传时间:2024-01-03
  • 文档格式:DOCX
  • 文档大小:19.58KB
  • / 6 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、1, 问题描述设A1,n是一个有n个数组成的无序数列,寻找其第k小元素就是将A按照非递减的顺序排列后,新序列中的第k个元素。寻找第k小元素最直接的方法就是直接将A进行排序,然后取出第k个元素,但是此类方法时间复杂度较高,至少需要(nlogn)时间,因为基本所有已学的排序方法在最坏情况下都需要这么多时间。 在第三章中老师课上教导了利用分治法求第k小元素的算法,其时间复杂度为O(n)。其基本思想如下:在分治法递归调用的每一个划分步骤中都将舍弃一定比例的元素,而在剩余元素中寻找目标。故在我的理解中这种分治法的性能主要依赖于每次递归调用能舍去的元素的比例,以及为舍弃这些元素所花费的代价。在之后的学习中,我们又接触到了随机算法,不由思考,分治法中的划分可以不可以通过随机算法来随机选择一个位置,然后根据这个位置进行舍弃序列中的元素,有没有办法改进算法。2, 随机选择算法Algorithm: RandomSelect (Alow, high, k)输入:数组Alow,.high和整数k,1 k high-low+1输出:Alowhigh中的第k小元素v random(low,high)x Av将Al

      2、owhigh分成三部分 A1a|a x /(n)case | A1 | k : return RandomSelect(A11, |A1|, k) | A1 |+| A2 | k : return x | A1 |+| A2 | k: return RandomSelect(A31,|A3|, k-|A1|-|A2|)end case该部分算法ppt与书上已经提到,其时间复杂度的期望比较次数C(n)4n,此外每个元素与基准元素x至少比较一次。故C(n)n及nC(n)4n,故时间复杂度为(n)这部分书上与ppt上已有证明就不过多论述了3, 对以上随机算法的一种思考改进分析以上算法不难发现,其先随机选择一个位置v,然后根据v进行对元素的舍弃,所以每次舍弃不同个元素的概率是相同的,我就思考可不可以让选中舍弃较多元素的位置的概率更大,让算法有更大几率舍弃掉较多的元素。 算法的想法如下:如果随机选择一个位置的元素进行比较,每个位置的可能性是均等的,取到的数值可能最大、最小,也可能中间,如果是最大最小的情况,每次舍弃的数值就只能有一个,只有尽可能的取大小排在中间的数值,才能舍去较大的元素,故我思考

      3、,不妨选择随机选择两个位置,v,j令x=(Av+Aj)/2,然后通过x进行分组,这样取到数值为中间大小的数比取到最大最小值的可能性更高,舍弃较多数的几率更大。进而进行了优化。 理论上,选择的随机位置越多,平均后,舍弃掉较多数的可能越大,但是这就退化近似成取中值进行分治法求第k小元素的方法,丧失了随机算法的优点,将直接随机到最优解和较优解的可能性也降低了,所以我尝试取2个随机位置的方法进行优化。 并且当选择两个随机位置时,序列长度小于等于2个时,没有执行随机算法的必要 先从一个特例分析其取到各位置的理论概率大小,令n=8,其取到不同位置的概率如下表(为表示清晰,v,j位置为A进行排序后的位置)由表格数据可以发现,此时数组划分数据x可能处于不同的位置的概率分为别为:3/64,7/64,11/64,15/64,13/64,9/64,5/64,1/64 显然舍去较多数的几率更高。改进的随机算法:Algorithm: NewSelect (Alow, high, k)输入:数组Alow,.high和整数k,1 k high-low+1输出:Alowhigh中的第k小元素If(high-low2)

      4、thenIf(k=1) then return min(Alow,Ahigh)Else return max(Alow,Ahigh)End ifelsev random(low,high)j random(low,high)x (Av+Aj)/2将Alowhigh分成三部分 A1a|a x /(n)case | A1 | k : return NewSelect(A11, |A1|, k) | A1 |+| A2 | k : return x | A1 |+| A2 | k: return NewSelect (A31,|A3|, k-|A1|-|A2|)end case end if 该算法的最坏情况与最初算法是一致的,但是其舍弃较大数的可能性应该较大,下面进行时间复杂度的理论分析4, 时间复杂度分析仿照ppt上对原算法的证明方式,证明如下(因为个人对数学公式符号用电脑表示不熟悉,而且因为证明较繁琐故用手写证明拍照如下,往老师见谅。) 由证明可知,改进后的算法的时间复杂度也是(n),虽然数量级相同,但是其前系数还是减小了。模拟仿真:实际编程,比较实际情况中原算法与改进算法的执行次数,发现其是否有改进。为使数据明显,取n值较大,当n=5000时,不同k的执行次数如表格:当k不同时,进行数据拟合,结果如下及O(k)=-2.1nlogn -469.2logn+26.80n+11010.2706当n改变时,做出其一次关系式,改进后的算法时间复杂度绘图如下O(n)= 2.579n5, 总结通过以上的分析证明,以及最后的数据拟合可以发现,改进后的算法在解决第k小元素的问题上,算法时间复杂度最小,故其对原算法进行了改进。明显可见,随机算法时间复杂度远好于确定型的算法的时间复杂度,改变随机算法随机出的情况的不同概率也可以进一步优化随机算法。

      《用随机算法求第k小项》由会员汽***分享,可在线阅读,更多相关《用随机算法求第k小项》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.