算法設計與分析期末試題_考試版_第1頁
算法設計與分析期末試題_考試版_第2頁
算法設計與分析期末試題_考試版_第3頁
全文預覽已結束

下載本文檔

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

文檔簡介

1、1、用計算機求解問題的步驟:1、問題分析2、數(shù)學模型建立3、算法設計與選擇4、算法指標5、算法分析6、算法實現(xiàn)7、程序調(diào)試8、結果整理文檔編制2、算法定義:算法是指在解決問題時,按照某種機械步驟一定可以得到問題結果的處理過程3、算法的三要素1、操作2、控制結構3、數(shù)據(jù)結構算法具有以下5個屬性:有窮性:一個算法必須總是在執(zhí)行有窮步之后結束,且每一步都在有窮時間內(nèi)完成。確定性:算法中每一條指令必須有確切的含義。不存在二義性。只有一個入口和一個出口可行性:一個算法是可行的就是算法描述的操作是可以通過已經(jīng)實現(xiàn)的基本運算執(zhí)行有限次來實現(xiàn)的。輸入:一個算法有零個或多個輸入,這些輸入取自于某個特定對象的集合

2、。輸出:一個算法有一個或多個輸出,這些輸出同輸入有著某些特定關系的量。算法設計的質(zhì)量指標:正確性:算法應滿足具體問題的需求;可讀性:算法應該好讀,以有利于讀者對程序的理解;健壯性:算法應具有容錯處理,當輸入為非法數(shù)據(jù)時,算法應對其作出反應,而不是產(chǎn)生莫名其妙的輸出結果。效率與存儲量需求:效率指的是算法執(zhí)行的時間;存儲量需求指算法執(zhí)行過程中所需要的最大存儲空間。一般這兩者與問題的規(guī)模有關。經(jīng)常采用的算法主要有迭代法、分而治之法、貪婪法、動態(tài)規(guī)劃法、回溯法、分支限界法迭代法 基本思想:迭代法也稱“輾轉法”,是一種不斷用變量的舊值遞推出新值的解決問題的方法。解題步驟:1、確定迭代模型。根據(jù)問題描述,

3、分析得出前一個(或幾個)值與其下一個值的迭代關系數(shù)學模型。2、建立迭代關系式。迭代關系式就是一個直接或間接地不斷由舊值遞推出新值的表達式,存儲新值的變量稱為迭代變量3、對迭代過程進行控制。確定在什么時候結束迭代過程,這是編寫迭代程序必須考慮的問題。不能讓迭代過程無休止地重復執(zhí)行下去。迭代過程的控制通??煞譃閮煞N情況:一種是所需的迭代次數(shù)是個確定的值,可以計算出來;另一種是所需的迭代次數(shù)無法確定。對于前一種情況,可以構建一個固定次數(shù)的循環(huán)來實現(xiàn)對迭代過程的控制;對于后一種情況,需要進一步分析出用來結束迭代過程的條件。編寫計算斐波那契(Fibonacci)數(shù)列的第n項函數(shù)fib(n)。寫成遞歸函數(shù)

4、有:int fib(int n) if (n=0) return 0;if (n=1) return 1;if (n1) return fib(n-1)+fib(n-2);一個飼養(yǎng)場引進一只剛出生的新品種兔子,這種兔子從出生的下一個月開始,每月新生一只兔子,新生的兔子也如此繁殖。如果所有的兔子都不死去,問到第 12 個月時,該飼養(yǎng)場共有兔子多少只?Main()int I,a=1,b=1;Print(a,b);For(i=1;i=10;i+)C=a+b;Print(c);A=b;B=c;分而治之法1、基本思想 將一個難以直接解決的大問題,分割成一些規(guī)模較小的相同問題,以便各個擊破,分而治之。 分

5、治法所能解決的問題一般具有以下幾個特征: (1)該問題的規(guī)??s小到一定的程度就可以容易地解決; (2)該問題可以分解為若干個規(guī)模較小的相同問題,即該問題具有最優(yōu)子結構性質(zhì); (3)利用該問題分解出的子問題的解可以合并為該問題的解; (4)該問題所分解出的各個子問題是相互獨立的,即子問題之間不包含公共的子子問題。 3、分治法的基本步驟 (1)分解:將原問題分解為若干個規(guī)模較小,相互獨立,與原問題形式相同的子問題; (2)解決:若子問題規(guī)模較小而容易被解決則直接解,否則遞歸地解各個子問題; (3)合并:將各個子問題的解合并為原問題的解。貪婪法基本思想:以逐步的局部最優(yōu),達到最終的全局最優(yōu)。無后效性

6、【問題】 背包問題 問題描述:有不同價值、不同重量的物品n件,求從這n件物品中選取一部分物品的選擇方案,使選中物品的總重量不超過指定的限制重量,但選中物品的價值之和最大。 #includevoid main()int m,n,i,j,w50,p50,pl50,b50,s=0,max;printf(輸入背包容量m,物品種類n :);scanf(%d %d,&m,&n);for(i=1;i=n;i=i+1)printf(輸入物品的重量W和價值P :);scanf(%d %d,&wi,&pi);pli=pi;s=s+wi;if(s=m)printf(whole choosen);/return;fo

7、r(i=1;i=n;i=i+1)max=1;for(j=2;jplmax/wmax)max=j;plmax=0;bi=max;for(i=1,s=0;sm & i=n;i=i+1)s=s+wbi;if(s!=m)wbi-1=m-wbi-1;for(j=1;j=i-1;j=j+1)printf(choose weight %dn,wbj);動態(tài)規(guī)劃基本思想:把求解的問題分成許多階段或多個子問題,然后按順序求解各個子問題。前一個子問題的解為后一個子問題的求解提供了有用的信息。在求解任何一子問題時,列出各種可能的局部解,通過決策保留那些有可能達到最優(yōu)的局部解,丟棄其他局部解,依次解決各子問題,最后一

8、個子問題就是問題的解?;静襟E(1)劃分階段:按照問題的時間或空間特征,把問題分為若干個階段。注意這若干個階段一定要是有序的或者是可排序的(即無后向性),否則問題就無法用動態(tài)規(guī)劃求解。 (2)選擇狀態(tài):將問題發(fā)展到各個階段時所處于的各種客觀情況用不同的狀態(tài)表示出來。當然,狀態(tài)的選擇要滿足無后效性。 (3)確定決策并寫出狀態(tài)轉移方程:之所以把這兩步放在一起,是因為決策和狀態(tài)轉移有著天然的聯(lián)系,狀態(tài)轉移就是根據(jù)上一階段的狀態(tài)和決策來導出本階段的狀態(tài)。所以,如果我們確定了決策,狀態(tài)轉移方程也就寫出來了。但事實上,我們常常是反過來做,根據(jù)相鄰兩段的各狀態(tài)之間的關系來確定決策。 回溯法基本思想:按照深度優(yōu)先策略,從根結點出發(fā)搜索解空間。算法搜索至解空間的任一結點時總是先判斷該結點是否問題的約束條件。如果滿足進入該子樹,繼續(xù)按深度優(yōu)先的策略搜索。否則,不去搜索以該結點為根的子樹,而是逐層向其祖先結點回溯。其實回溯法就是對隱式圖的深度優(yōu)先搜索算法基本步驟:1、 確定問題的解空間:應用回溯法時,首先應明確定義問題的解的空間。問題的解空間應至少包含問題的一個解。2、 確定結點的擴展規(guī)則3、 搜索解空間:從開始結點出發(fā),以深度優(yōu)

溫馨提示

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

評論

0/150

提交評論