版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出n个元素中第k小的元素,k=(n+1)/2称为中位数。线性时间选择特殊情况下的线性时间算法:最大、最小元素:线性扫描,O(n)一般情况下的选择问题如何解决?
用快速排序算法思想,对输入数组进行递归划分,不同的是它只对划分出的子数组之一进行递归处理。2privatestaticComparablerandomizedSelect(intp,intr,intk){if(p==r)returna[p];inti=randomizedpartition(p,r); j=i-p+1;//i左边的元素个数
if(k<=j)returnrandomizedSelect(p,i,k);elsereturnrandomizedSelect(i+1,r,k-j);}在最坏情况下,算法randomizedSelect需要O(n2)计算时间。但可以证明,算法randomizedSelect可以在O(n)平均时间内找出n个输入元素中的第k小元素。线性时间选择随机数使特殊性减少,普适性增加在找最小元素时,总是在最大元素处划分P32公式(上)3如果能在线性时间内找到一个划分基准,使得按这个基准所划分出的2个子数组的长度都至少为原数组长度的ε倍(0<ε<1),那么就可以在最坏情况下用O(n)时间完成选择任务。此时:T(n)≤T(εn)+O(n)得:T(n)=O(n)线性时间选择如何在线性时间内找到这样的划分基准?首位
随机?在最坏情况下可以用O(n)时间完成选择任务?4线性时间选择将n个输入元素划分成n/5个组,每组5个元素,只可能有一个组不是5个元素。用任意一种排序算法,将每组中的元素排好序,并取出每组的中位数,共n/5个。递归调用select来找出这n/5
个元素的中位数。如果
n/5
是偶数,就找它的两个中位数中较大的一个。以这个元素作为划分基准。5线性时间选择
设所有元素互不相同,在这种情况下,找出的基准x至少比个元素大,因为在每一组中有2个元素小于本组的中位数,而个中位数中又有个小于基准x。同理,基准x也至少比个元素小。而当n≥75时,,所以按此基准划分所得的两个子数组的长度都至少缩短1/4。为什么?不考虑不足5个元素的组的情况下:当为奇数时,至少有个组中的部分元素比x小。当为偶数时,至少有个组中的部分元素比x小。总之,至少有个组中的部分元素比x小,每个组中有3个元素比x小,所以x至少比个元素大。6privatestaticcomparableselect(intp,intr,intk){if(r-p<5){//用某个排序算法对数组a[p:r]排序
bubblesort(p,r); retruna[p+k-1];}}//将a[p+5*i]至a[p+5*i+4]的第3小元素与a[p+i]交换位置,找出所有的中位数,集中到p后面。r-p-4即n-5。for(inti=0;i<=(r-p-4)/5;i++)//i表示组数,初值为0,所以组数为 (r-p-4)/5+1=(r-p+1)/5=[n/5](下){ ints=p+5*i,t=s+4; for(intj=0;j<3;j++)bubble(s,t-j);//与上述bubbleSort不同
mymath.swap(a,p+i,s+2);}comparablex=select(p,p+(r-p-4)/5,(r-p+6)/10);//找中位数的中位数x, (n+1)/2=((r-p+1)/5+1)/2=(r-p+6)/10inti=partition(p,r,x);j=i-p+1; //j是以i为基准划分后前一部分的个数if(k<=j) returnselect(p,i,k); //在前一部分中递归查找elsereturnselect(i+1,r,k-j); //在后一部分中递归查找}线性时间选择7复杂度分析T(n)=O(n)上述算法将每一组的大小定为5,并选取75作为是否进行递归调用的分界点。这两点保证了T(n)的递归式中两个自变量之和n/5+3n/4=19n/20=εn,0<ε<1。这是使T(n)=O(n)的关键之处。当然,除了5和75之外,还有其他选择。线性时间选择n为partition的规模,n/5为找中位数的中位数x的时间,3n/4为以x为基准划分得到的两个子数组中最多的元素个数(前述证明数组缩短n/4)。两个递归划分和for8给定平面上n个点的集合S,找其中的一对点,使得在n个点组成的所有点对中,该点对间的距离最小。如何使用分治法的思想?分解:将S分解成两个子集S1和S2,每个子集约为n/2个点。求解子问题:在每个子集中递归求解最接近的点对。合并:如何进行?最接近点对问题
将每个点与其它n-1个点的距离算出,即可找出具有最小距离的两个点,但需要O(n2)的时间复杂度。9最接近点对问题用x轴上某个点m将S划分为两个子集S1和S2
,基于平衡子问题的思想,用S中各点坐标的中位数来作分割点。O(n),上一节递归地在S1和S2上找出其最接近点对{p1,p2}和{q1,q2},并设d=min{|p1-p2|,|q1-q2|},S中的最接近点对或者是{p1,p2},或者是{q1,q2},或者是某个{p3,q3},其中p3∈S1且q3∈S2。能否在线性时间内找到p3,q3?先来考虑一维的情形。此时,S中的n个点退化为x轴上的n个实数x1,x2,…,xn。最接近点对即为这n个实数中相差最小的两个实数。排序加一次线性扫描即可10最接近点对问题如果S的最接近点对是{p3,q3},即|p3-q3|<d,则p3和q3两者与m的距离都不超过d,即p3∈(m-d,m],q3∈(m,m+d]。由于在S1中,每个长度为d的半闭区间至多包含S中的一个点(否则必有两点距离小于d),并且m是S1和S2的分割点,因此(m-d,m]中至多包含S中的一个点,而且如果(m-d,m]中有S中的点,则此点就是S1中最大点。同理q3
是S2中的最小点。因此,用线性时间就能找到区间(m-d,m]和(m,m+d]中所有点,即p3和q3。从而用线性时间就可以将S1的解和S2的解合并成为S的解。算法的计算时间:n<4时一定有一边n<211下面考虑二维的情形选取一垂直线l:x=m来作为分割直线。其中m为S中各点x坐标的中位数。由此将S分割为S1和S2。O(n)递归地在S1和S2上找出其最小距离d1和d2,并设d=min{d1,d2},S中的最接近点对或者是d,或者是某个{p,q},其中p∈P1且q∈P2。其中P1、P2分别表示直线l左边和右边的宽为d的两个垂直长条。能否在线性时间内找到p,q?最接近点对问题12最接近点对的候选者有多少对?考虑P1中任意一点p,它若与P2中的点q构成最接近点对的候选者,则必有distance(p,q)<d。满足这个条件的P2中的点一定落在一个d×2d的矩形R中,见(图2-10)。由d的意义可知,P2中任何两个S中的点的距离都不小于d。由此可以推出矩形R中最多只有6个S中的点。因此,在分治法的合并步骤中最多只需要检查6×n/2=3n个候选者。用鸽舍原理证明R中最多有6个S中的点(P38)。最接近点对问题13要检查哪6个点?可以将p和P2中所有S2的点投影到垂直线l上。由于能与p点一起构成最接近点对候选者的S2中的点一定在矩形R中,所以它们在直线l上的投影点距p在l上投影点的距离小于d。因此,若将P1和P2中所有S中的点按其y坐标排好序,则对P1中所有点,对排好序的点列作一次扫描,就可以找出所有最接近点对的候选者。对P1中每一点最多只要检查P2中排好序的相继6个点。最接近点对问题14算法的主要步骤与算法实现:P39-43最接近点对问题复杂度分析1、找X中位数O(n)2、递归二分组2T(n/2)3、求dO(1)4、P1和P2内点按Y排序O(nlogn)5、评候选点对O(n)6、求最近对O(1)15循环赛日程表分治法不仅可以用来设计算法,在实际应用各领域应用都很广泛2的k次方个运动员进行循环赛1、每个选手必须与其它n-1个选手各赛一次2、每个选手一天只能赛一次3、n-1天完成16选手第一天第二天第三天第四天第五天第六天第七天12345678选手第一天第二天第三天第四天第五天第六天第七天1221345678选手第一天第二天第三天第四天第五天第六天第七天122131
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 计生要点知识试题及答案呈现
- 哥舒歌专项试题及答案
- 计生领域新知识试题及答案解析
- 财政票据法测试题及答案分享
- 2026年电力企业安全员业务考试试卷试题及答案
- 2026年统计专业技术中级资格考试(统计工作实务)模拟试题及答案
- 2026年卫健系统新员工岗前考试题(附答案)
- 2026年水利安管人员C证章节专项考试试卷及答案
- 2026年考研英语词汇记忆法专项练习
- 2026年上海市卢湾区法检系统书记员招聘笔试备考题库及答案详解
- 2026秋季学期新教材译林版(三起)六年级上册英语Unit 1 Try your best 教案(3课时)
- 2026年秋季开学第一课:新时代青年使命
- 绵阳英才中学2025初一入学语文分班考试真题含答案
- 2026年新教材译林版九年级上册英语:全册单词+短语详解(知识清单)
- 新二升三暑假英语26个字母每日一练过关练22天
- 2026秋西师大版小学数学五年级(新教材)上册教学计划附教学进度表
- 2026年高校行政管理岗招聘笔试典型试题及要点含答案
- 光伏施工方案范文模板
- 2026-2030中国乳胶医用手套行业市场发展趋势与前景展望战略分析研究报告
- 2026年时事政治考试题库及答案(100题)
- 2026智慧灯杆商业化模式评估及城市更新与基础设施REITs报告
评论
0/150
提交评论