资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,分,治,治,法,法,大,大,整,整,数,数,的,的,乘,乘,法,法,请,设,设,计,计,一,一,个,个,有,有,效,效,的,的,算,算,法,法,,,,,可,可,以,以,进,进,行,行,两,两,个,个n,位,位,大,大,整,整,数,数,的,的,乘,乘,法,法,运,运,算,算,小,学,学,的,的,方,方,法,法,:,:O(n,2,),效,率,率,太,太,低,低,分,治,治,法,法:,X=,Y=,X=a2,n/2,+bY=c2,n/2,+d,XY=ac2,n,+(ad+bc)2,n/2,+bd,a,b,c,d,复杂度分析,T(n)=O(n,2,),没有改进,分治法,大,整,整数的,乘,乘法,请设计,一,一个有,效,效的算,法,法,可,以,以进行,两,两个n,位,位大整,数,数的乘,法,法运算,小学的,方,方法:O(n,2,),效率太,低,低,分治法:,XY=ac2,n,+(ad+bc)2,n/2,+bd,为了降,低,低时间,复,复杂度,,,,必须,减,减少乘,法,法的次,数,数。,XY=ac2,n,+(a-b)(d-c)+ac+bd)2,n/2,+bd,XY=ac2,n,+(a+b)(d+c)-ac-bd)2,n/2,+bd,复杂度分析,T(n)=O(n,log3,)=O(n,1.59,),较大的改进,细节问,题,题,:两个XY的,复,复杂度,都,都是,O(n,log3,),,但考,虑,虑到a+c,b+d,可,可能得,到,到m+1位的,结,结果,,使,使问题,的,的规模,变,变大,,故,故不选,择,择第2,种,种方案,。,。,分治法,循,环,环赛日,程,程表,设计一,个,个满足,以,以下要,求,求的比,赛,赛日程,表,表:,(1),每,每个选,手,手必须,与,与其他n-1,个,个选手,各,各赛一,次,次;,(2),每,每个选,手,手一天,只,只能赛,一,一次;,(3),循,循环赛,一,一共进,行,行n-1天。,按分治,策,策略,,将,将所有,的,的选手,分,分为两,半,半,n,个,个选手,的,的比赛,日,日程表,就,就可以,通,通过为n/2,个,个选手,设,设计的,比,比赛日,程,程表来,决,决定。,递,递归地,用,用对选,手,手进行,分,分割,,直,直到只,剩,剩下2,个,个选手,时,时,比,赛,赛日程,表,表的制,定,定就变,得,得很简,单,单。这,时,时只要,让,让这2,个,个选手,进,进行比,赛,赛就可,以,以了。,1,2,3,4,5,6,7,8,2,1,4,3,6,5,8,7,3,4,1,2,7,8,5,6,4,3,2,1,8,7,6,5,5,6,7,8,1,2,3,4,6,5,8,7,2,1,4,3,7,8,5,6,3,4,1,2,8,7,6,5,4,3,2,1,分治法,线,性,性时间,选,选择,给定线,性,性序集,中,中n个,元,元素和,一,一个整,数,数k,1k,n,,要,要求找,出,出这n,个,个元素,中,中第k,小,小的元,素,素,template,Type,RandomizedSelect,(Typea,int p,int r,int k),if(p=r)return ap;,inti=RandomizedPartition(a,p,r),j=i-p+1;,if(k=j)return RandomizedSelect(a,p,i,k);,else returnRandomizedSelect(a,i+1,r,k-j);,在最坏,情,情况下,,,,算法,randomizedSelect,需要O(n,2,)计算,时,时间,但可以,证,证明,,算,算法,randomizedSelect,可以,在,在O(n)平,均,均时,间,间内,找,找出n个,输,输入,元,元素,中,中的,第,第k,小,小元,素,素。,分治,法,法,线,性,性时,间,间选,择,择,如果,能,能在,线,线性,时,时间,内,内找,到,到一,个,个划,分,分基,准,准,,使,使得,按,按这,个,个基,准,准所,划,划分,出,出的2个,子,子数,组,组的,长,长度,都,都至,少,少为,原,原数,组,组长,度,度的,倍(01,是,是某,个,个正,常,常数),,那,那么,就,就可,以,以,在最,坏,坏情,况,况下,用O(n)时,间,间完,成,成选,择,择任,务,务。,例如,,,,若,=9/10,,,,算,法,法递,归,归调,用,用所,产,产生,的,的子,数,数组,的,的长,度,度至,少,少缩,短,短1/10。,所,所以,,,,在,最,最坏,情,情况,下,下,,算,算法,所,所需,的,的计,算,算时,间,间T(n)满,足,足递,归,归式T(n),T(9n/10)+O(n),。,。,由,由此,可,可得T(n)=O(n)。,将n,个,个输,入,入元,素,素划,分,分成,n/5,个,组,组,,每,每组5个,元,元素,,,,只,可,可能,有,有一,个,个组,不,不是5个,元,元素,。,。用,任,任意,一,一种,排,排序,算,算法,,,,将,每,每组,中,中的,元,元素,排,排好,序,序,,并,并取,出,出每,组,组的,中,中位,数,数,,共,共n/5,个,个。,递归,调,调用,select,来找,出,出这,n/5,个元,素,素的,中,中位,数,数。,如,如果,n/5,是偶,数,数,,就,就找,它,它的,2个中位,数,数中较大,的,的一个。,以,以这个元,素,素作为划,分,分基准。,分治法,线性时,间,间选择,设所有元,素,素互不相,同,同。在这,种,种情况下,,,,找出的,基,基准x至,少,少比3(n-5)/10个,元,元素大,,因,因为在每,一,一组中有2个元素,小,小于本组,的,的中位数,,,,而n/5个中位,数,数中又有(n-5)/10,个,个小于基,准,准x。同,理,理,基准x也至少,比,比3(n-5)/10个元,素,素小。而,当,当n75时,3(n-5)/10,n/4,所,所以按此,基,基准划分,所,所得的2,个,个子数组,的,的长度都,至,至少缩短1/4。,Type,Select,(Type a,int p,int r,intk),if(r-p75),用某个简,单,单排序算,法,法对数组ap:r排序;,return ap+k-1;,;,for(int i=0;i=(r-p-4)/5;i+),将ap+5*i至ap+5*i+4,的,的第3小,元,元素,与ap+i交,换,换位置;,/找中,位,位数的中,位,位数,r-p-4,即,即上面所,说,说的n-5,Typex=Select(a,p,p+(r-p-4)/5,(r-p-4)/10);,inti=Partition(a,p,r,x),j=i-p+1;,if(k=j)returnSelect(a,p,i,k);,elsereturnSelect(a,i+1,r,k-j);,复杂度分析,T(n)=,O(n),上述算法,将,将每一组,的,的大小定,为,为5,并,选,选取75,作,作为是否,作,作递归调,用,用的分界,点,点。这2,点,点保证了T(n),的,的递归式,中,中2个自,变,变量之和n/5+3n/4=19n/20=,n,01,。,。这是使T(n)=O(n)的关键,之,之处。当,然,然,除了5和75,之,之外,还,有,有其他选,择,择。,动态规,划,划0-1,背,背包问,题,题,给定n 种,物,物品和,一,一背包,。,。物品i,的,的重量,是,是 w,i,,其价,值,值为v,i,,背包,的,的容量,为,为 C,。,。问应,如,如何选,择,择装入,背,背包的,物,物品,,使,使得装,入,入背包,中,中物品,的,的总价,值,值最大?,0-1背,包,包问,题,题是,一,一个,特,特殊,的,的整,数,数规,划,划问,题,题。,动态,规,规划,0-1,背,背包,问,问题,设所,给,给0-1,背,背包,问,问题,的,的,子问,题,题,的最,优,优值,为,为m(i,,,,j),,即,即m(i,,,,j)是,背,背包,容,容量,为,为j,,,,可,选,选择,物,物品,为,为i,,,,i+1,,,,,,,,n,时,时0-1,背,背包,问,问题,的,的最,优,优值,。,。由0-1背,包,包问,题,题的,最,最优,子,子结,构,构性,质,质,,可,可以,建,建立,计,计算m(i,j),的,的递,归,归式,如,如下,。,。,考虑,下,下列,实,实例,:,:,n=3,物,物品,重,重量(w,1,w,2,w,3,)=(2,3,4),物,物,品,品价,值,值(p,1,p,2,p,3,)=(1,2,5),背,背包,容,容量C=6,解:,m(1,6)=maxm(2,6),m(2,6-2)+1,m(2,6)=maxm(3,6),m(3,6-3)+2,m(2,4)=maxm(3,4),m(3,4-3)+2,m(3,6)=5,m(3,3)=0,=5,=5,=6,解向,量,量为(x,1,x,2,x,3,)=(1,0,1),m(3,4)=5,m(3,1)=0,动态,规,规划,最,最长,公,公共,子,子序,列,列,若给,定,定序,列,列,X=,x,1,x,2,x,m,,则,另,另一,序,序列,Z=,z,1,z,2,z,k,,是X的子序,列,列是指,存,存在,一,一个严格,递,递增,下,下标,序,序列,i,1,i,2,i,k,使得,对,对于所有,j,=1,2,k,有:,z,j,=x,i,j,。,例如,,,,序,列,列Z=,B,C,D,B,是序,列,列X=,A,B,C,B,D,A,B,的,子,子序,列,列,,相,相应,的,的递,增,增下,标,标序,列,列为2,3,5,7,。,。,给定2个,序,序列X和Y,,当,当另,一,一序,列,列Z,既,既是X的,子,子序,列,列又,是,是Y,的,的子,序,序列,时,时,,称,称Z,是,是序,列,列X,和,和Y,的,的,公共,子,子序,列,列,。,给定2个,序,序列X=,x,1,x,2,x,m,和Y=,y,1,y,2,y,n,,,,,找,找,出,出X,和,和Y,的,的,最,最,长,长,公,公,共,共,子,子,序,序,列,列,。,。,动,态,态,规,规,划,划,最,最,长,长,公,公,共,共,子,子,序,序,列,列,的,的,结,结,构,构,设,序,序,列,列X=,x,1,x,2,x,m,和,和Y=,y,1,y,2,y,n,的,的,最,最,长,长,公,公,共,共,子,子,序,序,列,列,为,为Z=,z,1,z,2,z,k,,,则,则,(1),若,若x,m,=y,n,,则z,k,=x,m,=y,n,,且Z,k-1,是X,m-1,和Y,n-1,的最长,公,公共子,序,序列。,(2),若,若x,m,y,n,且z,k,x,m,,则Z,是,是X,m-1,和Y的,最,最长公,共,共子序,列,列。,(3),若,若x,m,y,n,且z,k,y,n,,则Z,是,是X和Y,n-1,的最长,公,公共子,序,序列。,由此可见,,,,2个序,列,列的最长,公,公共子序,列,列包含了,这,这2个序,列,列的前缀,的,的最长公,共,共子序列,。,。因此,,最,最长公共,子,子序列问,题,题具有,最优子结,构,构性质,。,子问题的,递,递归结构,由最长公共,子,子序列问题,的,的最优子结,构,构性质建立,子,子问题最优,值,值的递归关,系,系。,用,c,i,j,记录序,列,列和的最长,公,公共子序列,的,的长度。其,中,中,X,i,=,x,1,x,2,x,i,;Y,j,=,y,1,y,2,y,j,。当,i,=0或,j,=0时,空,序,序列是 X,i,和 Y,j,的最长公共,子,子序列。故,此,此时,c,i,j,=0。其,它
展开阅读全文