算法設(shè)計(jì)與分析復(fù)習(xí)題目及答案_第1頁
算法設(shè)計(jì)與分析復(fù)習(xí)題目及答案_第2頁
算法設(shè)計(jì)與分析復(fù)習(xí)題目及答案_第3頁
算法設(shè)計(jì)與分析復(fù)習(xí)題目及答案_第4頁
算法設(shè)計(jì)與分析復(fù)習(xí)題目及答案_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、分治法1、二分搜索算法是利用(分治策略)實(shí)現(xiàn)的算法。9.實(shí)現(xiàn)循環(huán)賽日程表利用的算法是(分治策略)27、 Strassen矩陣乘法是利用(分治策略)實(shí)現(xiàn)的算法。34實(shí)現(xiàn)合并排序利用的算法是(分治策略)。實(shí)現(xiàn)大整數(shù)的乘法是利用的算法(分治策略)。17實(shí)現(xiàn)棋盤覆蓋算法利用的算法是(分治法)。29、使用分治法求解不需要滿足的條件是(子問題必須是一樣的)。不可以使用分治法求解的是(0/1背包問題)。動(dòng)態(tài)規(guī)劃下列不是動(dòng)態(tài)規(guī)劃算法基本步驟的是(構(gòu)造最優(yōu)解)下列是動(dòng)態(tài)規(guī)劃算法基本要素的是(子問題重疊性質(zhì))。下列算法中通常以自底向上的方式求解最優(yōu)解的是(動(dòng)態(tài)規(guī)劃法)備忘錄方法是那種算法的變形。(動(dòng)態(tài)規(guī)劃法)最長(zhǎng)

2、公共子序列算法利用的算法是(動(dòng)態(tài)規(guī)劃法)。矩陣連乘問題的算法可由(動(dòng)態(tài)規(guī)劃算法B)設(shè)計(jì)實(shí)現(xiàn)。實(shí)現(xiàn)最大子段和利用的算法是(動(dòng)態(tài)規(guī)劃法)。貪心算法能解決的問題:?jiǎn)卧醋疃搪窂絾栴},最小花費(fèi)生成樹問題,背包問題,活動(dòng)安排問題,不能解決的問題:N皇后問題,0/1背包問題是貪心算法的基本要素的是(貪心選擇性質(zhì)和最優(yōu)子結(jié)構(gòu)性質(zhì))。回溯法回溯法解旅行售貨員問題時(shí)的解空間樹是(排列樹)。剪枝函數(shù)是回溯法中為避免無效搜索采取的策略回溯法的效率不依賴于下列哪些因素(確定解空間的時(shí)間)分支限界法最大效益優(yōu)先是(分支界限法)的一搜索方式。分支限界法解最大團(tuán)問題時(shí),活結(jié)點(diǎn)表的組織形式是(最大堆)。分支限界法解旅行售貨員問

3、題時(shí),活結(jié)點(diǎn)表的組織形式是(最小堆)優(yōu)先隊(duì)列式分支限界法選取擴(kuò)展結(jié)點(diǎn)的原則是(結(jié)點(diǎn)的優(yōu)先級(jí))在對(duì)問題的解空間樹進(jìn)行搜索的方法中,一個(gè)活結(jié)點(diǎn)最多有一次機(jī)會(huì)成為活結(jié)點(diǎn)的是(分支限界法).從活結(jié)點(diǎn)表中選擇下一個(gè)擴(kuò)展結(jié)點(diǎn)的不同方式將導(dǎo)致不同的分支限界法,以下除(棧式分支限界法)之外都是最常見的方式.(1)隊(duì)列式(FIFO)分支限界法:按照隊(duì)列先進(jìn)先出(FIFO)原則選取下一個(gè)節(jié)點(diǎn)為擴(kuò)展節(jié)點(diǎn)。(2)優(yōu)先隊(duì)列式分支限界法:按照優(yōu)先隊(duì)列中規(guī)定的優(yōu)先級(jí)選取優(yōu)先級(jí)最高的節(jié)點(diǎn)成為當(dāng)前擴(kuò)展節(jié)點(diǎn)。(最優(yōu)子結(jié)構(gòu)性質(zhì))是貪心算法與動(dòng)態(tài)規(guī)劃算法的共同點(diǎn)。貪心算法與動(dòng)態(tài)規(guī)劃算法的主要區(qū)別是(貪心選擇性質(zhì))?;厮菟惴ê头种藿?/p>

4、法的問題的解空間樹不會(huì)是(無序樹).14哈弗曼編碼的貪心算法所需的計(jì)算時(shí)間為(B)。A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)21、下面關(guān)于NP問題說法正確的是(B)ANP問題都是不可能解決的問題BP類問題包含在NP類問題中CNP完全問題是P類問題的子集DNP類問題包含在P類問題中40、背包問題的貪心算法所需的計(jì)算時(shí)間為(B)A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)42 0-1背包問題的回溯算法所需的計(jì)算時(shí)間為(A)A、O(n2n)B、O(nlogn)C、O(2n)D、O(n).47. 背包問題的貪心算法所需的計(jì)算時(shí)間為(B)。A、O(n2n)B、O(

5、nlogn)C、O(2n)D、O(n)53采用貪心算法的最優(yōu)裝載問題的主要計(jì)算量在于將集裝箱依其重量從小到大排序,故算法的時(shí)間復(fù)雜度為(B)。A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)56、算法是由若干條指令組成的有窮序列,而且滿足以下性質(zhì)((1)輸入:有0個(gè)或多個(gè)輸入(2)輸出:至少有一個(gè)輸出(3)確定性:指令清晰,無歧義(4)有限性:指令執(zhí)行次數(shù)有限,而且執(zhí)行時(shí)間有限A(2)(3)B(1)(2)(4)C(1)(3)(4)D(2)(3)(4)57、函數(shù)32n+10nlogn的漸進(jìn)表達(dá)式是(B).A.2nB.32nC.nlognD.10nlogn59、用動(dòng)態(tài)規(guī)劃算法解決最大

6、字段和問題,其時(shí)間復(fù)雜性為(B).61、設(shè)f(N),g(N)是定義在正數(shù)集上的正函數(shù),如果存在正的常數(shù)C和自然數(shù)N),使得當(dāng)N>No時(shí)有f(N)&Cg(N),則稱函數(shù)f(N)當(dāng)N充分大時(shí)有下界g(N),記作f(N)Q(g(N),即f(N)的階(A)g(N)的階.A.不高于B.不低于C.等價(jià)于D.逼近二、填空題2、程序是算法用某種程序設(shè)計(jì)語言的具體實(shí)現(xiàn)。3、算法的“確定性”指的是組成算法的每條指令是清晰的,無歧義的。6、算法是指解決問題的一種方法或一個(gè)過程。7、從分治法的一般設(shè)計(jì)模式可以看出,用它設(shè)計(jì)出的程序一般是遞歸算法。11、計(jì)算一個(gè)算法時(shí)間復(fù)雜度通??梢杂?jì)算循環(huán)次數(shù)、基本操作

7、的頻率或計(jì)算步。14、解決0/1背包問題可以使用動(dòng)態(tài)規(guī)劃、回溯法和分支限界法,其中不需要排序的是動(dòng)態(tài)規(guī)劃,需要排序的是回溯法,分支限界法。15、使用回溯法進(jìn)行狀態(tài)空間樹裁剪分支時(shí)一般有兩個(gè)標(biāo)準(zhǔn):約束條件和目標(biāo)函數(shù)的界,N皇后問題和0/1背包問題正好是兩種不同的類型,其中同時(shí)使用約束條件和目標(biāo)函數(shù)的界進(jìn)行裁剪的是0/1背包問題,只使用約束條件進(jìn)行裁剪的是N皇后問題O30.回溯法是一種既帶有系統(tǒng)性又帶有跳躍性的搜索算法。33 .回溯法搜索解空間樹時(shí),常用的兩種剪枝函數(shù)為約束函數(shù)和限界函g。34 .任何可用計(jì)算機(jī)求解的問題所需的時(shí)間都與其規(guī)模有關(guān)。35 .快速排序算法的性能取決于劃分的對(duì)稱性。36

8、.Prim算法利用貪心策略求解最小生成樹問題,其時(shí)間復(fù)雜度是O(n2)。37 .圖的m著色問題可用回溯法求解,其解空間樹中葉子結(jié)點(diǎn)個(gè)數(shù)是mn_,解空間樹中每個(gè)內(nèi)結(jié)點(diǎn)的孩子數(shù)是mo38 若序列X=B,C,A,D,B,C,D,Y=A,C,B,A,B,D,C,D,請(qǐng)給出序列X和Y的一個(gè)最長(zhǎng)公共子序列BABCD或CaBcD或CADCD。39 用回溯法解問題時(shí),應(yīng)明確定義問題的解空間,問題的解空間至少應(yīng)包含一個(gè)(最優(yōu))解背包問題的回溯算法所需的計(jì)算時(shí)間為_o(n*2n)_,用動(dòng)態(tài)規(guī)劃算法所需的計(jì)算時(shí)間為o(minnc,2n。二、綜合題(50分)1 .寫出設(shè)計(jì)動(dòng)態(tài)規(guī)劃算法的主要步驟。問題具有最優(yōu)子結(jié)構(gòu)性質(zhì)

9、;構(gòu)造最優(yōu)值的遞歸關(guān)系表達(dá)式;3最優(yōu)值的算法描述;構(gòu)造最優(yōu)解;2 .流水作業(yè)調(diào)度問題的johnson算法的思想。令N=i|ai<b,N=i|ai>=b;將N中作業(yè)按a的非減序排序得到N',將N中作業(yè)按bi的非增序排序得到N'N'中作業(yè)接N'中作業(yè)就構(gòu)成了滿足Johnson法則的最優(yōu)調(diào)度。3 .若n=4,在機(jī)器M1和M2上加工作業(yè)i所需的時(shí)間分別為a和bi,且(a1,a2,a3,a4)=(4,5,12,10),(b1,b2,b3,b4)=(8,2,15,9)求4個(gè)作業(yè)的最優(yōu)調(diào)度方案,并計(jì)算最優(yōu)值。步驟為:N1=1,3,N2=2,4;N'=1,3

10、,N2'=4,2;最優(yōu)值為:384 .使用回溯法解0/1背包問題:n=3,C=9,V=6,10,3,W=3,4,4,其解空間有長(zhǎng)度為3的0-1向量組成,要求用一棵完全二叉樹表示其解空間(從根出發(fā),左1右0),并畫出其解空間樹,計(jì)算其最優(yōu)值及最優(yōu)解。解空間為(0,0,0),(0,1,0),(0,0,1),(1,0,0),(0,1,1),(1,0,1),(1,1,0),(1,1,1)。解空間樹為:A該問題的最優(yōu)值為:16最優(yōu)解為:(1,1,0)5.設(shè)S=X,%,Xn是嚴(yán)格遞增的有序集,利用二叉樹的結(jié)點(diǎn)來存儲(chǔ)S中的元素,在表示S的二叉搜索樹中搜索一個(gè)元素X,返回的結(jié)果有兩種情形,(1)在二叉

11、搜索樹的內(nèi)結(jié)點(diǎn)中找到X=X,其概率為bio(2)在二叉搜索樹的葉結(jié)點(diǎn)中確定XC(X,X+1),其概率為a。在表示S的二叉搜索樹T中,設(shè)存儲(chǔ)元素X的結(jié)點(diǎn)深度為C;葉結(jié)點(diǎn)(X,X+1)的結(jié)點(diǎn)深度為d,則二叉搜索樹T的平均路長(zhǎng)p為多少假設(shè)二叉搜索樹Tij=X,X+1,,X最優(yōu)值為mij,Wij=ai-1+b+b+a,則mij(1<=i<=j<=n)遞歸關(guān)系表達(dá)式為什么nn二叉樹T的平均路長(zhǎng)P=bi*(1Ci)+aj*dji1j0mij=Wij+minmik+mk+1j(1<=i<=j<=n,mii-1=0)m皿=0(i>j)6.描述0-1背包問題。已知一個(gè)背

12、包的容量為C,有n件物品,物品i的重量為W,價(jià)值為V,求應(yīng)如何選擇裝入背包中的物品,使得裝入背包中物品的總價(jià)值最大。三、簡(jiǎn)答題(30分)1 .流水作業(yè)調(diào)度中,已知有n個(gè)作業(yè),機(jī)器M1和M2上加工作業(yè)i所需的時(shí)間分別為a和bi,請(qǐng)寫出流水作業(yè)調(diào)度問題的johnson法則中對(duì)ai和bi的排序算法。(函數(shù)名可寫為sort(s,n)2 .最優(yōu)二叉搜索樹問題的動(dòng)態(tài)規(guī)劃算法(設(shè)函數(shù)名binarysearchtree)1.voidsort(flowjopes,intn)(inti,k,j,l;for(i=1;i<=n-1;i+)ag!=0)k+;if(k>n)break;ag=0)if(sk.a

13、>sj.a)k=j;swap(si.index,sk.index);swap(si.tag,sk.tag);l=i;<sj.b)k=j;swap(si.index,sk.index);ag,sk.tag);2.voidbinarysearchtree(inta,intb口,intn,int*m,int*s,int*w)inti,j,k,t,l;for(i=1;i<=n+1;i+)wii-1=ai-1;mii-1=0;for(l=0;l<=n-1;l+)Init-single-source(G,s)2. S=3. Q=VGQ<>dou=min(Q)S=SUuf

14、oreachvertex3do4四、算法理解題(本題10分)根據(jù)優(yōu)先隊(duì)列式分支限界法,求下圖中從v1點(diǎn)到v9點(diǎn)的單源最短路徑,請(qǐng)畫出求得最優(yōu)解的解空間樹。要求中間被舍棄的結(jié)點(diǎn)用x標(biāo)記,獲得中間解的結(jié)點(diǎn)用單圓圈??蚱穑顑?yōu)解用雙圓圈框起。五、算法理解題(本題5分)設(shè)有n=2k個(gè)運(yùn)動(dòng)員要進(jìn)行循環(huán)賽,現(xiàn)設(shè)計(jì)一個(gè)滿足以下要求的比賽日程表:每個(gè)選手必須與其他n-1名選手比賽各一次;每個(gè)選手一天至多只能賽一次;循環(huán)賽要在最短時(shí)間內(nèi)完成。(1)如果n=*循環(huán)賽最少需要進(jìn)行幾天;(2)當(dāng)n=23=8時(shí),請(qǐng)畫出循環(huán)賽日程表。六、算法設(shè)計(jì)題(本題15分)分別用貪心算法、動(dòng)態(tài)規(guī)劃法、回溯法設(shè)計(jì)0-1背包問題。要求:

15、說明所使用的算法策略;寫出算法實(shí)現(xiàn)的主要步驟;分析算法的時(shí)間。七、算法設(shè)計(jì)題(本題10分)通過鍵盤輸入一個(gè)高精度的正整數(shù)n(n的有效位數(shù)0240),去掉其中任意s個(gè)數(shù)字后,剩下的數(shù)字按原左右次序?qū)⒔M成一個(gè)新的正整數(shù)。編程對(duì)給定的n和s,尋找一種方案,使得剩下的數(shù)字組成的新數(shù)最小?!緲永斎搿?78543S=4【樣例輸出】1325分,每小題5分)1、 分治法的基本思想是將一個(gè)規(guī)模為n的問題分解為k個(gè)規(guī)模較小的子問題,這些子問題互相獨(dú)立且與原問題相同;對(duì)這k個(gè)子問題分別求解。如果子問題的規(guī)模仍然不夠小,則再劃分為k個(gè)子問題,如此遞歸的進(jìn)行下去,直到問題規(guī)模足夠小,很容易求出其解為止;將求出的小規(guī)模

16、的問題的解合并為一個(gè)更大規(guī)模的問題的解,自底向上逐步求出原來問題的解。2、“最優(yōu)化原理”用數(shù)學(xué)化的語言來描述:假設(shè)為了解決某一優(yōu)化問題,需要依次作出n個(gè)決策D1,D2,Dn,如若這個(gè)決策序列是最優(yōu)的,對(duì)于任何一個(gè)整數(shù)k,1<k<n,不論前面k個(gè)決策是怎樣的,以后的最優(yōu)決策只取決于由前面決策所確定的當(dāng)前狀態(tài),即以后的決策Dk+1,Dk+2,,Dn也是最優(yōu)的。3、某個(gè)問題的最優(yōu)解包含著其子問題的最優(yōu)解。這種性質(zhì)稱為最優(yōu)子結(jié)構(gòu)性質(zhì)。4、 回溯法的基本思想是在一棵含有問題全部可能解的狀態(tài)空間樹上進(jìn)行深度優(yōu)先搜索,解為葉子結(jié)點(diǎn)。搜索過程中,每到達(dá)一個(gè)結(jié)點(diǎn)時(shí),則判斷該結(jié)點(diǎn)為根的子樹是否含有問題

17、的解,如果可以確定該子樹中不含有問題的解,則放棄對(duì)該子樹的搜索,退回到上層父結(jié)點(diǎn),繼續(xù)下一步深度優(yōu)先搜索過程。在回溯法中,并不是先構(gòu)造出整棵狀態(tài)空間樹,再進(jìn)行搜索,而是在搜索過程,逐步構(gòu)造出狀態(tài)空間樹,即邊搜索,邊構(gòu)造。5、 P(Polynomial問題):也即是多項(xiàng)式復(fù)雜程度的問題。NP就是Non-deterministicPolynomial的問題,也即是多項(xiàng)式復(fù)雜程度的非確定性問題。NPC(NPComplete)問題,這種問題只有把解域里面的所有可能都窮舉了之后才能得出答案,這樣的問題是NP里面最難的問題,這種問題就是NPC'可題。20分,每小題5分)1、n后問題回溯算法(1)

18、!Mj&&!Li+j&&!Ri-j+N(2) Mj=Li+j=Ri-j+N=1;(3) try(i+1,M,L,R,A)(4) Aij=0(5) Mj=Li+j=Ri-j+N=02、數(shù)塔問題。(1)c<=r(2)trc+=tr+1c(3)trc+=tr+1c+13、 Hanoi算法( 1) move(a,c)( 2) Hanoi(n-1,a,c,b)(3) Move(a,c)4、(1) pv=NIL(2) pv=u(3) v C adju(4) Relax(u,v,w)四、算法理解題(本題10分)五、(1) 8天(2分);(2)當(dāng)n=23=8時(shí),循環(huán)賽日程

19、表(3分)六、算法設(shè)計(jì)題(本題15分)1 2 3 4 5 6 78(1)貪心算法 O (nlog (n)首先計(jì)算每種物品單位重量的價(jià)值 單位重量?jī)r(jià)值最高的物品裝入背包。若) 品總重量未超過C,則選擇單位重 策略一直地進(jìn)行下去,直到背包裝滿為.止 具體算法可描述如下:o3 6 5 8575 6 7 8 1 2 3:后,背包內(nèi)的物;地裝入背包。依此3 4口,口貪心選擇策解】將盡可能多的voidKnapsack(intn,floatM,floatv口,floatw,floatx)Sort(n,v,w);inti;for(i=1;i<=n;i+)xi=0;floatc=M;for(i=1;i&l

20、t;=n;i+)if(wi>c)break;xi=1;c-=wi;if(i<=n)xi=c/wi;(2)動(dòng)態(tài)規(guī)劃法O(nc)m(i,j)是背包容量為j,可選擇物品為i,i+1,,n時(shí)0-1背包問題的最優(yōu)值。由0-1背包問題的最優(yōu)子結(jié)構(gòu)性質(zhì),可以建立計(jì)算m(i,j)的遞歸式如下。voidKnapSack(intv口,intw口,intc,intn,intm11)intjMax=min(wn-1,c);for(j=0;j<=jMax;j+)/*m(n,j)=00=<j<wn*/mnj=0;for(j=wn;j<=c;j+)/*m(n,j)=vnj>=wn*

21、/mnj=vn;for(i=n-1;i>1;i-)intjMax=min(wi-1,c);for(j=0;j<=jMax;j+)/*m(i,j)=m(i+1,j)0=<j<wi*/mij=mi+1j;for(j=wi;j<=c;j+)/*m(n,j)=vnj>=wn*/mij=max(mi+1j,mi+1j-wi+vi);m1c=m2c;if(c>=w1)m1c=max(m1c,m2c-w1+v1);(3)回溯法O(2n)cw:當(dāng)前重量cp:當(dāng)前價(jià)值bestp:當(dāng)前最優(yōu)值voidbacktrack(inti)包問題的貪心算法voidKnapsack(i

22、ntn,floatM,floatv,floatw,floatx口)Sort(n,v,w);inti;for(i=1;i<=n;i+)xi=0;floatc=M;for(i=1;i<=n;i+)if(wi>c)break;xi=1;c-=wi;if(i<=n)xi=c/wi;2.最大子段和:動(dòng)態(tài)規(guī)劃算法intMaxSum(intn,inta)intsum=0,b=0;速排序template<classType>voidQuicksort(Typea,intp,intr)if(p<r)intq=Partition(a,p,r);Quicksort(a,p,

23、q-1);列問題Template<classType>voidperm(Typelist口,intk,intm)定已按升序排好序的n個(gè)元素a0:n-1,現(xiàn)要在這n個(gè)元素中找出一特定元素x。據(jù)此容易設(shè)計(jì)出二分搜索算法:template<classType>intBinarySearch(Typea口,constType&x,intl,intr)while(l<=r)intm=(l+r)/2);if(x=am)returnm;if(x<am)r=m-1;elsel=m+1;return-1;6、合并排序描述如下:template<classType

24、>voidMergesort(Typea,intleft,intright)if(left<right)inti=(left+right)/2;Mergesort(a,left,i);Mergesort(a,i+1,right);Merge(a,b,left,i,right);計(jì)算機(jī)求解問題的步驟:1、問題分析2、數(shù)學(xué)模型建立3、算法設(shè)計(jì)與選擇4、算法指標(biāo)5、算法分析6、算法實(shí)現(xiàn)7、程序調(diào)試8、結(jié)果整理文檔編制2 .算法定義:算法是指在解決問題時(shí),按照某種機(jī)械步驟一定可以得到問題結(jié)果的處理過程3 .算法的三要素1、操作2、控制結(jié)構(gòu)3、數(shù)據(jù)結(jié)構(gòu)13.分治法與動(dòng)態(tài)規(guī)劃法的相同點(diǎn)是:將待

25、求解的問題分解成若干個(gè)子問題,先求解子問題,然后從這些子問題的解得到原問題的解。兩者的不同點(diǎn)是:適合于用動(dòng)態(tài)規(guī)劃法求解的問題,經(jīng)分解得到的子問題往往不是互相獨(dú)立的。而用分治法求解的問題,經(jīng)分解得到的子問題往往是互相獨(dú)立的?;厮莘ㄖ谐R姷膬深惖湫偷慕饪臻g樹是子集樹和排列樹。22.請(qǐng)敘述動(dòng)態(tài)規(guī)劃算法與貪心算法的異同。共同點(diǎn):都需要最優(yōu)子結(jié)構(gòu)性質(zhì),都用來求有優(yōu)化問題。不同點(diǎn):動(dòng)態(tài)規(guī)劃:每一步作一個(gè)選擇一依賴于子問題的解。貪心方法:每一步作一個(gè)選擇一不依賴于子問題的解。動(dòng)態(tài)規(guī)劃方法的條件:子問題的重疊性質(zhì)??捎秘澬姆椒ǖ臈l件:最優(yōu)子結(jié)構(gòu)性質(zhì);貪心選擇性質(zhì)。動(dòng)態(tài)規(guī)劃:自底向上求解;貪心方法:自頂向下求解

26、。可用貪心法時(shí),動(dòng)態(tài)規(guī)劃方法可能不適用;可用動(dòng)態(tài)規(guī)劃方法時(shí),貪心法可能不適用。23 .請(qǐng)說明動(dòng)態(tài)規(guī)劃方法為什么需要最優(yōu)子結(jié)構(gòu)性質(zhì)。答:最優(yōu)子結(jié)構(gòu)性質(zhì)是指大問題的最優(yōu)解包含子問題的最優(yōu)解。動(dòng)態(tài)規(guī)劃方法是自底向上計(jì)算各個(gè)子問題的最優(yōu)解,即先計(jì)算子問題的最優(yōu)解,然后再利用子問題的最優(yōu)解構(gòu)造大問題的最優(yōu)解,因此需要最優(yōu)子結(jié)構(gòu).24 .請(qǐng)說明:(1)優(yōu)先隊(duì)列可用什么數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)(2)優(yōu)先隊(duì)列插入算法基本思想(3)優(yōu)先隊(duì)列插入算法時(shí)間復(fù)雜度答:(1)堆。(2)在小根堆中,將元素x插入到堆的末尾,然后將元素x的關(guān)鍵字與其雙親的關(guān)鍵字比較,若元素x的關(guān)鍵字小于其雙親的關(guān)鍵字,則將元素x與其雙親交換,然后再將元

27、素x與其新雙親的關(guān)鍵字相比,直到元素x的關(guān)鍵字大于雙親的關(guān)鍵字,或元素x到根為止。(3)O(logn)26.在算法復(fù)雜性分析中,QQ、這三個(gè)記號(hào)的意義是什么在忽略常數(shù)因子的情況下,QQ、分別提供了算法運(yùn)行時(shí)間的什么界如果存在兩個(gè)正常數(shù)c和N0,對(duì)于所有的N>N0,有|f(忖|&qg(N,則記作:f(N)=qg(N)。這時(shí)我們說f(N)的階不高于g(N)的階。若存在兩個(gè)正常數(shù)C和自然數(shù)NO,使得當(dāng)N>N0時(shí)有|f(N)|>Cg(N)|,記為f(N)=(g(N)。這時(shí)我們說f(N)的階不低于g(N)的階。如果存在正常數(shù)c1,c2和n0,對(duì)于所有的nn0,有c1|g(N)|

28、<|f(N)|<c2|g(N)|則記作 f (憤二(g,( N)OQ、日分別提供了算法運(yùn)行時(shí)間的上界、下界、平均五、算法設(shè)計(jì)與分析題1.用動(dòng)態(tài)規(guī)劃策略求解最長(zhǎng)公共子序列問題:(1)給出計(jì)算最優(yōu)值的遞歸方程。(2)給定兩個(gè)序列X=B,C,D,A,Y=A,B,C,B,請(qǐng)采用動(dòng)態(tài)規(guī)劃策略求出其最長(zhǎng)公共子序列,要求給出過程。ABC最長(zhǎng)公共子序列: B C 2.對(duì)下列各組函數(shù)f (n)和 g (n),確定 f (n) = O (g (n)或 f (n) = Q (g (n)或f(n) = a (g(n),并簡(jiǎn)要說明理由。 f(n)=2 n;g(n)=n! f(n)=. ng (n)=log

29、n 2(3) f(n)=100g(n)=log100 f(n)=n3;g(n)= 3(5) f(n)=3 ng(n)=2 n(1)f(n) = O(g(n)(2)f(n) =Q (g(n)(3)f(n) =o (g(n)因?yàn)間(n)的階比f(n)的階高因?yàn)間(n)的階比f(n)的階低因?yàn)間(n)與f(n)同階。(4)f(n)=O(g(n)因?yàn)間(n)的階比f(n)的階高。(5)f(n)=Q(g(n)因?yàn)間(n)的階比f(n)的階低。3 .對(duì)下圖所示的連通網(wǎng)絡(luò)G用克魯斯卡爾(Kruskal)算法求G的最小生成樹T,請(qǐng)寫出在算法執(zhí)行過程中,依次加入T的邊集TE中的邊。說明該算法的貪心策略和算法的基

30、本思想,并簡(jiǎn)要分析算法的時(shí)間復(fù)雜度TE=(3,4),(2,3),(1,5),(4,6)(4,5)貪心策略是每次都在連接兩個(gè)不同連通分量的邊中選權(quán)值最小的邊?;舅枷耄菏紫葘D中所有頂點(diǎn)都放到生成樹中,然后每次都在連接兩個(gè)不同連通分量的邊中選權(quán)值最小的邊,將其放入生成樹中,直到生成樹中有n-1條邊。時(shí)間復(fù)雜度為:O(eloge)4 .請(qǐng)用分治策略設(shè)計(jì)遞歸的歸并排序算法,并分析其時(shí)間復(fù)雜性(要求:分別給出divide、conquer、combine這三個(gè)階段所花的時(shí)間,并在此基礎(chǔ)上列出遞歸方程,最后用套用公式法求出其解的漸進(jìn)階)。答:Template<classType>voidMer

31、geSort(Typea,intleft,intright)if(left<right)inti=(left+right)/2;MergeSort(a,left,i);MergeSort(a,i+1,right);Merge(a,b,left,right);Copy(a,b,left,right);Divide階段的時(shí)間復(fù)雜性:O(1)Conquer階段的時(shí)間復(fù)雜性:2T(n)Combine階段的時(shí)間復(fù)雜性:(9(n)用套用公式法:a=2,b=2,nlogba=n,f(n)=n,因?yàn)閒(n)與nlogba同階,.T(n)=O(nlogn)12345675、設(shè)有n=2k個(gè)運(yùn)動(dòng)員要進(jìn)行循環(huán)賽

32、,現(xiàn)設(shè)計(jì)一個(gè)滿足以下要求的比賽日程表1234567821436587341278564321876556781234658721437856341287654321每每循(2)6、考最優(yōu)的頻(1)個(gè)選手必須與其他n-1名選手比賽各一次個(gè)選手一天至多只能賽一次;環(huán)賽要在最短時(shí)間內(nèi)完成.(4分)循環(huán)賽最少需要進(jìn)行(n-1)天.(6分)當(dāng)n=23=8時(shí),請(qǐng)畫出循環(huán)賽日程表:慮用哈夫曼算法來找字符a,b,c,d,e,f的編碼。這些字符出現(xiàn)在文件中數(shù)之比為20:10:6:4:44:16。要求:(4分)簡(jiǎn)述使用哈夫曼算法構(gòu)造最優(yōu)編碼的基本步驟;(2)(5分)構(gòu)造對(duì)應(yīng)的哈夫曼樹,并據(jù)此給出a,b,c,d,e

33、,f的一種最優(yōu)編碼。解:1)、哈夫曼算法是構(gòu)造最優(yōu)編碼樹的貪心算法。其基本思想是,首先所有字符對(duì)應(yīng)n棵樹構(gòu)成的森林,每棵樹只有一個(gè)結(jié)點(diǎn),根權(quán)為對(duì)應(yīng)字符的頻率。然后,重復(fù)下列過程n-1次:將森林中的根權(quán)最小的兩棵樹進(jìn)行合并產(chǎn)生一個(gè)新樹,該新樹根的兩個(gè)子樹分別是參與合并的兩棵子樹,根權(quán)為兩個(gè)子樹根權(quán)之和。2)、根據(jù)題中數(shù)據(jù)構(gòu)造哈夫曼樹如下圖所示。由此可以得出a,b,c,d,e,f的一組最優(yōu)的編碼:01,0000,00010,00011,1,001。7 .考慮在序列A1.n中找最大最小元素的問題。一個(gè)分治算法描述如下:如果n<2就直接求解。否則,將序列等分成兩個(gè)子序列A1.n/2和An/2+1.n,分別找出這兩子序列的最大最小元素x1,y1和x2,y2;然后據(jù)此求

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論