《計算機算法設(shè)計和分析》習(xí)題及答案_第1頁
《計算機算法設(shè)計和分析》習(xí)題及答案_第2頁
《計算機算法設(shè)計和分析》習(xí)題及答案_第3頁
《計算機算法設(shè)計和分析》習(xí)題及答案_第4頁
《計算機算法設(shè)計和分析》習(xí)題及答案_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

...wd......wd......wd...《計算機算法設(shè)計與分析》習(xí)題及答案一.選擇題1、二分搜索算法是利用〔A〕實現(xiàn)的算法。A、分治策略B、動態(tài)規(guī)劃法C、貪心法D、回溯法2、以下不是動態(tài)規(guī)劃算法根本步驟的是〔A〕。A、找出最優(yōu)解的性質(zhì)

B、構(gòu)造最優(yōu)解

C、算出最優(yōu)解D、定義最優(yōu)解3、最大效益優(yōu)先是〔

A〕的一搜索方式。A、分支界限法

B、動態(tài)規(guī)劃法

C、貪心法D、回溯法4.回溯法解旅行售貨員問題時的解空間樹是〔A〕。A、子集樹B、排列樹C、深度優(yōu)先生成樹D、廣度優(yōu)先生成樹5.以下算法中通常以自底向上的方式求解最優(yōu)解的是〔

B

〕。A、備忘錄法B、動態(tài)規(guī)劃法C、貪心法D、回溯法6、衡量一個算法好壞的標準是〔C〕。A運行速度快B占用空間少C時間復(fù)雜度低D代碼短7、以下不可以使用分治法求解的是〔D〕。A棋盤覆蓋問題B選擇問題C歸并排序D0/1背包問題

8.實現(xiàn)循環(huán)賽日程表利用的算法是〔A〕。A、分治策略B、動態(tài)規(guī)劃法C、貪心法D、回溯法9.下面不是分支界限法搜索方式的是〔

D

〕。A、廣度優(yōu)先B、最小消耗優(yōu)先C、最大效益優(yōu)先D、深度優(yōu)先10.以下算法中通常以深度優(yōu)先方式系統(tǒng)搜索問題解的是〔

D

〕。A、備忘錄法B、動態(tài)規(guī)劃法C、貪心法D、回溯法11.備忘錄方法是那種算法的變形?!睟〕A、分治法B、動態(tài)規(guī)劃法C、貪心法D、回溯法12.哈夫曼編碼的貪心算法所需的計算時間為〔

B

〕。A、O〔n2n〕B、O〔nlogn〕C、O〔2n〕D、O〔n〕13.分支限界法解最大團問題時,活結(jié)點表的組織形式是〔

B

〕。A、最小堆B、最大堆C、棧D、數(shù)組14.最長公共子序列算法利用的算法是〔

B

〕。A、分支界限法B、動態(tài)規(guī)劃法C、貪心法D、回溯法15.實現(xiàn)棋盤覆蓋算法利用的算法是〔

A〕。A、分治法B、動態(tài)規(guī)劃法C、貪心法D、回溯法16.下面是貪心算法的根本要素的是〔

C

〕。A、重疊子問題B、構(gòu)造最優(yōu)解C、貪心選擇性質(zhì)D、定義最優(yōu)解17.回溯法的效率不依賴于以下哪些因素〔D〕A.滿足顯約束的值的個數(shù)B.計算約束函數(shù)的時間C.計算限界函數(shù)的時間D.確定解空間的時間18.下面哪種函數(shù)是回溯法中為防止無效搜索采取的策略〔

B

〕A.遞歸函數(shù)B.剪枝函數(shù)C。隨機數(shù)函數(shù)D.搜索函數(shù)19.〔

D〕是貪心算法與動態(tài)規(guī)劃算法的共同點。A、重疊子問題B、構(gòu)造最優(yōu)解C、貪心選擇性質(zhì)D、最優(yōu)子構(gòu)造性質(zhì)20.矩陣連乘問題的算法可由〔B〕設(shè)計實現(xiàn)。A、分支界限算法B、動態(tài)規(guī)劃算法C、貪心算法D、回溯算法21.分支限界法解旅行售貨員問題時,活結(jié)點表的組織形式是〔A〕。A、最小堆B、最大堆C、棧D、數(shù)組22、Strassen矩陣乘法是利用〔

A〕實現(xiàn)的算法。A、分治策略B、動態(tài)規(guī)劃法C、貪心法D、回溯法23、使用分治法求解不需要滿足的條件是〔A〕。A子問題必須是一樣的B子問題不能夠重復(fù)C子問題的解可以合并D原問題和子問題使用一樣的方法解24、下面問題〔B〕不能使用貪心法解決。A單源最短路徑問題BN皇后問題C最小生成樹問題D背包問題25、以下算法中不能解決0/1背包問題的是〔A〕A貪心法B動態(tài)規(guī)劃C回溯法D分支限界法26、回溯法搜索狀態(tài)空間樹是按照〔C〕的順序。A中序遍歷B廣度優(yōu)先遍歷C深度優(yōu)先遍歷D層次優(yōu)先遍歷27.實現(xiàn)合并排序利用的算法是〔

A

〕。A、分治策略B、動態(tài)規(guī)劃法C、貪心法D、回溯法28.以下是動態(tài)規(guī)劃算法根本要素的是〔

D

〕。A、定義最優(yōu)解B、構(gòu)造最優(yōu)解C、算出最優(yōu)解D、子問題重疊性質(zhì)29.以下算法中通常以自底向下的方式求解最優(yōu)解的是〔B〕。A、分治法B、動態(tài)規(guī)劃法C、貪心法D、回溯法30.采用廣度優(yōu)先策略搜索的算法是〔

A

〕。A、分支界限法B、動態(tài)規(guī)劃法C、貪心法D、回溯法31、合并排序算法是利用〔

A〕實現(xiàn)的算法。A、分治策略B、動態(tài)規(guī)劃法C、貪心法D、回溯法32、背包問題的貪心算法所需的計算時間為〔B〕A、O〔n2n〕B、O〔nlogn〕C、O〔2n〕D、O〔n〕33.實現(xiàn)大整數(shù)的乘法是利用的算法〔

C

〕。A、貪心法B、動態(tài)規(guī)劃法C、分治策略D、回溯法34.0-1背包問題的回溯算法所需的計算時間為〔

A

〕A、O〔n2n〕B、O〔nlogn〕C、O〔2n〕D、O〔n〕35.采用最大效益優(yōu)先搜索方式的算法是〔A

〕。A、分支界限法B、動態(tài)規(guī)劃法C、貪心法D、回溯法36.貪心算法與動態(tài)規(guī)劃算法的主要區(qū)別是〔B

〕。A、最優(yōu)子構(gòu)造B、貪心選擇性質(zhì)C、構(gòu)造最優(yōu)解D、定義最優(yōu)解37.實現(xiàn)最大子段和利用的算法是〔

B〕。A、分治策略B、動態(tài)規(guī)劃法C、貪心法D、回溯法38.優(yōu)先隊列式分支限界法選取擴展結(jié)點的原則是〔C〕。A、先進先出B、后進先出C、結(jié)點的優(yōu)先級D、隨機39.背包問題的貪心算法所需的計算時間為〔B

〕。A、O〔n2n〕B、O〔nlogn〕C、O〔2n〕D、O〔n〕40、廣度優(yōu)先是〔

A

〕的一搜索方式。A、分支界限法

B、動態(tài)規(guī)劃法

C、貪心法

D、回溯法41.一個問題可用動態(tài)規(guī)劃算法或貪心算法求解的關(guān)鍵特征是問題的〔B〕。A、重疊子問題B、最優(yōu)子構(gòu)造性質(zhì)C、貪心選擇性質(zhì)D、定義最優(yōu)解42.采用貪心算法的最優(yōu)裝載問題的主要計算量在于將集裝箱依其重量從小到大排序,故算法的時間復(fù)雜度為(B)。A、O〔n2n〕B、O〔nlogn〕C、O〔2n〕D、O〔n〕43.以深度優(yōu)先方式系統(tǒng)搜索問題解的算法稱為(D)。A、分支界限算法B、概率算法C、貪心算法D、回溯算法44.實現(xiàn)最長公共子序列利用的算法是〔

B

〕。A、分治策略B、動態(tài)規(guī)劃法C、貪心法D、回溯法A.voidhanoi(intn,intA,intC,intB){if(n>0)A.voidhanoi(intn,intA,intC,intB){if(n>0){hanoi(n-1,A,C,B);move(n,a,b);hanoi(n-1,C,B,A);}}Hanoi塔Hanoi塔B.B.voidhanoi(intn,intA,intB,intC){if(n>0){hanoi(n-1,A,C,B);move(n,a,b);hanoi(n-1,C,B,A);}}C.C.voidhanoi(intn,intC,intB,intA){if(n>0){hanoi(n-1,A,C,B);move(n,a,b);hanoi(n-1,C,B,A);}}D.D.voidhanoi(intn,intC,intA,intB){if(n>0){hanoi(n-1,A,C,B);move(n,a,b);hanoi(n-1,C,B,A);}}46.動態(tài)規(guī)劃算法的根本要素為〔C〕A.最優(yōu)子構(gòu)造性質(zhì)與貪心選擇性質(zhì)B.重疊子問題性質(zhì)與貪心選擇性質(zhì)C.最優(yōu)子構(gòu)造性質(zhì)與重疊子問題性質(zhì)D.預(yù)排序與遞歸調(diào)用47.能采用貪心算法求最優(yōu)解的問題,一般具有的重要性質(zhì)為:〔A〕A.最優(yōu)子構(gòu)造性質(zhì)與貪心選擇性質(zhì)B.重疊子問題性質(zhì)與貪心選擇性質(zhì)C.最優(yōu)子構(gòu)造性質(zhì)與重疊子問題性質(zhì)D.預(yù)排序與遞歸調(diào)用48.回溯法在問題的解空間樹中,按〔D〕策略,從根結(jié)點出發(fā)搜索解空間樹。A.廣度優(yōu)先B.活結(jié)點優(yōu)先C.擴展結(jié)點優(yōu)先D.深度優(yōu)先49.分支限界法在問題的解空間樹中,按〔A〕策略,從根結(jié)點出發(fā)搜索解空間樹。A.廣度優(yōu)先B.活結(jié)點優(yōu)先C.擴展結(jié)點優(yōu)先D.深度優(yōu)先50.程序塊〔A〕是回溯法中遍歷排列樹的算法框架程序。voidbacktrackvoidbacktrack(intt){if(t>n)output(x);elsefor(inti=t;i<=n;i++){swap(x[t],x[i]);if(legal(t))backtrack(t+1);swap(x[t],x[i]);}}voidbacktrack(intt){if(t>n)output(x);voidbacktrack(intt){if(t>n)output(x);elsefor(inti=0;i<=1;i++){x[t]=i;if(legal(t))backtrack(t+1);}}C.voidbacktrack(intt)voidbacktrack(intt){if(t>n)output(x);elsefor(inti=0;i<=1;i++){x[t]=i;if(legal(t))backtrack(t-1);}}voidbacktrackvoidbacktrack(intt){if(t>n)output(x);elsefor(inti=t;i<=n;i++){swap(x[t],x[i]);if(legal(t))backtrack(t+1);}}51.常見的兩種分支限界法為〔D〕A.廣度優(yōu)先分支限界法與深度優(yōu)先分支限界法;B.隊列式〔FIFO〕分支限界法與堆棧式分支限界法;C.排列樹法與子集樹法;D.隊列式〔FIFO〕分支限界法與優(yōu)先隊列式分支限界法;二、填空題1.算法的復(fù)雜性有時間復(fù)雜性和空間復(fù)雜性之分。2、程序是算法用某種程序設(shè)計語言的具體實現(xiàn)。3、算法的“確定性〞指的是組成算法的每條指令是清晰的,無歧義的。4.矩陣連乘問題的算法可由動態(tài)規(guī)劃設(shè)計實現(xiàn)。5、算法是指解決問題的一種方法或一個過程。6、從分治法的一般設(shè)計模式可以看出,用它設(shè)計出的程序一般是遞歸算法。7、問題的最優(yōu)子構(gòu)造性質(zhì)是該問題可用動態(tài)規(guī)劃算法或貪心算法求解的關(guān)鍵特征。8、以深度優(yōu)先方式系統(tǒng)搜索問題解的算法稱為回溯法。9、計算一個算法時間復(fù)雜度通??梢杂嬎阊h(huán)次數(shù)、根本操作的頻率或計算步。10、解決0/1背包問題可以使用動態(tài)規(guī)劃、回溯法和分支限界法,其中不需要排序的是動態(tài)規(guī)劃,需要排序的是回溯法,分支限界法。11、使用回溯法進展狀態(tài)空間樹裁剪分支時一般有兩個標準:約束條件和目標函數(shù)的界,N皇后問題和0/1背包問題正好是兩種不同的類型,其中同時使用約束條件和目標函數(shù)的界進展裁剪的是0/1背包問題,只使用約束條件進展裁剪的是N皇后問題。12、貪心選擇性質(zhì)是貪心算法可行的第一個根本要素,也是貪心算法與動態(tài)規(guī)劃算法的主要區(qū)別。13、矩陣連乘問題的算法可由動態(tài)規(guī)劃設(shè)計實現(xiàn)。14.貪心算法的根本要素是貪心選擇性質(zhì)和最優(yōu)子構(gòu)造性質(zhì)。15.動態(tài)規(guī)劃算法的根本思想是將待求解問題分解成假設(shè)干子問題,先求解子問題,然后從這些子問題的解得到原問題的解。16.算法是由假設(shè)干條指令組成的有窮序列,且要滿足輸入、輸出、確定性和有限性四條性質(zhì)。17、大整數(shù)乘積算法是用分治法來設(shè)計的。18、以廣度優(yōu)先或以最小消耗方式搜索問題解的算法稱為分支限界法。19、貪心選擇性質(zhì)是貪心算法可行的第一個根本要素,也是貪心算法與動態(tài)規(guī)劃算法的主要區(qū)別。20.快速排序算法是基于分治策略的一種排序算法。21.動態(tài)規(guī)劃算法的兩個根本要素是.最優(yōu)子構(gòu)造性質(zhì)和重疊子問題性質(zhì)。22.回溯法是一種既帶有系統(tǒng)性又帶有跳躍性的搜索算法。23.分支限界法主要有隊列式〔FIFO〕分支限界法和優(yōu)先隊列式分支限界法。24.分支限界法是一種既帶有系統(tǒng)性又帶有跳躍性的搜索算法。25.回溯法搜索解空間樹時,常用的兩種剪枝函數(shù)為約束函數(shù)和限界函數(shù)。26.任何可用計算機求解的問題所需的時間都與其規(guī)模有關(guān)。27.快速排序算法的性能取決于劃分的對稱性。28.所謂貪心選擇性質(zhì)是指所求問題的整體最優(yōu)解可以通過一系列局部最優(yōu)的選擇,即貪心選擇來到達。29.所謂最優(yōu)子構(gòu)造性質(zhì)是指問題的最優(yōu)解包含了其子問題的最優(yōu)解。30.回溯法是指具有限界函數(shù)的深度優(yōu)先生成法。31.用回溯法解題的一個顯著特征是在搜索過程中動態(tài)產(chǎn)生問題的解空間。在任何時刻,算法只保存從根結(jié)點到當(dāng)前擴展結(jié)點的路徑。如果解空間樹中從根結(jié)點到葉結(jié)點的最長路徑的長度為h(n),則回溯法所需的計算空間通常為O(h(n))〕。32.回溯法的算法框架按照問題的解空間一般分為子集樹算法框架與排列樹算法框架。33.用回溯法解0/1背包問題時,該問題的解空間構(gòu)造為子集樹構(gòu)造。34.用回溯法解批處理作業(yè)調(diào)度問題時,該問題的解空間構(gòu)造為排列樹構(gòu)造。35.旅行售貨員問題的解空間樹是排列樹。三、算法填空1.背包問題的貪心算法voidKnapsack(intn,floatM,floatv[],floatw[],floatx[]){//重量為w[1..n]],價值為v[1..n]的n個物品,裝入容量為M的背包//用貪心算法求最優(yōu)解向量x[1..n]inti;Sort(n,v,w);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;//sum存儲當(dāng)前最大的b[j],b存儲b[j]for(intj=1;j<=n;j++){if(b>0)b+=a[j];elseb=a[i];;//一旦某個區(qū)段和為負,則從下一個位置累和if(b>sum)sum=b;}returnsum;}3.貪心算法求活動安排問題template<classType>voidGreedySelector(intn,Types[],Typef[],boolA[]){A[1]=true;intj=1;for(inti=2;i<=n;i++)if(s[i]>=f[j]){A[i]=true;j=i;}elseA[i]=false;}4.快速排序template<classType>voidQuickSort(Typea[],intp,intr){if(p<r){intq=Partition(a,p,r);QuickSort(a,p,q-1);//對左半段排序QuickSort(a,q+1,r);//對右半段排序}}5.回溯法解迷宮問題迷宮用二維數(shù)組存儲,用'H'表示墻,'O'表示通道intx1,y1,success=0;//出口點voidMazePath(intx,inty){//遞歸求解:求迷宮maze從入口(x,y)到出口(x1,y1)的一條路徑maze[x][y]='*';//路徑置為*if((x==x1)&&(y==y1))success=1;//到出口則成功else{if(maze[x][y+1]=='O')MazePath(x,++y);//東鄰方格是通路,向東嘗試if((!success)&&(maze[x+1][y]=='O'))MazePath(++x,y);//不成功且南鄰方格是通路,向南嘗試if((!success)&&(maze[x][y-1]=='O'))MazePath(x,--y);//不成功且西鄰方格是通路,向西嘗試if((!success)&&(maze[x-1][y]=='O'))MazePath(--x,y);//不成功且北鄰方格是通路,向北嘗試}if(!success)maze[x][y]='@';//死胡同置為@}四、算法設(shè)計題1.給定已按升序排好序的n個元素a[0:n-1],現(xiàn)要在這n個元素中找出一特定元素x,返回其在數(shù)組中的位置,如果未找到返回-1。寫出二分搜索的算法,并分析其時間復(fù)雜度。template<classType>intBinarySearch(Typea[],constType&x,intn){//在a[0:n]中搜索x,找到x時返回其在數(shù)組中的位置,否則返回-1Intleft=0;intright=n-1;While(left<=right){intmiddle=(left+right)/2;if(x==a[middle])returnmiddle;if(x>a[middle])left=middle+1;elseright=middle-1;}Return-1;}時間復(fù)雜性為O(logn)2.利用分治算法寫出合并排序的算法,并分析其時間復(fù)雜度voidMergeSort(Typea[],intleft,intright){if(left<right){//至少有2個元素inti=(left+right)/2;//取中點mergeSort(a,left,i);mergeSort(a,i+1,right);merge(a,b,left,i,right);//合并到數(shù)組bcopy(a,b,left,right);//復(fù)制回數(shù)組a}}算法在最壞情況下的時間復(fù)雜度為O(nlogn)。3.N皇后回溯法boolQueen::Place(intk){//檢查x[k]位置是否合法for(intj=1;j<k;j++)if((abs(k-j)==abs(x[j]-x[k]))||(x[j]==x[k]))returnfalse;returntrue;}voidQueen::Backtrack(intt){if(t>n)sum++;elsefor(inti=1;i<=n;i++){x[t]=i;if(約束函數(shù))Backtrack(t+1);}}4.最大團問題voidClique::Backtrack(inti)//計算最大團{if(i>n){//到達葉結(jié)點for(intj=1;j<=n;j++)bestx[j]=x[j];bestn=cn;return;}//檢查頂點i與當(dāng)前團的連接intOK=1;for(intj=1;j<i;j++)if(x[j]&&a[i][j]==0)//i與j不相連{OK=0;break;}if(OK){//進入左子樹x[i]=1;cn++;Backtrack(i+1);x[i]=0;cn--;}if(cn+n-i>bestn){//進入右子樹x[i]=0;Backtr

溫馨提示

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

評論

0/150

提交評論