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

下載本文檔

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

文檔簡介

分治法1、二分搜索算法是利用(分治策略)實現(xiàn)的算法。TOC\o"1-5"\h\z9.實現(xiàn)循環(huán)賽日程表利用的算法是(分治策略 )27、Strassen矩陣乘法是利用(分治策略)實現(xiàn)的算法。34.實現(xiàn)合并排序利用的算法是(分治策略 )。實現(xiàn)大整數(shù)的乘法是利用的算法(分治策略 )。17.實現(xiàn)棋盤覆蓋算法利用的算法是(分治法 )。29、使用分治法求解不需要滿足的條件是(子問題必須是一樣的)。不可以使用分治法求解的是(0/1背包問題)。動態(tài)規(guī)劃下列不是動態(tài)規(guī)劃算法基本步驟的是(構(gòu)造最優(yōu)解 )下列是動態(tài)規(guī)劃算法基本要素的是(子問題重疊性質(zhì) )。下列算法中通常以自底向上的方式求解最優(yōu)解的是(動態(tài)規(guī)劃法)備忘錄方法是那種算法的變形。(動態(tài)規(guī)劃法 )最長公共子序列算法利用的算法是(動態(tài)規(guī)劃法 )。矩陣連乘問題的算法可由(動態(tài)規(guī)劃算法 B)設計實現(xiàn)。實現(xiàn)最大子段和利用的算法是(動態(tài)規(guī)劃法 )。貪心算法能解決的問題:單源最短路徑問題,最小花費生成樹問題,背包問題,活動安排問題,不能解決的問題:N皇后問題,0/1背包問題是貪心算法的基本要素的是(貪心選擇性質(zhì)和最優(yōu)子結(jié)構(gòu)性質(zhì))?;厮莘ɑ厮莘ń饴眯惺圬泦T問題時的解空間樹是(排列樹)。剪枝函數(shù)是回溯法中為避免無效搜索采取的策略回溯法的效率不依賴于下列哪些因素(確定解空間的時間)分支限界法最大效益優(yōu)先是(分支界限法)的一搜索方式。TOC\o"1-5"\h\z分支限界法解最大團問題時,活結(jié)點表的組織形式是(最大堆 )。分支限界法解旅行售貨員問題時,活結(jié)點表的組織形式是(最小堆)優(yōu)先隊列式分支限界法選取擴展結(jié)點的原則是(結(jié)點的優(yōu)先級 )在對問題的解空間樹進行搜索的方法中 ,一個活結(jié)點最多有一次機會成為活結(jié)點的是( 分支限界法 ).從活結(jié)點表中選擇下一個擴展結(jié)點的不同方式將導致不同的分支限界法 ,以下除(棧式分支限界法 )之外都是最常見的方式 .(1)隊列式(FIFO分支限界法:按照隊列先進先出(FIFQ原則選取下一個節(jié)點為擴展節(jié)點。(2)優(yōu)先隊列式分支限界法:按照優(yōu)先隊列中規(guī)定的優(yōu)先級選取優(yōu)先級最高的節(jié)點成為當前擴展節(jié)點。(最優(yōu)子結(jié)構(gòu)性質(zhì))是貪心算法與動態(tài)規(guī)劃算法的共同點。貪心算法與動態(tài)規(guī)劃算法的主要區(qū)別是(貪心選擇性質(zhì) )?;厮菟惴ê头种藿绶ǖ膯栴}的解空間樹不會是 (無序樹).14.哈弗曼編碼的貪心算法所需的計算時間為( 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、背包問題的貪心算法所需的計算時間為( B)A、O(n2n) B、O(nlogn)C、O(2n)D、O(n)42.0-1背包問題的回溯算法所需的計算時間為(A)A、O(n2n) BO(nlogn)GO(2n)D、O(n).47.背包問題的貪心算法所需的計算時間為(B)。A、O(n2n) BO(nlogn)GO(2n) D、O(n)53.采用貪心算法的最優(yōu)裝載問題的主要計算量在于將集裝箱依其重量從小到大排序,故算法的時間復雜度為 (B )。A、O(n2n) BO(nlogn)GO(2n)DO(n)56、算法是由若干條指令組成的有窮序列,而且滿足以下性質(zhì)(D)(1)輸入:有0個或多個輸入(2)輸出:至少有一個輸出(3)確定性:指令清晰,無歧義(4)有限性:指令執(zhí)行次數(shù)有限,而且執(zhí)行時間有限A⑴(2)(3) B(1)(2)(4) C(1)(3)(4)D⑴(2)(3)(4)57、函數(shù)32n+10nlogn的漸進表達式是(B).A.2n B.321 C.nlog1 D.10n10gq59、用動態(tài)規(guī)劃算法解決最大字段和問題,其時間復雜性為 (B).61、設f(N),g(N心定義在正數(shù)集上的正函數(shù),如果存在正的常數(shù)C和自然數(shù)N。,使得當NJ>No時有f(N)<Cg(N稱函數(shù)f(N)當N充分大時有下界g(N),記作f(N)CO(g(N)),即f(N)的階(A )g(N)的階.A.不高于B.不低于C等價于D.逼近二、填空題2、程序是 篁法用某種程序設計語言的具體實現(xiàn)。3、算法的確定性”指的是組成算法的每條 指令是清晰的、無歧義的。6、算法是指解決問題的―一種方法 或一個時程 。7、從分治法的一般設計模式可以看出, 用它設計出的程序一般是 涕歸算法—。11、計算一個算法時間復雜度通??梢杂嬎?循環(huán)次數(shù)、基本操作的頻率或計算步。14、解決0/1背包問題可以使用動態(tài)規(guī)劃、回溯法和分支限界法,其中不需要排序的是 動態(tài)規(guī)劃 ,需要排序的是 回溯法,分支限界法。15、使用回溯法進行狀態(tài)空間樹裁剪分支時一般有兩個標準: 約束條件和目標函數(shù)的界,N皇后問題和0/1背包問題正好是兩種不同的類型,其中同時使用約束條件和目標函數(shù)的界進行裁剪的是 0/1背包問題 ,只使用約束條件進行裁剪的是 N皇后問題。30.回溯法是一種既帶有 系統(tǒng)性又帶有 跳躍性的搜索算法。.回溯法搜索解空間樹時,常用的兩種剪枝函數(shù)為 約束函數(shù)和限界函數(shù) 。.任何可用計算機求解的問題所需的時間都與其 規(guī)模有關(guān)。.快速排序算法的性能取決于 劃分的對稱性o.Prim算法利用貪心策略求解 最小牛成樹 問期,其時間復雜度是O(n2)。.圖的m著色問題可用回溯法求解,其解空間樹中葉子結(jié)點個數(shù)是mn解空間樹中每個內(nèi)2^點的孩子數(shù)是 m。.若序列X={B,C,A,D,B,C,D}Y={A,C,B,A,B,D,C,D}請給出序列X和Y的一個最長公共子序列{BABCD^{CaBcD^{CADCD。.用回溯法解問題時,應明確定義問題的解空間,問題的解空間至少應包含一個(最優(yōu))解背包問題的回溯算法所需的計算時間為 o(n*2n),用動態(tài)規(guī)劃算法所需的計算時間為 o(min{nc,2n}。二、綜合題(50分).寫出設計動態(tài)規(guī)劃算法的主要步驟。①問題具有最優(yōu)子結(jié)構(gòu)性質(zhì);②構(gòu)造最優(yōu)值的遞歸關(guān)系表達式; 3最優(yōu)值的算法描述;④構(gòu)造最優(yōu)解;.流水作業(yè)調(diào)度問題的johnson算法的思想。①令N[二{i|ai<bi},N2={i|ai>=b};②將Ni中作業(yè)按a的非減序排序得到Ni',將N2中作業(yè)按bi的非增序排序得到N2';③Ni'中作業(yè)接N2’中作業(yè)就構(gòu)成了滿足Johnson法則的最優(yōu)調(diào)度。.若n=4,在機器M1和M2上加工作業(yè)i所需的時間分別為a和bi,且(ai,a2,a3,a4)=(4,5,12,10),(bi,b2,b3,b4)=(8,2,15,9)t4個作業(yè)的最優(yōu)調(diào)度方案,并計算最優(yōu)值。步驟為:N1={1,3},N2={2,4};Ni'={1,3},N2'={4,2};最優(yōu)值為:38.使用回溯法解0/1背包問題:n=3,C=9,V={6,10,3},W={3,4,4},其解空間有長度為3的0-1向量組成,要求用一棵完全二叉樹表示其解空間(從根出發(fā),左1右0),并畫出其解空間樹,計算其最優(yōu)值及最優(yōu)解。解空間為{(0,0,0),(0,1,0),(0。1),(1。0),(0,1,1),(1。1),(1,1,0),(1,1,1)卜解空間樹為:該問題的最優(yōu)值為:16 最優(yōu)解為:(1,1,0).設S={X1,X2,…,Xn}是嚴格遞增的有序集,利用二叉樹的結(jié)點來存儲 S中的元素,在表示S的二叉搜索樹中搜索一個元素X,返回的結(jié)果有兩種情形,(1)在二叉搜索樹的內(nèi)結(jié)點中找到X=X,其概率為bi0(2)在二叉搜索樹的葉結(jié)點中確定XC(X,X+1),其概率為aio在表示S的二叉搜索樹T中,設存儲元素X的結(jié)點深度為G;葉結(jié)點(X,X+1)的結(jié)點深度為di,則二叉搜索樹T的平均路長p為多少假設二叉搜索樹T[i][j]={X,X+1,…,X}最優(yōu)值為m[i][j],W[i][j]=a-1+b+…+bj+aj,貝Um[i][j](1<=i<=j<=n)遞歸關(guān)系表達式為什么TOC\o"1-5"\h\zn n二叉樹T的平均路長P=bi*(1Ci)+aj*dji1 j0m[i][j]=W[i][j]+min{m[i][k]+m[k+1][j]}(1<=i<=j<=n,m[i][i-1]=0)m[i][j]=0 (i>j).描述0-1背包問題。已知一個背包的容量為C,有n件物品,物品i的重量為Wi,價值為V,求應如

何選擇裝入背包中的物品,使得裝入背包中物品的總價值最大。三、簡答題(30分).流水作業(yè)調(diào)度中,已知有n個作業(yè),機器M1和M2上加工作業(yè)i所需的時間分別為ai和bi,請寫出流水作業(yè)調(diào)度問題的johnson法則中對a和bi的排序算法。(函數(shù)名可寫為sort(s,n).最優(yōu)二叉搜索樹問題的動態(tài)規(guī)劃算法(設函數(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(s[k].a>s[j].a)k=j;swap(s[i].index,s[k].index);swap(s[i].tag,s[k].tag);}}l=i;<s[j].b)k=j;swap(s[i].index,s[k].index);ag,s[k].tag); }}2.voidbinarysearchtree(inta口,intb口,intn,int**m,int**s,int**w){inti,j,k,t,l;for(i=1;i<=n+1;i++){w[i][i-1]=a[i-1];m[i][i-1]=0;}for(l=0;|v=n-1;l++)Init-single-source(G,s)2.S=I)3.Q=V[G]Q<>①dou=min(Q)S=SJ{u}foreachvertex 3do4 四、算法理解題(本題10根據(jù)優(yōu)先隊列式分支限界法,求下圖中從v1點到v9點的單源最短路徑,請畫出求得最優(yōu)解的解 片空間樹。要求中間被舍棄的結(jié)點用x標記,獲得中間解的結(jié)點用單圓圈。框起,最優(yōu)解用雙圓圈◎框起。五、算法理解題(本題5分)設有n=2k個運動員要進行循環(huán)賽,現(xiàn)設計一個滿足以下要求的比賽日程表:①每個選手必須與其他 n-1名選手比賽各一次;②每個選手一天至多只能賽一次;③循環(huán)賽要在最短時間內(nèi)完成。(1)如果n=2k,循環(huán)賽最少需要進行幾天;(2)當 n=23=8時,請畫出循環(huán)賽日程表。六、算法設計題(本題15分)分別用貪心算法、動態(tài)規(guī)劃法、回溯法設計 0-1背包問題。要求:說明所使用的算法策略;寫出算法實現(xiàn)的主要步驟;分析算法的時間。七、算法設計題(本題10分)通過鍵盤輸入一個高精度的正整數(shù)n(n的有效位數(shù)0240),去掉其中任意s個數(shù)字后,剩下的數(shù)字按原左右次序?qū)⒔M成一個新的正整數(shù)。編程對給定的n和s,尋找一種方案,使得剩下的數(shù)字組成的新數(shù)最小?!緲永斎搿?78543S=4【樣例輸出】13二、簡答題(本題25分,每小題5分)分治法的基本思想是將一個規(guī)模為n的問題分解為k個規(guī)模較小的子問題,這些子問題互相獨立且與原問題相同;對這 k個子問題分別求解。如果子問題的規(guī)模仍然不夠小,則再劃分為k個子問題,如此遞歸的進行下去,直到問題規(guī)模足夠小,很容易求出其解為止;將求出的小規(guī)模的問題的解合并為一個更大規(guī)模的問題的解,自底向上逐步求出原來問題的解?!白顑?yōu)化原理 ”用數(shù)學化的語言來描述:假設為了解決某一優(yōu)化問題,需要依次作出n個決策D1,D2,…,Dn,如若這個決策序列是最優(yōu)的,對于任何一個整數(shù)k,1<k<n,不論前面k個決策是怎樣的,以后的最優(yōu)決策只取決于由前面決策所確定的當前狀態(tài),即以后的決策Dk+1,Dk+2,…,Dn也是最優(yōu)的。某個問題的最優(yōu)解包含著其子問題的最優(yōu)解。這種性質(zhì)稱為最優(yōu)子結(jié)構(gòu)性質(zhì)?;厮莘ǖ幕舅枷胧窃谝豢煤袉栴}全部可能解的狀態(tài)空間樹上進行深度優(yōu)先搜索,解為葉子結(jié)點。搜索過程中,每到達一個結(jié)點時,則判斷該結(jié)點為根的子樹是否含有問題的解,如果可以確定該子樹中不含有問題的解,則放棄對該子樹的搜索,退回到上層父結(jié)點,繼續(xù)下一步深度優(yōu)先搜索過程。在回溯法中,并不是先構(gòu)造出整棵狀態(tài)空間樹,再進行搜索,而是在搜索過程,逐步構(gòu)造出狀態(tài)空間樹,即邊搜索,邊構(gòu)造。P(Polynomial問題 ):也即是多項式復雜程度的問題。NP就是Non-deterministicPolynomial的問題,也即是多項式復雜程度的非確定性問題。NPC(NPComplete)]題,這種問題只有把解域里面的所有可能都窮舉了之后

才能得出答案,這樣的問題是NP里面最難的問題,這種問題就是NPC問題。三、算法填空(本題20分,每小題5分)1、n后問題回溯算法(1)!M[j]&&!L[i+j]&&!R[i-j+N]⑵M[j]=L[i+j]=R[i-j+N]=1;⑶try(i+1,M,L,R,A)⑷A[i][j]=0(5)M[j]=L[i+j]=R[i-j+N]=02、數(shù)塔問題。(1)c<=r(2)t[r][c]+=t[r+1][c](3)t[r][c]+=t[r+1][c+1]3、Hanoi算法move(a,c)Hanoi(n-1,a,c,b)Move(a,c)4、(1)p[v]=NILp[v]=uv€adj[u]Relax(u,v,w)五、(1)8天(2分);(2)當n=23=8五、(1)8天(2分);(2)當n=23=8時,循環(huán)賽日程表(3分)六、算法設計題(本題15分)(1)貪心算法O(nlog(n))首先計算每種物品單位重量的價值1234214334124321567865877856876556786587785687651234214334124321Vi/Wi,然后,依貪心選擇策略,將盡具體算法可描述如下:voidKnapsack(intn,floatM,floatv[],floatw[],floatx口){Sort(n,v,w);inti;for(i=1;i<=n;i++)x[i]=0;floatc=M;for(i=1;i<=n;i++){if(w[i]>c)break;x[i]=1;c-=w[i];}if(i<=n)x[i]=c/w[i];}(2)動態(tài)規(guī)劃法 O(nc)m(i,j)是背包容量為j,可選擇物品為i,i+1,…,n時0-1背包問題的最優(yōu)值。由0-1背包問題的最優(yōu)子結(jié)構(gòu)性質(zhì),可以建立計算m(i,j)的遞歸式如下。m(i,j)max{m(i1,j),m(i1,jwjw}jWim(i1,j) 0jWim(i,j)m(n,j)Vm(n,j)VnjWn00j WnvoidKnapSack(intv口,intw口,intc,intn,intm[][11]){intjMax=min(w[n]-1,c);for(j=0;j<=jMax;j++) /*m(n,j)=0 0=<j<w[n]*/m[n][j]=0;for(j=w[n];j<=c;j++) /*m(n,j)=v[n] j>=w[n]*/m[n][j]=v[n];for(i=n-1;i>1;i--){intjMax=min(w[i]-1,c);for(j=0;j<=jMax;j++) /*m(i,j)=m(i+1,j) 0=<j<w[i]*/m[i][j]=m[i+1][j];for(j=w[i];j<=c;j++)/*m(n,j)=v[n] j>=w[n]*/m[i][j]=max(m[i+1][j],m[i+1][j-w[i]]+v[i]);}m[1][c]=m[2][c];if(c>=w[1])m[1][c]=max(m[1][c],m[2][c-w[1]]+v[1]);}(3)回溯法 O(2n)cw:當前重量cp:當前價值bestp:當前最優(yōu)值voidbacktrackQnti)包問題的貪心算法voidKnapsack(intn,floatM,floatv[],floatw[],floatx口){Sort(n,v,w);inti;for(i=1;i<=n;i++)x[i]=0;floatc=M;for(i=1;i<=n;i++){if(w[i]>c)break;x[i]=1;c-=w[i];}if(i<=n)x[i]=c/w[i];}2.最大子段和:動態(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,q-1);歹!J問題Template<classType>voidperm(Typelist口,intk,intm){定已按升序排好序的n個元素a[0:n-1],現(xiàn)要在這n個元素中找出一特定元素x。據(jù)此容易設計出二分搜索算法:template<classType>intBinarySearch(Typea口,constType&x,intl,intr){while(l<=r){intm=((l+r)/2);if(x==a[m])returnm;if(x<a[m])r=m-1;elsel=m+1;}return-1;}6、合并排序描述如下:template<classType>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);計算機求解問題的步驟:1、問題分析2、數(shù)學模型建立3、算法設計與選擇4、算法指標5、算法分析6、算法實現(xiàn)7、程序調(diào)試8、結(jié)果整理文檔編制.算法定義:算法是指在解決問題時,按照某種機械步驟一定可以得到問題結(jié)果的處理過程.算法的三要素1、操作2、控制結(jié)構(gòu)3、數(shù)據(jù)結(jié)構(gòu)13.分治法與動態(tài)規(guī)劃法的相同點是:將待求解的問題分解成若干個子問題,先求解子問題,然后從這些子問題的(3)(3)O(logn)解得到原問題的解兩者的不同點是:適合于用動態(tài)規(guī)劃法求解的問題,經(jīng)分解得到的子問題往往不是互相獨立的。而用分治法求解的問題,經(jīng)分解得到的子問題往往是互相獨立的?;厮莘ㄖ谐R姷膬深惖湫偷慕饪臻g樹是子集樹和排列樹。.請敘述動態(tài)規(guī)劃算法與貪心算法的異同。共同點:都需要最優(yōu)子結(jié)構(gòu)性質(zhì),都用來求有優(yōu)化問題。不同點:動態(tài)規(guī)劃:每一步作一個選擇一依賴于子問題的解。貪心方法:每一步作一個選擇一不依賴于子問題的解。動態(tài)規(guī)劃方法的條件:子問題的重疊性質(zhì)??捎秘澬姆椒ǖ臈l件:最優(yōu)子結(jié)構(gòu)性質(zhì);貪心選擇性質(zhì)。動態(tài)規(guī)劃:自底向上求解;貪心方法: 自頂向下求解??捎秘澬姆〞r,動態(tài)規(guī)劃方法可能不適用;可用動態(tài)規(guī)劃方法時,貪心法可能不適用。.請說明動態(tài)規(guī)劃方法為什么需要最優(yōu)子結(jié)構(gòu)性質(zhì)。答:最優(yōu)子結(jié)構(gòu)性質(zhì)是指大問題的最優(yōu)解包含子問題的最優(yōu)解。動態(tài)規(guī)劃方法是自底向上計算各個子問題的最優(yōu)解,即先計算子問題的最優(yōu)解,然后再利用子問題的最優(yōu)解構(gòu)造大問題的最優(yōu)解,因此需要最優(yōu)子結(jié)構(gòu).請說明:⑴優(yōu)先隊列可用什么數(shù)據(jù)結(jié)構(gòu)實現(xiàn)(2)優(yōu)先隊列插入算法基本思想(3)優(yōu)先隊列插入算法時間復雜度答:(1)堆。(2)在小根堆中,將元素x插入到堆的末尾,然后將元素x的關(guān)鍵字與其雙親的關(guān)鍵字比較,若元素x的關(guān)鍵字小于其雙親的關(guān)鍵字,則將元素x與其雙親交換,然后再將元素x與其新雙親的關(guān)鍵字相比,直到元素x的關(guān)鍵字大于雙親的關(guān)鍵字,或元素x到根為止。

26.在算法復雜卜t分析中,O、Q、@這三個記號的意義是什么在忽略常數(shù)因子的情況下,O、Q、日分別提供了算法運行時間的什么界答:如果存在兩個正常數(shù)c和N0,對于所有的N>N0,有|f(N)|&qg(N)|,則記作:f(N尸O(g(N))。這時我們說f(N)的階不高于g(N)的階。若存在兩個正常數(shù)C和自然數(shù)N0,使得當N>N0時有|f(N)|}Cg(N)|,記為f(N)=(g(N))。這時我們說f(N)的階不低于g(N)的階。如果存在正常數(shù)cl,c2和n0,對于所有的n》n0,有c1|g(N)|<|f(N)|<c2|g(N)|則記作f(N)= (g,(N)O、。、日分別提供了算法運行時間的上界、下界、平均五、算法設計與分析題.用動態(tài)規(guī)劃策略求解最長公共子序列問題:給出計算最優(yōu)值的遞歸方程。給定兩個序列X={B,C,D,A}Y={A,B,C,B)請采用動態(tài)規(guī)劃策略求出其最給出計算最優(yōu)值的遞歸方程。給定兩個序列X={B,C,D,A}Y={A,B,C,B)請采用動態(tài)規(guī)劃策略求出其最長公共子序列,要求給出過程長公共子序列,要求給出過程c[i,j]c[i1,jmax(c[i,1]1],c[i當c[i,j]c[i1,jmax(c[i,1]1],c[i當i0或j 0時當i,j 0且xiyi時1,j])當i,j 0且xiyi時最長公共子序列:{BC}.對下列各組函數(shù)f(n)和g(n),確定f(n)=O(g(n))或f(n)=Q(g(n))或f(n)=9(g(n)),并簡要說明理由⑴f(n)=2⑴f(n)=2n;⑵f(n尸赤;(3)f(n)=100;⑷f(n尸n3;(5)f(n)=3n;g(n)=n!g(n)=logn2g(n)=log100g(n)=3g(n)=2n(1)f(n)=O(g(n))⑵f(n)=Q(g(n))⑶f(n)=o(g(n))f(n)=O(g(n))(1)f(n)=O(g(n))⑵f(n)=Q(g(n))⑶f(n)=o(g(n))f(n)=O(g(n))f(n)=Q(g(n))因為g(n)的階比f(n)的階高。因為g(n)的階比f(n)的階低。因為g(n)與f(n)同階。因為g(n)的階比f(n)的階高。因為g(n)的階比f(n)的階低。3.對下圖所示的連通網(wǎng)絡G,用克魯斯卡爾(Kruskal)B法求G的最小生成樹T,請寫出在算法執(zhí)行過程中,依次加入T的邊集TE中的邊。說明該算法的貪心策略和算法的基本思想,并簡要分析算法的時間復雜度TE={(3,4),(2,3),(1,5),(4,6)(4,5)}貪心策略是每次都在連接兩個不同連通分量的邊中選權(quán)值最小的邊?;舅枷耄菏紫葘D中所有頂點都放到生成樹中,然后每次都在連接兩個不同連通分量的邊中選權(quán)值最小的邊, 將其放入生成樹中,直到生成樹中有n-1條邊。時間復雜度為:O(eloge)4.請用分治策略設計遞歸的歸并排序算法,并分析其時間復雜性(要求:分別給出divide、conquer、combine這三個階段所花的時間,并在此基礎上列出遞歸

方程,最后用套用公式法求出其解的漸進階)。答:Template<classType>voidMergeSort(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階段的時間復雜性: O(1)Conquer階段的時間復雜性:2T(n)Combine階段的時間復雜性: O(n)T(n)(1)T(n)(1)2T(n/2) 9(n)因為因為f(n)與nlogba同階,用套用公式法:a=2,b=2,nlogba=n,f(n)=n,T(n)=0(nlogn)1 2 34 5 6712345678214365873412785643218765567812346587214378563412876543215、設有n=2k個運動員要進行循環(huán)賽,現(xiàn)設計一個滿足以下要求的比賽日程表:每個選手必須與其他n-1名選手比賽各一次;每個選手一天至多只能賽一次;循環(huán)賽要在最短時間內(nèi)完成.(1)(4分)循環(huán)賽最少需要進行(n-1)天.(6分)當n=23=8時,請畫出循環(huán)賽日程表:6、考慮用哈夫曼算法來找字符a,b,Gd,e,f的最優(yōu)編碼。這些字符出現(xiàn)在文件中的頻數(shù)之比為20:10:6:4:44:16。要求:(4分)簡述使用哈夫曼算法構(gòu)造最優(yōu)編碼的基本步驟;(5分)構(gòu)造對應的哈夫曼樹,并據(jù)此給出a,b,c,d,e,f的一種最優(yōu)編碼。解:1)、哈夫曼算法是構(gòu)造最優(yōu)編碼樹的貪心算法。其基本思想是,首先所有字符對應n棵樹構(gòu)成的森林,每棵樹只有一個結(jié)點,根權(quán)為對應字符的頻率。然后,重復下列過程n-1次:將森林中的根權(quán)最小的兩棵樹進行合并產(chǎn)生一個新樹, 該新樹根的兩個子樹分別是參與合并的兩棵子樹,根權(quán)為兩個子樹根權(quán)之和。2)、根據(jù)題中數(shù)據(jù)構(gòu)造哈夫曼樹如下圖所示。由此可以得出a,b,c,d,e,f的一組最優(yōu)的編碼:01,0000,00010,00011,1,001.考慮在序列A[1..n]中找最大最小元素的問題。一個分治算法描述如下:如果n<2就直接求解。否則,將序列等分成兩個子序列A[1..n/2]和A[n/2+1..n],分別找出這兩子序列的最

溫馨提示

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

最新文檔

評論

0/150

提交評論