


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、汽車加油問題之貪心算法(一)問題描述一輛汽車加滿油后可以行駛 N千米。旅途中有若干個加油站。指出若要使沿途的加油次 數(shù)最少,設(shè)計(jì)一個有效的算法,指出應(yīng)在那些加油站??考佑?。給出N,并以數(shù)組的形式給出加油站的個數(shù)及相鄰距離,指出若要使沿途的加油次數(shù)最 少,設(shè)計(jì)一個有效的算法, 指出應(yīng)在那些加油站??考佑?。要求:算法執(zhí)行的速度越快越好。(二)問題分析(前提行駛前車?yán)锛訚M油)k,每個加油站間距離為ai; i=0, 1,對于這個問題我們有以下幾種情況:設(shè)加油次數(shù)為2, 3n1始點(diǎn)到終點(diǎn)的距離小于N,則加油次數(shù)k=0 ;i=aj=L<N ,則加油次數(shù) k= n/N(n%N=O)或i ! =aj,則
2、加油次數(shù)k通過以下算法求解。2始點(diǎn)到終點(diǎn)的距離大于N ,A力啪站間的距離相等,即aB力啪站間的距離相等,即aC力啪站間的距離相等,即ak=n/N+1(n%N ! =0);D力口油站間的距離不相等,即a(三)算法描述i=aj=L=N,則加油次數(shù)最少k=n;i=aj=L>N,則不可能到達(dá)終點(diǎn);貪心算法的基本思想該題目求加油最少次數(shù),即求最優(yōu)解的問題,可分成幾個步驟,一般來說,每個步驟的 最優(yōu)解不一定是整個問題的最優(yōu)解,然而對于有些問題,局部貪心可以得到全局的最優(yōu)解。 貪心算法將問題的求解過程看作是一系列選擇,從問題的某一個初始解出發(fā),向給定目標(biāo)推進(jìn)。推進(jìn)的每一階段不是依據(jù)某一個固定的遞推式,
3、而是在每一個階段都看上去是一個最優(yōu)的決策(在一定的標(biāo)準(zhǔn)下)。不斷地將問題實(shí)例歸納為更小的相似的子問題,并期望做出的 局部最優(yōu)的選擇產(chǎn)生一個全局得最優(yōu)解。貪心算法的適用的問題貪心算法適用的問題必須滿足兩個屬性:(1) 貪心性質(zhì):整體的最優(yōu)解可通過一系列局部最優(yōu)解達(dá)到,并且每次的選擇可以 依賴以前做出的選擇,但不能依賴于以后的選擇。(2) 最優(yōu)子結(jié)構(gòu):問題的整體最優(yōu)解包含著它的子問題的最優(yōu)解。貪心算法的基本步驟(1)分解:將原問題分解為若干相互獨(dú)立的階段。(2)解決:對于每一個階段求局部的最優(yōu)解。(3)合并:將各個階段的解合并為原問題的解。問題分析由于汽車是由始向終點(diǎn)方向開的,我們最大的麻煩就是不
4、知道在哪個加油站加油可以使我 們既可以到達(dá)終點(diǎn)又可以使我們加油次數(shù)最少。提出問題是解決的開始為了著手解決遇到的困難,取得最優(yōu)方案。我們可以假設(shè)不到萬不 得已我們不加油,即除非我們油箱里的油不足以開到下一個加油站,我們才加一次油。在局部找到一個最優(yōu)的解。卻每加一次油我們可以看作是一個新的起點(diǎn),用相同的遞歸方法進(jìn)行下去。最終將各個階段的最優(yōu)解合并為原問題的解得到我們原問題的求解。加油站貪心算法設(shè)計(jì)(C):in clude<math.h>in clude<studio.h>int add(i nt b ,i nt m,i nt n) 求一個從 m到n的數(shù)列的和int sb;f
5、or(i nt i=m;i <n ;i+) sb+=bi;return sb;int Tanxin(int an, int N)an表示加油站的個數(shù),N為加滿油能行駛的最遠(yuǎn)距離int bn;/若在ai加油站加油,則 bi為1,否則為0int m=0;if(ai>N) return ERROR;/如果某相鄰的兩個加油站間的距離大于N,則不能到達(dá)終點(diǎn)if(add(ai, 0, n )<N) /如果這段距離小于N,則不需要加油bi=0;return add(bi,0, n);if(ai=aj&&ai=N) /如果每相鄰的兩個加油站間的距離都是N,則每個加油站都需要加
6、油bi=1;return add(bi,O, n);if(ai=aj&&ai<N) /如果每相鄰的兩個加油站間的距離相等且都小于Nif( add(ai,m,k) < N && add(ai,m,k+1) > N )bk=1;m+=k;return add(bi,0, n);if(ai!=aj) /如果每相鄰的兩個加油站間的距離不相等且都小于Nif( add(ai,m,k) < N && add(ai,m,k+1) > N )bk=1;m+=k;return add(bi,0, n);viod mai n()int a
7、;scan f("%d",a);scan f("/n");scan f("/d",&N);Tanxin( a ,0, n);貪心算法正確性證明:貪心選擇性質(zhì)所謂貪心選擇性質(zhì)是指所求問題的整體最優(yōu)解可以通過一系列局部最優(yōu)的選擇,即貪心 選擇來達(dá)到。對于一個具體的問題,要確定它是否具有貪心性質(zhì),我們必須證明每一步所作的貪心選擇最終導(dǎo)致問題的一個整體最優(yōu)解。該題設(shè)在加滿油后可行駛的N千米這段路程上任取兩個加油站A、B,且A距離始點(diǎn)比E距離始點(diǎn)近,則若在E加油不能到達(dá)終點(diǎn)那么在A加油一定不能到達(dá)終點(diǎn),因?yàn)閙+N<n+N,即在B點(diǎn)
8、加油可行駛的路程比在A點(diǎn)加油可行駛的路程要長 n-m千米,所以只要終點(diǎn)不在B、C之間且在C的右邊的話,根據(jù)貪心選擇,為使加油次數(shù)最少就會選擇距離加滿油得點(diǎn)遠(yuǎn)一些的加油站去加油,因此,加油次數(shù)最少滿足貪心選擇性質(zhì)。最優(yōu)子結(jié)構(gòu)性質(zhì):當(dāng)一個問題大的最優(yōu)解包含著它的子問題的最優(yōu)解時,稱該問題具有最優(yōu)子結(jié)構(gòu)性質(zhì)。 由于(b1,b2,b)是這段路程加油次數(shù)最少的一個滿足貪心選擇性質(zhì)的最優(yōu)解,則 易知若在第一個加油站加油時,b1=1,則(b2,b3,bn是從a2到an這段路程上加油次數(shù)最少且這段路程上的加油站個數(shù)為(a2,a3,an的最優(yōu)解,即每次汽車中剩下的油不能在行駛到下一個加油站時我們才在這個加油站加一次油,每個過程從加油開始行駛到
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 同城轉(zhuǎn)租 店鋪合同范例
- 雙工作合同范本
- 雙方合資協(xié)議合同范本
- 加工承攬合同范本新
- 勞務(wù)短期合同范本
- 廚柜代銷合同范本
- 租賃合同變更服務(wù)合同范本
- 印刷產(chǎn)品定做合同范本
- 大件搬運(yùn)服務(wù)合同范本
- 合作傭金合同范本
- 2023年北京市中學(xué)生數(shù)學(xué)競賽高一年級復(fù)賽試題及解答
- 乙?;蚁┩p烯酮;二乙烯酮;雙乙烯酮)的理化性質(zhì)及危險特性表
- 酒店機(jī)房巡視簽到表
- API-650-1鋼制焊接石油儲罐
- 鼠疫演練腳本
- 變壓器試驗(yàn)精品課件
- 傷口(壓瘡)的評估與記錄
- 煤礦機(jī)電運(yùn)輸類臺賬(各種記錄匯編)
- 《道德與法治》五年級下冊全冊教案
- 危險化學(xué)品從業(yè)單位安全生產(chǎn)標(biāo)準(zhǔn)化宣貫
- Zabbix監(jiān)控系統(tǒng)方案
評論
0/150
提交評論