




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、文檔供參考,可復(fù)制、編制,期待您的好評與關(guān)注! 計算機(jī)算法設(shè)計與分析習(xí)題及答案2013 秋計算機(jī)算法設(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、在下列
2、算法中有時找不到問題解的是( B )。A、蒙特卡羅算法 B、拉斯維加斯算法 C、舍伍德算法 D、數(shù)值概率算法5. 回溯法解旅行售貨員問題時的解空間樹是( A )。A、子集樹 B、排列樹 C、深度優(yōu)先生成樹 D、廣度優(yōu)先生成樹6下列算法中通常以自底向上的方式求解最優(yōu)解的是( B )。A、備忘錄法 B、動態(tài)規(guī)劃法 C、貪心法 D、回溯法7、衡量一個算法好壞的標(biāo)準(zhǔn)是( C )。A 運行速度快 B 占用空間少 C 時間復(fù)雜度低 D 代碼短8、以下不可以使用分治法求解的是( D )。A 棋盤覆蓋問題 B 選擇問題 C 歸并排序 D 0/1背包問題9. 實現(xiàn)循環(huán)
3、賽日程表利用的算法是( A )。A、分治策略 B、動態(tài)規(guī)劃法 C、貪心法 D、回溯法10、下列隨機(jī)算法中運行時有時候成功有時候失敗的是( 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、動態(tài)規(guī)劃法 C、貪心法 D、回溯法13.備忘錄方法是那種算法的變形。( B )A、分治法 B、動態(tài)規(guī)劃法 C、貪心法 D
4、、回溯法14哈夫曼編碼的貪心算法所需的計算時間為( B )。A、O(n2n) B、O(nlogn) C、O(2n) D、O(n)15分支限界法解最大團(tuán)問題時,活結(jié)點表的組織形式是( B )。A、最小堆 B、最大堆 C、棧 D、數(shù)組16最長公共子序列算法利用的算法是( B )。A、分支界限法 B、動態(tài)規(guī)劃法 C、貪心法 D、回溯法17實現(xiàn)棋盤覆蓋算法利用的算法是( A )。A、分治法 B、動態(tài)規(guī)劃法 C、貪心法 D、回溯法18.下面是貪心算法的基本要素的是( C
5、160; )。A、重疊子問題 B、構(gòu)造最優(yōu)解 C、貪心選擇性質(zhì) D、定義最優(yōu)解19.回溯法的效率不依賴于下列哪些因素( D )A.滿足顯約束的值的個數(shù) B. 計算約束函數(shù)的時間 C.計算限界函數(shù)的時間 D. 確定解空間的時間20.下面哪種函數(shù)是回溯法中為避免無效搜索采取的策略( B )A遞歸函數(shù) B.剪枝函數(shù) C。隨機(jī)數(shù)函數(shù) D.搜索函數(shù)21、下面關(guān)于NP問題說法正確的是( B )A NP問題都是不可能解決的問題 B P類問題包含在NP類問題中C NP完全問題是P類問題的子集 D NP類問題包含在P類問題中22、蒙特卡羅算法是( B
6、60; )的一種。A、分支界限算法 B、概率算法 C、貪心算法 D、回溯算法23.下列哪一種算法不是隨機(jī)化算法( C )A. 蒙特卡羅算法 B.拉斯維加斯算法 C.動態(tài)規(guī)劃算法 D.舍伍德算法24. ( D )是貪心算法與動態(tài)規(guī)劃算法的共同點。A、重疊子問題 B、構(gòu)造最優(yōu)解 C、貪心選擇性質(zhì) D、最優(yōu)子結(jié)構(gòu)性質(zhì)25. 矩陣連乘問題的算法可由( B )設(shè)計實現(xiàn)。A、分支界限算法 B、動態(tài)規(guī)劃算法 C、
7、貪心算法 D、回溯算法26. 分支限界法解旅行售貨員問題時,活結(jié)點表的組織形式是( A )。A、最小堆 B、最大堆 C、棧 D、數(shù)組27、Strassen矩陣乘法是利用( A )實現(xiàn)的算法。A、分治策略 B、動態(tài)規(guī)劃法 C、貪心法 D、回溯法29、使用分治法求解不需要滿足的條件是( A )。A 子問題必須是一樣的 B 子問題不能夠重復(fù)C 子問題的解可以合并 D 原問題和子問題使用相同的方法解30、下面問題( B )不能使用貪心法解決。A 單源最短路徑問題 B N皇后問題 C 最小生成樹問題 D 背包問題31、下列算法中不能解決0/1背包問題的是( A )A 貪心法 B 動態(tài)規(guī)劃 C
8、回溯法 D 分支限界法32、回溯法搜索狀態(tài)空間樹是按照( C )的順序。A 中序遍歷 B 廣度優(yōu)先遍歷 C 深度優(yōu)先遍歷 D 層次優(yōu)先遍歷33、下列隨機(jī)算法中運行時有時候成功有時候失敗的是( C )A 數(shù)值概率算法 B 舍伍德算法 C 拉斯維加斯算法 D 蒙特卡羅算法34實現(xiàn)合并排序利用的算法是( A )。A、分治策略 B、動態(tài)規(guī)劃法 C、貪心法 D、回溯法35下列是動態(tài)規(guī)劃算法基本要素的是( D )。A、定義最優(yōu)解 B、構(gòu)造最優(yōu)解 C、算出最優(yōu)解 D、子問題重疊性質(zhì)36下列算法中通常以自底向下的方式求解最優(yōu)解的是( B )。
9、A、分治法 B、動態(tài)規(guī)劃法 C、貪心法 D、回溯法37采用廣度優(yōu)先策略搜索的算法是( A )。A、分支界限法 B、動態(tài)規(guī)劃法 C、貪心法 D、回溯法38、合并排序算法是利用( A )實現(xiàn)的算法。A、分治策略 B、動態(tài)規(guī)劃法 C、貪心法 D、回溯法39、在下列算法中得到的解未必正確的是( B )。A、蒙特卡羅算法 B、拉斯維加斯算法 C、舍伍德算法 D、數(shù)值概率算法40、背包問題的貪心算法所需的計算時間為( B )A、O(n2n) B、O(nlogn) C、O(2n) D、O(n)41實現(xiàn)大整數(shù)的乘法是利用的算法(&
10、#160; C )。A、貪心法 B、動態(tài)規(guī)劃法 C、分治策略 D、回溯法420-1背包問題的回溯算法所需的計算時間為( A )A、O(n2n) B、O(nlogn) C、O(2n) D、O(n)43采用最大效益優(yōu)先搜索方式的算法是( A )。A、分支界限法 B、動態(tài)規(guī)劃法 C、貪心法 D、回溯法44貪心算法與動態(tài)規(guī)劃算法的主要區(qū)別是( B )。A、最優(yōu)子結(jié)構(gòu) B、貪心選擇性質(zhì) C、構(gòu)造最優(yōu)解 D、定義最優(yōu)解45. 實現(xiàn)最大子段和利用的算法是( B )。A、分治策略 B、動態(tài)規(guī)劃法 C、貪心
11、法 D、回溯法46.優(yōu)先隊列式分支限界法選取擴(kuò)展結(jié)點的原則是( C )。A、先進(jìn)先出 B、后進(jìn)先出 C、結(jié)點的優(yōu)先級 D、隨機(jī)47.背包問題的貪心算法所需的計算時間為( B )。A、O(n2n) B、O(nlogn) C、O(2n) D、O(n)48、廣度優(yōu)先是( A )的一搜索方式。A、分支界限法 B、動態(tài)規(guī)劃法 C、貪心法 D、回溯法49、舍伍德算法是( B )的一種。
12、A、分支界限算法 B、概率算法 C、貪心算法 D、回溯算法50下列哪一種算法是隨機(jī)化算法( D )A. 貪心算法 B. 回溯法 C.動態(tài)規(guī)劃算法 D.舍伍德算法51. 一個問題可用動態(tài)規(guī)劃算法或貪心算法求解的關(guān)鍵特征是問題的( B )。A、重疊子問題 B、最優(yōu)子結(jié)構(gòu)性質(zhì) C、貪心選擇性質(zhì) D、定義最優(yōu)解52采用貪心算法的最優(yōu)裝載問題的主要計算量在于將集裝箱依其重量從小到大
13、排序,故算法的時間復(fù)雜度為 ( B ) 。A、O(n2n) B、O(nlogn) C、O(2n) D、O(n)53. 以深度優(yōu)先方式系統(tǒng)搜索問題解的算法稱為 ( D ) 。A、分支界限算法 B、概率算法 C、貪心算法 D、回溯算法54. 實現(xiàn)最長公共子序列利用的算法是( B )。A、分治策略 B、動態(tài)規(guī)劃法 C、貪心法 D、回溯法A. void hanoi(int n, int A, int C, int B) if (n > 0) hanoi(n-1,A,C, B); move(n,a,b); hanoi(n-1, C, B, A); 55. Hano
14、i塔問題如下圖所示。現(xiàn)要求將塔座A上的的所有圓盤移到塔座B上,并仍按同樣順序疊置。移動圓盤時遵守Hanoi塔問題的移動規(guī)則。由此設(shè)計出解Hanoi塔問題的遞歸算法正確的為:(B)Hanoi塔B. void hanoi(int n, int A, int B, int C) if (n > 0) hanoi(n-1, A, C, B); move(n,a,b); hanoi(n-1, C, B, A); C. void hanoi(int n, int C, int B, int A) if (n > 0) hanoi(n-1, A, C, B); move(n,a,b); hano
15、i(n-1, C, B, A); D. void hanoi(int n, int C, int A, int B) if (n > 0) hanoi(n-1, A, C, B); move(n,a,b); hanoi(n-1, C, B, A); 56. 動態(tài)規(guī)劃算法的基本要素為( C )A. 最優(yōu)子結(jié)構(gòu)性質(zhì)與貪心選擇性質(zhì) B重疊子問題性質(zhì)與貪心選擇性質(zhì)C最優(yōu)子結(jié)構(gòu)性質(zhì)與重疊子問題性質(zhì) D. 預(yù)排序與遞歸調(diào)用57. 能采用貪心算法求最優(yōu)解的問題,一般具有的重要性質(zhì)為:( A )A. 最優(yōu)子結(jié)構(gòu)性質(zhì)與貪心選擇性質(zhì) B重疊子問題性質(zhì)與貪心選擇性質(zhì)C最優(yōu)子結(jié)構(gòu)性質(zhì)與重疊子問題性質(zhì) D. 預(yù)排
16、序與遞歸調(diào)用58. 回溯法在問題的解空間樹中,按( D )策略,從根結(jié)點出發(fā)搜索解空間樹。A.廣度優(yōu)先 B. 活結(jié)點優(yōu)先 C.擴(kuò)展結(jié)點優(yōu)先 D. 深度優(yōu)先59. 分支限界法在問題的解空間樹中,按( A )策略,從根結(jié)點出發(fā)搜索解空間樹。 A.廣度優(yōu)先 B. 活結(jié)點優(yōu)先 C.擴(kuò)展結(jié)點優(yōu)先 D. 深度優(yōu)先60. 程序塊( A )是回溯法中遍歷排列樹的算法框架程序。void backtrack (int t) if (t>n) output(x); else for (int i=t;i<=n;i+) swap(xt, xi); if (legal(t) backtrack(t+1);
17、swap(xt, xi); A.void backtrack (int t) if (t>n) output(x); else for (int i=0;i<=1;i+) xt=i; if (legal(t) backtrack(t+1); B. C.void backtrack (int t) if (t>n) output(x); else for (int i=0;i<=1;i+) xt=i; if (legal(t) backtrack(t-1); void backtrack (int t) if (t>n) output(x); else for (i
18、nt i=t;i<=n;i+) swap(xt, xi); if (legal(t) backtrack(t+1); D.61. 常見的兩種分支限界法為(D)A. 廣度優(yōu)先分支限界法與深度優(yōu)先分支限界法;B. 隊列式(FIFO)分支限界法與堆棧式分支限界法;C. 排列樹法與子集樹法;D. 隊列式(FIFO)分支限界法與優(yōu)先隊列式分支限界法;二、填空題 1.算法的復(fù)雜性有 時間 復(fù)雜性和 空間 復(fù)雜性之分。2、程序是 算法 用某種程序設(shè)計語言的具體實現(xiàn)。3、算法的“確定性”指的是組成算法的每條 指令 是清晰的,無歧義的。4. 矩陣連
19、乘問題的算法可由 動態(tài)規(guī)劃 設(shè)計實現(xiàn)。5、拉斯維加斯算法找到的解一定是 正確解。6、算法是指解決問題的 一種方法 或 一個過程 。7、從分治法的一般設(shè)計模式可以看出,用它設(shè)計出的程序一般是 遞歸算法 。8、問題的 最優(yōu)子結(jié)構(gòu)性質(zhì) 是該問題可用動態(tài)規(guī)劃算法或貪心算法求解的關(guān)鍵特征。9、以深度優(yōu)先方式系統(tǒng)搜索問題解的算法稱為 回溯法 。10、數(shù)值概率算法常用于 數(shù)值問題 的求解。11、計算一個算法時間復(fù)雜度通常可以計算 循環(huán)次數(shù) 、 基本操作的頻率 或計算步。12、利用概率的性質(zhì)計算近似值的隨機(jī)算法是_數(shù)值概率算法,運行時以一定的概率得到正確解的隨機(jī)算法是_蒙特卡羅算法_。14、解決0/1背包問題
20、可以使用動態(tài)規(guī)劃、回溯法和分支限界法,其中不需要排序的是 動態(tài)規(guī)劃 ,需要排序的是 回溯法 ,分支限界法 。15、使用回溯法進(jìn)行狀態(tài)空間樹裁剪分支時一般有兩個標(biāo)準(zhǔn):約束條件和目標(biāo)函數(shù)的界,N皇后問題和0/1背包問題正好是兩種不同的類型,其中同時使用約束條件和目標(biāo)函數(shù)的界進(jìn)行裁剪的是 0/1背包問題 ,只使用約束條件進(jìn)行裁剪的是 N皇后問題 。16、 貪心選擇性質(zhì) 是貪心算法可行的第一個基本要素,也是貪心算法與動態(tài)規(guī)劃算法的主要區(qū)別。17、矩陣連乘問題的算法可由 動態(tài)規(guī)劃 設(shè)計實現(xiàn)。18、拉斯維加斯算法找到的解一定是 正確解。19.貪心算法的基本要素是 貪心選擇 性質(zhì)和 最優(yōu)子結(jié)構(gòu) 性質(zhì) 。21
21、. 動態(tài)規(guī)劃算法的基本思想是將待求解問題分解成若干 子問題 ,先求解 子問題 ,然后從這些 子問題 的解得到原問題的解。22.算法是由若干條指令組成的有窮序列,且要滿足輸入、 輸出 、確定性和 有限性 四條性質(zhì)。23、大整數(shù)乘積算法是用 分治法 來設(shè)計的。24、以廣度優(yōu)先或以最小耗費方式搜索問題解的算法稱為 分支限界法 。25、舍伍德算法總能求得問題的 一個解 。26、 貪心選擇性質(zhì) 是貪心算法可行的第一個基本要素,也是貪心算法與動態(tài)規(guī)劃算法的主要區(qū)別。27.快速排序算法是基于 分治策略 的一種排序算法。28.動態(tài)規(guī)劃算法的兩個基本要素是. 最優(yōu)子結(jié)構(gòu) 性質(zhì)和 重疊子問題 性質(zhì) 。 30.回溯
22、法是一種既帶有 系統(tǒng)性 又帶有 跳躍性 的搜索算法。 31.分支限界法主要有 隊列式(FIFO) 分支限界法和 優(yōu)先隊列式 分支限界法。32.分支限界法是一種既帶有 系統(tǒng)性 又帶有 跳躍性 的搜索算法。33.回溯法搜索解空間樹時,常用的兩種剪枝函數(shù)為 約束函數(shù) 和 限界函數(shù) 。34.任何可用計算機(jī)求解的問題所需的時間都與其 規(guī)模 有關(guān)。35.快速排序算法的性能取決于 劃分的對稱性 。36.所謂貪心選擇性質(zhì)是指 所求問題的整體最優(yōu)解可以通過一系列局部最優(yōu)的選擇,即貪心選擇來達(dá)到 。37.所謂最優(yōu)子結(jié)構(gòu)性質(zhì)是指 問題的最優(yōu)解包含了其子問題的最優(yōu)解 。38.回溯法是指 具有限界函數(shù)的深度優(yōu)先生成法
23、。39.用回溯法解題的一個顯著特征是在搜索過程中動態(tài)產(chǎn)生問題的解空間。在任何時刻,算法只保存從根結(jié)點到當(dāng)前擴(kuò)展結(jié)點的路徑。如果解空間樹中從根結(jié)點到葉結(jié)點的最長路徑的長度為h(n),則回溯法所需的計算空間通常為 O(h(n) )。40.回溯法的算法框架按照問題的解空間一般分為 子集樹 算法框架與 排列樹 算法框架。41.用回溯法解0/1背包問題時,該問題的解空間結(jié)構(gòu)為 子集樹 結(jié)構(gòu)。42.用回溯法解批處理作業(yè)調(diào)度問題時,該問題的解空間結(jié)構(gòu)為 排列樹 結(jié)構(gòu)。43.旅行售貨員問題的解空間樹是 排列樹 。三、算法填空1.背包問題的貪心算法void Knapsack(int n,float M,floa
24、t v,float w,float x)/重量為w1.n,價值為v1.n的 n個物品,裝入容量為M的背包/用貪心算法求最優(yōu)解向量x1.nint i; Sort(n,v,w); for (i=1;i<=n;i+) xi=0; float c=M; for (i=1;i<=n;i+) if (wi>c) break; xi=1; c-=wi; if (i<=n) xi=c/wi;2.最大子段和: 動態(tài)規(guī)劃算法int MaxSum(int n, int a) int sum=0, b=0; /sum存儲當(dāng)前最大的bj, b存儲bj for (int j=1; j<=n;
25、 j+) if (b>0) b+= aj ; else b=ai; ; /一旦某個區(qū)段和為負(fù),則從下一個位置累和 if(b>sum) sum=b; return sum; 3.貪心算法求活動安排問題template<class Type>void GreedySelector(int n, Type s, Type f, bool A) A1=true; int j=1; for (int i=2;i<=n;i+) if (si>=fj) Ai=true; j=i; else Ai=false;4.快速排序template<class Type>
26、void QuickSort (Type a, int p, int r) if (p<r) int q=Partition(a,p,r); QuickSort (a,p,q-1); /對左半段排序 QuickSort (a,q+1,r); /對右半段排序 5.排列問題Template <class Type>void perm(Type list, int k, int m )/產(chǎn)生listk:m的所有排列 if (k=m) /只剩下一個元素 for (int i=0;i<=m;i+) cout<<listi; cout<<endl; else
27、 /還有多個元素待排列,遞歸產(chǎn)生排列 for (int i=k; i<=m; i+) swap(listk,listi); perm(list,k+1;m); swap(listk,listi); 6. 回溯法解迷宮問題 迷宮用二維數(shù)組存儲,用'H'表示墻,'O'表示通道int x1,y1,success=0; /出口點void MazePath(int x,int y)/遞歸求解:求迷宮maze從入口(x,y)到出口(x1,y1)的一條路徑 mazexy='*' /路徑置為* if (x=x1)&&(y=y1) succe
28、ss=1; /到出口則成功 else if (mazexy+1='O') MazePath(x,+y); /東鄰方格是通路,向東嘗試 if (!success)&&(mazex+1y='O') MazePath(+x,y); /不成功且南鄰方格是通路,向南嘗試 if (!success)&&(mazexy-1='O') MazePath(x,-y); /不成功且西鄰方格是通路,向西嘗試 if (!success)&&(mazex-1y='O') MazePath(-x,y); /不成
29、功且北鄰方格是通路,向北嘗試 if (!success) mazexy='' /死胡同置為四、證明題1.舉反例證明0/1背包問題若使用的算法是按照pi/wi的非遞減次序考慮選擇的物品,即只要正在被考慮的物品裝得進(jìn)就裝入背包,則此方法不一定能得到最優(yōu)解(此題說明0/1背包問題與背包問題的不同)。證明:舉例如:p=7,4,4,w=3,2,2,c=8時,由于7/3最大,若按題目要求的方法,只能取第一個,解為1,0,0,入包重量是7,價值為3。而此實例的最大價值應(yīng)該是4,取第2,3 個,最優(yōu)解為0,1,1。2.旅行家要旅行n個城市,要求各個城市經(jīng)歷且僅經(jīng)歷一次然后回到出發(fā)城市,并要求所
30、走的路程最短。證明TSP問題滿足最優(yōu)性原理證明:設(shè)s, s1, s2, , sp, s是從s出發(fā)的一條路徑長度最短的簡單回路,假設(shè)從s到下一個城市s1已經(jīng)求出,則問題轉(zhuǎn)化為求從s1到s的最短路徑,顯然s1, s2, , sp, s一定構(gòu)成一條從s1到s的最短路徑。 如若不然,設(shè)s1, r1, r2, , rq, s是一條從s1到s的最短路徑且經(jīng)過n-1個不同城市,則s, s1, r1, r2, , rq, s將是一條從s出發(fā)的路徑長度最短的簡單回路且比s, s1, s2, , sp, s要短,從而導(dǎo)致矛盾。所以,TSP問題滿足最優(yōu)性原理。五、問(解)答題1. 試述分治法的基本思想分治法的基本思
31、想是將一個規(guī)模為n的問題分解為k個規(guī)模較小的子問題,這些子問題互相獨立且與原問題相同。遞歸地解這些子問題,然后將各個子問題的解合并得到原問題的解。2. 設(shè)計動態(tài)規(guī)劃算法有哪些主要步驟設(shè)計動態(tài)規(guī)劃算法的主要步驟為:(1)找出最優(yōu)解的性質(zhì),并刻劃其結(jié)構(gòu)特征。(2)遞歸地定義最優(yōu)值。(3)以自底向上的方式計算出最優(yōu)值。(4)根據(jù)計算最優(yōu)值時得到的信息,構(gòu)造最優(yōu)解。3. 分治法與動態(tài)規(guī)劃法的異同分治法與動態(tài)規(guī)劃法的相同點是:將待求解的問題分解成若干個子問題,先求解子問題,然后從這些子問題的解得到原問題的解。兩者的不同點是:適合于用動態(tài)規(guī)劃法求解的問題,經(jīng)分解得到的子問題往往不是互相獨立的。而用分治法求
32、解的問題,經(jīng)分解得到的子問題往往是互相獨立的。4.比較分支限界法與回溯法的異同分支限界法與回溯法的相同點是:都是一種在問題的解空間樹T中搜索問題解的算法。不同點:(1)求解目標(biāo)不同;(2)搜索方式不同;(3)對擴(kuò)展結(jié)點的擴(kuò)展方式不同; (4)存儲空間的要求不同。5.寫出回溯法搜索子集樹的算法用回溯法搜索子集樹的算法為:void backtrack (int t) if (t>n) output(x); else for (int i=0;i<=1;i+) xt=i; if (constraint(t)&&bound(t) backtrack(t+1); 6. 分治法
33、所能解決的問題一般具有哪些特征分治法所能解決的問題一般具有的幾個特征是:(1)該問題的規(guī)模縮小到一定的程度就可以容易地解決; (2)該問題可以分解為若干個規(guī)模較小的相同問題,即該問題具有最優(yōu)子結(jié)構(gòu)性質(zhì); (3)利用該問題分解出的子問題的解可以合并為該問題的解; (4)原問題所分解出的各個子問題是相互獨立的,即子問題之間不包含公共的子問題。7. 分支限界法設(shè)計算法有哪些步驟用分支限界法設(shè)計算法的步驟是:(1)針對所給問題,定義問題的解空間(對解進(jìn)行編碼);分(2)確定易于搜索的解空間結(jié)構(gòu)(按樹或圖組織解) ;(3)以廣度優(yōu)先或以最小耗費(最大收益)優(yōu)先的方式搜索解空間,并在搜索過程中用剪枝函數(shù)避
34、免無效搜索。8. 常見的兩種分支限界法的算法框架是什么常見的兩種分支限界法的算法框架(1)隊列式(FIFO)分支限界法:按照隊列先進(jìn)先出(FIFO)原則選取下一個節(jié)點為擴(kuò)展節(jié)點。 (2)優(yōu)先隊列式分支限界法:按照優(yōu)先隊列中規(guī)定的優(yōu)先級選取優(yōu)先級最高的節(jié)點成為當(dāng)前擴(kuò)展節(jié)點。9. 回溯法中常見哪兩類典型的解空間樹?分析各自的使用場合及時間復(fù)雜度。回溯法中常見的兩類典型的解空間樹是子集樹和排列樹。當(dāng)所給的問題是從n個元素的集合S中找出滿足某種性質(zhì)的子集時,相應(yīng)的解空間樹稱為子集樹。這類子集樹通常有2n個葉結(jié)點,遍歷子集樹需O(2n)計算時間 。當(dāng)所給的問題是確定n個元素滿足某種性質(zhì)的排列時,相應(yīng)的解
35、空間樹稱為排列樹。這類排列樹通常有n!個葉結(jié)點。遍歷排列樹需要O(n!)計算時間。10. 分支限界法的搜索策略是什么?分支限界法的搜索策略是:在擴(kuò)展結(jié)點處,先生成其所有的兒子結(jié)點(分支),然后再從當(dāng)前的活結(jié)點表中選擇下一個擴(kuò)展結(jié)點。為了有效地選擇下一擴(kuò)展結(jié)點,加速搜索的進(jìn)程,在每一個活結(jié)點處,計算一個函數(shù)值(限界),并根據(jù)函數(shù)值,從當(dāng)前活結(jié)點表中選擇一個最有利的結(jié)點作為擴(kuò)展結(jié)點,使搜索朝著解空間上有最優(yōu)解的分支推進(jìn),以便盡快地找出一個最優(yōu)解。11.使用動態(tài)規(guī)劃法求解TSP問題。各個城市間的距離可以用代價矩陣來表示。帶權(quán)圖的代價矩陣假設(shè)n個頂點用0n-1的數(shù)字編號,首先生成1n-1個元素的子集存
36、放在數(shù)組V2n-1中,設(shè)數(shù)組dn2n-1存放迭代結(jié)果,其中dij表示從頂點i經(jīng)過子集Vj中的頂點一次且僅一次,最后回到出發(fā)點0的最短路徑長度。填表方法:自底向上,逐步求值。利用前一步求出的值計算出后一步的值填入表中,每一步結(jié)束后選擇最小值作為子問題的最優(yōu)值,最后一步為原問題的最優(yōu)解。完成以下表格的填寫j i 1231,21,32,31,2,30101586726951033121114第1步第2步第3步第4步最短路徑為:01230,最短路徑長度為:10填表過程如下:第1步:填寫第1列,d(1, )=c10=5 (10); d(2, )=c20=6 (20); d(3, )=c30=3 (30)
37、第2步:d(1, 2)= c12+d(2, )=2+6=8(12) d(1, 3)= c13+d(3, )=3+3=6(13)d(2, 1)= c21+d(1, )=4+5=9(21) d(2, 3)= c23+d(3, )=2+3=5(23)d(3, 1)= c31+d(1, )=7+5=12(31) d(3, 2)= c32+d(2, )=5+6=11(32)第3步:d(1, 2, 3)=minc12+d(2, 3), c13+ d(3, 2)=min2+5, 3+11=7(12)d(2, 1, 3)=minc21+d(1, 3), c23+ d(3, 1)=min4+6, 2+12=10
38、(21)d(3, 1, 2)=minc31+d(1, 2), c32+ d(2, 1)=min7+8, 5+9=14(32)第4步:d(0, 1, 2, 3)=minc01+ d(1, 2, 3), c02+ d(2, 1, 3), c03+ d(3, 1, 2) =min3+7, 6+10, 7+14=10(01)六、算法設(shè)計題1. 給定已按升序排好序的n個元素a0:n-1,現(xiàn)要在這n個元素中找出一特定元素x,返回其在數(shù)組中的位置,如果未找到返回-1。寫出二分搜索的算法,并分析其時間復(fù)雜度。template<class Type> int BinarySearch(Type a,
39、 const Type& x, int n)/在a0:n中搜索x,找到x時返回其在數(shù)組中的位置,否則返回-1 Int left=0; int right=n-1; While (left<=right) int middle=(left+right)/2; if (x=amiddle) return middle; if (x>amiddle) left=middle+1; else right=middle-1; Return -1; 時間復(fù)雜性為O(logn)2. 利用分治算法寫出合并排序的算法,并分析其時間復(fù)雜度 void MergeSort(Type a, int
40、left, int right) if (left<right) /至少有2個元素 int i=(left+right)/2; /取中點 mergeSort(a, left, i); mergeSort(a, i+1, right); merge(a, b, left, i, right); /合并到數(shù)組b copy(a, b, left, right); /復(fù)制回數(shù)組a 算法在最壞情況下的時間復(fù)雜度為O(nlogn)。3.N皇后回溯法bool Queen:Place(int k) /檢查xk位置是否合法 for (int j=1;j<k;j+) if (abs(k-j)=abs(
41、xj-xk)|(xj=xk) return false; return true; void Queen:Backtrack(int t) if (t>n) sum+; else for (int i=1;i<=n;i+) xt=i; if ( 約束函數(shù) ) Backtrack(t+1); 4.最大團(tuán)問題void Clique:Backtrack(int i) / 計算最大團(tuán) if (i > n) / 到達(dá)葉結(jié)點 for (int j = 1; j <= n; j+) bestxj = xj; bestn = cn; return; / 檢查頂點 i 與當(dāng)前團(tuán)的連接 i
42、nt OK = 1; for (int j = 1; j < i; j+) if (xj && aij = 0) / i與j不相連 OK = 0; break; if (OK ) / 進(jìn)入左子樹 xi = 1; cn+; Backtrack(i+1); xi = 0; cn-; if (cn+n-i>bestn) / 進(jìn)入右子樹 xi = 0; Backtrack(i+1); 5.統(tǒng)計數(shù)字問題:一本書的頁碼從自然數(shù)1開始順序編碼直到自然數(shù)n。書的頁碼按照通常的習(xí)慣編排,每個頁碼都不含多余的前導(dǎo)數(shù)字0。例如,第6頁用數(shù)字6表示,而不是06或006等。數(shù)字計數(shù)問題要求對
43、給定書的總頁碼n(1n109),計算出書的全部頁碼中分別用到多少次數(shù)字0,1,2,9。輸入數(shù)據(jù)、輸出結(jié)果示例輸入數(shù)據(jù):11 輸出結(jié)果:數(shù) 字: 0 1 2 3 4 5 6 7 8 9用到次數(shù): 1 4 1 1 1 1 1 1 1 1 void count(int n,int a10)int i,x,y; for (i=0;i<=9;i+) ai=0; for (i=1;i<=n;i+) x=i; while (x) y=x%10; ay+; x/=10; 6. 順序表存儲表示如下:typedef structRedType rMAXSIZE+1; /順序表 int length; /順序表長度SqList;編寫對順序表L進(jìn)行快速排序的算法。int Partition(SqList &L,int low,int high) /算法10.6(b) /交換順序表L中子表L.rlow.high的記錄,樞軸記錄到位,并返回其所在位置, /此時在它之前(后)的記
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 體育場地建設(shè)中的工程難題及應(yīng)對措施
- 初中德育課程改革計劃
- 城市綠化帶維護(hù)保修及售后措施
- 2024學(xué)年數(shù)學(xué)課堂教學(xué)創(chuàng)新計劃
- 以形助數(shù):高中代數(shù)可視化教學(xué)的探索與實踐
- 以幼兒為本:A幼兒園“同課異構(gòu)”教研活動的實踐探索與成效研究
- 以學(xué)生為中心:中職基礎(chǔ)英語課堂教學(xué)有效性的多維探究
- 以太極柔力球教學(xué)為鑰:開啟大學(xué)生體育鍛煉與心理和諧之門
- 以聲為翼:中學(xué)音樂教學(xué)中歌唱訓(xùn)練的多維探索與實踐
- 工廠工業(yè)用地買賣合同協(xié)議書范文
- 期末達(dá)標(biāo)測試卷(含答案)2024-2025學(xué)年人教版七年級數(shù)學(xué)下冊
- 2025年廣安市中考語文試卷真題(含標(biāo)準(zhǔn)答案)
- 云南省昆明市2023-2024學(xué)年高二下學(xué)期期末質(zhì)量檢測數(shù)學(xué)試題(解析版)
- 2025年蘇教版四年級(下)期末考試數(shù)學(xué)試卷(含答案)
- 酒店定制水合同范本
- 早期腫瘤篩查
- 農(nóng)業(yè)托管經(jīng)營協(xié)議書
- 腫瘤內(nèi)科病案質(zhì)量管理
- 2025年高考語文備考之考綱規(guī)定實詞200文言實詞課內(nèi)出處注解匯編
- 2024年7月黑龍江省普通高中學(xué)業(yè)水平合格性考試生物試卷(含答案)
- 《氣象學(xué)與氣候?qū)W期末考試試卷》
評論
0/150
提交評論