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

下載本文檔

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

文檔簡(jiǎn)介

-.z.一.選擇題1、二分搜索算法是利用〔

A

〕實(shí)現(xiàn)的算法。A、分治策略

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

C、貪心法

D、回溯法2、以下不是動(dòng)態(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、動(dòng)態(tài)規(guī)劃法

C、貪心法

D、回溯法4、在以下算法中有時(shí)找不到問題解的是〔

B

〕。A、蒙特卡羅算法

B、拉斯維加斯算法

C、舍伍德算法

D、數(shù)值概率算法5.回溯法解旅行售貨員問題時(shí)的解空間樹是〔B

〕。A、子集樹 B、排列樹 C、深度優(yōu)先生成樹 D、廣度優(yōu)先生成樹6.以下算法中通常以自底向上的方式求解最優(yōu)解的是〔

B

〕。A、備忘錄法B、動(dòng)態(tài)規(guī)劃法C、貪心法D、回溯法7、衡量一個(gè)算法好壞的標(biāo)準(zhǔn)是〔C〕。

A運(yùn)行速度快B占用空間少C時(shí)間復(fù)雜度低D代碼短

8、以下不可以使用分治法求解的是〔D〕。

A棋盤覆蓋問題B選擇問題C歸并排序D0/1背包問題

A

〕。A、分治策略B、動(dòng)態(tài)規(guī)劃法C、貪心法D、回溯法10、以下隨機(jī)算法中運(yùn)行時(shí)有時(shí)候成功有時(shí)候失敗的是〔C〕

A數(shù)值概率算法B舍伍德算法C拉斯維加斯算法D蒙特卡羅算法11.下面不是分支界限法搜索方式的是〔

D

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

D

〕。A、備忘錄法B、動(dòng)態(tài)規(guī)劃法C、貪心法D、回溯法13.備忘錄方法是那種算法的變形?!睟〕A、分治法B、動(dòng)態(tài)規(guī)劃法C、貪心法D、回溯法14.哈弗曼編碼的貪心算法所需的計(jì)算時(shí)間為〔

B

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

B

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

B

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

A

〕。A、分治法 B、動(dòng)態(tài)規(guī)劃法C、貪心法D、回溯法〔

C

〕。A、重疊子問題B、構(gòu)造最優(yōu)解C、貪心選擇性質(zhì) D、定義最優(yōu)解19.回溯法的效率不依賴于以下哪些因素〔D〕A.滿足顯約束的值的個(gè)數(shù) B.計(jì)算約束函數(shù)的時(shí)間C.計(jì)算限界函數(shù)的時(shí)間 D.確定解空間的時(shí)間〔

B

〕A.遞歸函數(shù) B.剪枝函數(shù) C。隨機(jī)數(shù)函數(shù) D.搜索函數(shù)21、下面關(guān)于NP問題說法正確的選項(xiàng)是〔B〕

ANP問題都是不可能解決的問題

BP類問題包含在NP類問題中

CNP完全問題是P類問題的子集DNP類問題包含在P類問題中22、蒙特卡羅算法是〔

B

〕的一種。A、分支界限算法

B、概率算法

C、貪心算法

D、回溯算法〔

C

〕24.〔D〕是貪心算法與動(dòng)態(tài)規(guī)劃算法的共同點(diǎn)。A、重疊子問題B、構(gòu)造最優(yōu)解C、貪心選擇性質(zhì) D、最優(yōu)子構(gòu)造性質(zhì)25.矩陣連乘問題的算法可由〔

B〕設(shè)計(jì)實(shí)現(xiàn)。A、分支界限算法

B、動(dòng)態(tài)規(guī)劃算法

C、貪心算法

D、回溯算法26.分支限界法解旅行售貨員問題時(shí),活結(jié)點(diǎn)表的組織形式是〔

A

〕。A、最小堆 B、最大堆 C、棧 D、數(shù)組27、Strassen矩陣乘法是利用〔

A

〕實(shí)現(xiàn)的算法。A、分治策略

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

C、貪心法

D、回溯法29、使用分治法求解不需要滿足的條件是〔A〕。

A子問題必須是一樣的

B子問題不能夠重復(fù)

C子問題的解可以合并

D原問題和子問題使用一樣的方法解

30、下面問題〔B〕不能使用貪心法解決。

A單源最短路徑問題BN皇后問題

C最小花費(fèi)生成樹問題D背包問題

31、以下算法中不能解決0/1背包問題的是〔A〕

A貪心法B動(dòng)態(tài)規(guī)劃C回溯法D分支限界法

33、以下隨機(jī)算法中運(yùn)行時(shí)有時(shí)候成功有時(shí)候失敗的是〔C〕

A數(shù)值概率算法B舍伍德算法C拉斯維加斯算法D蒙特卡羅算法

34.實(shí)現(xiàn)合并排序利用的算法是〔

A

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

D

〕。A、定義最優(yōu)解B、構(gòu)造最優(yōu)解C、算出最優(yōu)解D、子問題重疊性質(zhì)37.采用廣度優(yōu)先策略搜索的算法是〔

A

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

A

〕實(shí)現(xiàn)的算法。A、分治策略

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

C、貪心法

D、回溯法39、在以下算法中得到的解未必正確的選項(xiàng)是〔

B

〕。A、蒙特卡羅算法

B、拉斯維加斯算法

C、舍伍德算法

D、數(shù)值概率算法40、背包問題的貪心算法所需的計(jì)算時(shí)間為〔

B

〕A、O〔n2n〕

B、O〔nlogn〕

C、O〔2n〕

D、O〔n〕41.實(shí)現(xiàn)大整數(shù)的乘法是利用的算法〔

C

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

A

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

A

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

B

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

B

〕。A、分治策略B、動(dòng)態(tài)規(guī)劃法C、貪心法D、回溯法〔

C

〕。A、先進(jìn)先出 B、后進(jìn)先出 C、結(jié)點(diǎn)的優(yōu)先級(jí) D、隨機(jī)包問題的貪心算法所需的計(jì)算時(shí)間為〔

B

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

A

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

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

C、貪心法

D、回溯法49、舍伍德算法是〔

B

〕的一種。A、分支界限算法

B、概率算法

C、貪心算法

D、回溯算法50、在以下算法中有時(shí)找不到問題解的是〔

B

〕。A、蒙特卡羅算法

B、拉斯維加斯算法

C、舍伍德算法

D、數(shù)值概率算法51以下哪一種算法是隨機(jī)化算法〔

D

〕52.一個(gè)問題可用動(dòng)態(tài)規(guī)劃算法或貪心算法求解的關(guān)鍵特征是問題的〔

B

〕。A、重疊子問題B、最優(yōu)子構(gòu)造性質(zhì) C、貪心選擇性質(zhì) D、定義最優(yōu)解53.采用貪心算法的最優(yōu)裝載問題的主要計(jì)算量在于將集裝箱依其重量從小到大排序,故算法的時(shí)間復(fù)雜度為(B)。A、O〔n2n〕B、O〔nlogn〕C、O〔2n〕D、O〔n〕54.以深度優(yōu)先方式系統(tǒng)搜索問題解的算法稱為(D)。A、分支界限算法

B、概率算法

C、貪心算法

D、回溯算法〔

B

〕。A、分治策略B、動(dòng)態(tài)規(guī)劃法C、貪心法D、回溯法二、填空題時(shí)間復(fù)雜性和空間復(fù)雜性之分。2、程序是算法用*種程序設(shè)計(jì)語言的具體實(shí)現(xiàn)。3、算法的"確定性〞指的是組成算法的每條指令是清晰的,無歧義的。4.矩陣連乘問題的算法可由動(dòng)態(tài)規(guī)劃設(shè)計(jì)實(shí)現(xiàn)。5、拉斯維加斯算法找到的解一定是正確解。6、算法是指解決問題的一種方法或一個(gè)過程。7、從分治法的一般設(shè)計(jì)模式可以看出,用它設(shè)計(jì)出的程序一般是遞歸算法。8、問題的最優(yōu)子構(gòu)造性質(zhì)是該問題可用動(dòng)態(tài)規(guī)劃算法或貪心算法求解的關(guān)鍵特征。9、以深度優(yōu)先方式系統(tǒng)搜索問題解的算法稱為回溯法。10、數(shù)值概率算法常用于數(shù)值問題的求解。11、計(jì)算一個(gè)算法時(shí)間復(fù)雜度通??梢杂?jì)算循環(huán)次數(shù)、根本操作的頻率或計(jì)算步。12、利用概率的性質(zhì)計(jì)算近似值的隨機(jī)算法是__數(shù)值概率算法,運(yùn)行時(shí)以一定的概率得到正確解的隨機(jī)算法是__蒙特卡羅算法_____________________。14、解決0/1背包問題可以使用動(dòng)態(tài)規(guī)劃、回溯法和分支限界法,其中不需要排序的是動(dòng)態(tài)規(guī)劃,需要排序的是回溯法,分支限界法。

15、使用回溯法進(jìn)展?fàn)顟B(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皇后問題。16、貪心選擇性質(zhì)是貪心算法可行的第一個(gè)根本要素,也是貪心算法與動(dòng)態(tài)規(guī)劃算法的主要區(qū)別。17、矩陣連乘問題的算法可由動(dòng)態(tài)規(guī)劃設(shè)計(jì)實(shí)現(xiàn)。18、拉斯維加斯算法找到的解一定是正確解。貪心選擇質(zhì)和最優(yōu)子構(gòu)造性質(zhì)。21.動(dòng)態(tài)規(guī)劃算法的根本思想是將待求解問題分解成假設(shè)干子問題,先求解子問題,然后從這些子問題的解得到原問題的解。22.算法是由假設(shè)干條指令組成的有窮序列,且要滿足輸入、輸出、確定性和有限性四條性質(zhì)。23、大整數(shù)乘積算法是用分治法來設(shè)計(jì)的。24、以廣度優(yōu)先或以最小消耗方式搜索問題解的算法稱為分支限界法。25、舍伍德算法總能求得問題的一個(gè)解。26、貪心選擇性質(zhì)是貪心算法可行的第一個(gè)根本要素,也是貪心算法與動(dòng)態(tài)規(guī)劃算法的主要區(qū)別。27.快速排序算法是基于分治策略的一種排序算法。28.動(dòng)態(tài)規(guī)劃算法的兩個(gè)根本要素是.最優(yōu)子構(gòu)造性質(zhì)和重疊子問題性質(zhì)。30.回溯法是一種既帶有系統(tǒng)性又帶有跳躍性的搜索算法。31.分支限界法主要有隊(duì)列式〔FIFO〕分支限界法和優(yōu)先隊(duì)列式分支限界法。32.分支限界法是一種既帶有系統(tǒng)性又帶有跳躍性的搜索算法。33.回溯法搜索解空間樹時(shí),常用的兩種剪枝函數(shù)為約束函數(shù)和限界函數(shù)。規(guī)模有關(guān)。劃分的對(duì)稱性。三、算法填空voidKnapsack(intn,floatM,floatv[],floatw[],float*[]){Sort(n,v,w);inti;for(i=1;i<=n;i++)*[i]=0;floatc=M;for(i=1;i<=n;i++){if(w[i]>c)break;*[i]=1;c-=w[i];}if(i<=n)*[i]=c/w[i];}:動(dòng)態(tài)規(guī)劃算法intMa*Sum(intn,inta[]){intsum=0,b=0;//sum存儲(chǔ)當(dāng)前最大的b[j],b存儲(chǔ)b[j]for(intj=1;j<=n;j++){if(b>0)b+=a[j];elseb=a[i];;//一旦*個(gè)區(qū)段和為負(fù),則從下一個(gè)位置累和if(b>sum)sum=b;}returnsum;}template<classType>voidLoading(int*[],Typew[],Typec,intn){int*t=newint[n+1];;for(inti=1;i<=n;i++)*[i]=0;for(inti=1;i<=n&&w[t[i]]<=c;i++){*[t[i]]=1;;}}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;}}template<classType>voidQuickSort(Typea[],intp,intr){if(p<r){intq=Partition(a,p,r);QuickSort(a,p,q-1);//對(duì)左半段排序QuickSort(a,q+1,r);//對(duì)右半段排序}}Template<classType>voidperm(Typelist[],intk,intm){//產(chǎn)生[list[k:m]的所有排列if(k==m){//只剩下一個(gè)元素for(inti=0;i<=m;i++)cout<<list[i];cout<<endl;}else//還有多個(gè)元素待排列,遞歸產(chǎn)生排列for(inti=k;i<=m;i++){swap(list[k],list[i]);perm(list,k+1;m);swap(list[k],list[i]);}}四、問答題1.分治法的根本思想時(shí)將一個(gè)規(guī)模為n的問題分解為k個(gè)規(guī)模較小的子問題,這些子問題互相獨(dú)立且與原問題一樣。遞歸地解這些子問題,然后將各個(gè)子問題的解合并得到原問題的解。2設(shè)計(jì)動(dòng)態(tài)規(guī)劃算法的主要步驟為:〔1〕找出最優(yōu)解的性質(zhì),并刻劃其構(gòu)造特征?!?〕遞歸地定義最優(yōu)值?!?〕以自底向上的方式計(jì)算出最優(yōu)值?!?〕根據(jù)計(jì)算最優(yōu)值時(shí)得到的信息,構(gòu)造最優(yōu)解。3.分治法與動(dòng)態(tài)規(guī)劃法的一樣點(diǎn)是:將待求解的問題分解成假設(shè)干個(gè)子問題,先求解子問題,然后從這些子問題的解得到原問題的解。兩者的不同點(diǎn)是:適合于用動(dòng)態(tài)規(guī)劃法求解的問題,經(jīng)分解得到的子問題往往不是互相獨(dú)立的。而用分治法求解的問題,經(jīng)分解得到的子問題往往是互相獨(dú)立的。4.分支限界法與回溯法的一樣點(diǎn)是:都是一種在問題的解空間樹T中搜索問題解的算法。不同點(diǎn):〔1〕求解目標(biāo)不同;〔2〕搜索方式不同;〔3〕對(duì)擴(kuò)展結(jié)點(diǎn)的擴(kuò)展方式不同;〔4〕存儲(chǔ)空間的要求不同。5用回溯法搜索子集樹的算法為:voidbacktrack(intt){if(t>n)output(*);elsefor(inti=0;i<=1;i++){*[t]=i;if(constraint(t)&&bound(t))backtrack(t+1);}}6.分治法所能解決的問題一般具有的幾個(gè)特征是:〔1〕該問題的規(guī)模縮小到一定的程度就可以容易地解決;〔2〕該問題可以分解為假設(shè)干個(gè)規(guī)模較小的一樣問題,即該問題具有最優(yōu)子構(gòu)造性質(zhì);〔3〕利用該問題分解出的子問題的解可以合并為該問題的解;〔4〕原問題所分解出的各個(gè)子問題是相互獨(dú)立的,即子問題之間不包含公共的子問題。7.用分支限界法設(shè)計(jì)算法的步驟是:(1)針對(duì)所給問題,定義問題的解空間〔對(duì)解進(jìn)展編碼〕;分(2)確定易于搜索的解空間構(gòu)造〔按樹或圖組織解〕;(3)以廣度優(yōu)先或以最小消耗〔最大收益〕優(yōu)先的方式搜索解空間,并在搜索過程中用剪枝函數(shù)防止無效搜索。8.常見的兩種分支限界法的算法框架〔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)。9.回溯法中常見的兩類典型的解空間樹是子集樹和排列樹。當(dāng)所給的問題是從n個(gè)元素的集合S中找出滿足*種性質(zhì)的子集時(shí),相應(yīng)的解空間樹稱為子集樹。這類子集樹通常有2n個(gè)葉結(jié)點(diǎn),遍歷子集樹需O(2n)計(jì)算時(shí)間。當(dāng)所給的問題是確定n個(gè)元素滿足*種性質(zhì)的排列時(shí),相應(yīng)的解空間樹稱為排列樹。這類排列樹通常有n!個(gè)葉結(jié)點(diǎn)。遍歷排列樹需要O(n!)計(jì)算時(shí)間。10.分支限界法的搜索策略是:在擴(kuò)展結(jié)點(diǎn)處,先生成其所有的兒子結(jié)點(diǎn)〔分支〕,然后再?gòu)漠?dāng)前的活結(jié)點(diǎn)表中選擇下一個(gè)擴(kuò)展結(jié)點(diǎn)。為了有效地選擇下一擴(kuò)展結(jié)點(diǎn),加速搜索的進(jìn)程,在每一個(gè)活結(jié)點(diǎn)處,計(jì)算一個(gè)函數(shù)值〔限界〕,并根據(jù)函數(shù)值,從當(dāng)前活結(jié)點(diǎn)表中選擇一個(gè)最有利的結(jié)點(diǎn)作為擴(kuò)展結(jié)點(diǎn),使搜索朝著解空間上有最優(yōu)解的分支推進(jìn),以便盡快地找出一個(gè)最優(yōu)解。五、算法題1.給定已按升序排好序的n個(gè)元素a[0:n-1],現(xiàn)要在這n個(gè)元素中找出一特定元素*,返回其在數(shù)組中的位置,如果未找到返回-1。寫出二分搜索的算法,并分析其時(shí)間復(fù)雜度。1.template<classType>intBinarySearch(Typea[],constType&*,intn){//在a[0:n]中搜索*,找到*時(shí)返回其在數(shù)組中的位置,否則返回-1Intleft=0;intright=n-1;While(left<=right){intmiddle=(left+right)/2;if(*==a[middle])returnmiddle;if(*>a[middle])left=middle+1;elseright=middle-1;}Return-1;}時(shí)間復(fù)雜性為O(logn)2.利用分治算法寫出合并排序的算法,并分析其時(shí)間復(fù)雜度1.voidMergeSort(Typea[],intleft,intright){if(left<right){//至少有2個(gè)元素inti=(left+right)/2;//取中點(diǎn)mergeSort(a,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論