動(dòng)態(tài)規(guī)劃在信息學(xué)奧林匹克競(jìng)賽中的應(yīng)用_第1頁
動(dòng)態(tài)規(guī)劃在信息學(xué)奧林匹克競(jìng)賽中的應(yīng)用_第2頁
動(dòng)態(tài)規(guī)劃在信息學(xué)奧林匹克競(jìng)賽中的應(yīng)用_第3頁
動(dòng)態(tài)規(guī)劃在信息學(xué)奧林匹克競(jìng)賽中的應(yīng)用_第4頁
動(dòng)態(tài)規(guī)劃在信息學(xué)奧林匹克競(jìng)賽中的應(yīng)用_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、動(dòng)態(tài)規(guī)劃在信息學(xué)奧林匹克競(jìng)賽中的應(yīng)用一.動(dòng)態(tài)規(guī)劃含義:在現(xiàn)實(shí)生活中,有一類活動(dòng)的過程,由于它的特殊性,可將過程分成若干個(gè)互相聯(lián)系的階段,在它的每一階段都要做岀決策,從而使整個(gè)過程達(dá)到最好的活動(dòng)效果.因此,各個(gè)階段決策確定后,組成一個(gè)決策序列,因而也就確定了 整個(gè)過程的一條活動(dòng)路線.這種把一個(gè)問題看作是一個(gè)前后關(guān)聯(lián)具有鏈狀結(jié)構(gòu)的多階段過程,就稱為多階段決策過程,這種問題稱為多階段決策問題.在多階段決策問題中,各個(gè)階段采取的決策,一般來說是和時(shí)間有關(guān)的,決策依賴于當(dāng)前狀態(tài),又隨即引起狀態(tài) 的轉(zhuǎn)移,一個(gè)決策序列就是在變化的狀態(tài)中產(chǎn)生岀來的,故有動(dòng)態(tài)的含義,我們稱這種解決多階段決策最優(yōu)化的過程為動(dòng)態(tài)規(guī)

2、劃.二動(dòng)態(tài)規(guī)劃特征動(dòng)態(tài)規(guī)劃的顯著特征是:無后效性,有邊界條件,且一般劃分為很明顯的階段.動(dòng)態(tài)規(guī)劃一般還存在一條或多條狀態(tài)轉(zhuǎn)移方程三例題1.Catcher 防衛(wèi)導(dǎo)彈(GDOI98)題目講得很麻煩,歸根結(jié)底就是求一整串?dāng)?shù)中的最長(zhǎng)不上升序列這道題目一開始我使用回溯算法,大概可以拿到1/3的分吧,后來發(fā)現(xiàn)這其實(shí)是動(dòng)態(tài)規(guī)劃算法中最基礎(chǔ)的題目 用一個(gè)二維數(shù)組 C1.Max,1.2來建立動(dòng)態(tài)規(guī)劃狀態(tài)轉(zhuǎn)移方程(注:C1.Max,1表示當(dāng)前狀態(tài)最多可擊落的導(dǎo)彈數(shù),C1.Max,2表示當(dāng)前狀態(tài)的前繼標(biāo)志):Ci=MaxCj+1,(j=i+1.n), 然后程序也就不難實(shí)現(xiàn)了 .示范程序:program catche

3、r_hh;varf:text;i,j,k,max,n,num:integer;a:array 1.4000 of integer; 導(dǎo)彈高度數(shù)組c:array 1.4000,1.2 of integer;動(dòng)態(tài)規(guī)劃數(shù)組procedure readfile;beginassign(f,catcher.dat); reset(f);readln(f,num);for i:=1 to num doreadln(f,ai);end;procedure work;beginfillchar(c,sizeof(c),0); cnum,1:=1;清空數(shù)組,賦初值開始進(jìn)行動(dòng)態(tài)規(guī)劃for i:=num-1 dow

4、nto 1 dobeginn:=0; max:=1;for j:=i+1 to num doif (aiaj) and (maxmax then begin max:=ci,1; n:=i; end;返回尋找路徑repeatwriteln(n, ); n:=cn,2;until n=0;end;beginreadfile; work;end.2.Perform 巡回演出(GDKOI2000)題目描述:Flute市的Phlharmoniker樂團(tuán)2000年準(zhǔn)備到Harp市做一次大型演出,本著普及古典音樂的目的,樂團(tuán)指揮 L.Y.M準(zhǔn)備在到達(dá)Harp市之前先在周圍一些小城市作一段時(shí)間的巡回演出,此

5、后的幾天里,音樂家們將每天搭乘一個(gè)航班從一個(gè)城市飛到另一個(gè)城市,最后才到達(dá)目的地 Harp市(樂團(tuán)可多次在同一城市演出).由于航線的費(fèi)用和班次每天都在變,城市和城市之間都有一份循環(huán)的航班表,每一時(shí)間,每一方向,航班表循環(huán)的周期都可能不同.現(xiàn)要求尋找一張花費(fèi)費(fèi)用最小的演岀表.輸入:輸入文件包括若干個(gè)場(chǎng)景.每個(gè)場(chǎng)景的描述由一對(duì)整數(shù) n(2=n=10)和k(1=k=1000)開始,音樂家們要在這n 個(gè)城市作巡回演出,城市用1.n標(biāo)號(hào),其中1是起點(diǎn)Flute市,n是終點(diǎn)Harp市,接下來有n*(n-1)份航班表,一份航班表 一行,描述每對(duì)城市之間的航線和價(jià)格,第一組n-1份航班表對(duì)應(yīng)從城市1到其他城市

6、(2,3,.n)的航班,接下的n-1行 是從城市2到其他城市(1,3,4.n)的航班,如此下去.每份航班又一個(gè)整數(shù) d(1=d=30)開始,表示航班表循環(huán)的周期,接下來的d個(gè)非負(fù)整數(shù)表示1,2.d天對(duì)應(yīng)的 兩個(gè)城市的航班的價(jià)格,價(jià)格為零表示那天兩個(gè)城市之間沒有航班 例如3 75 0 80表示第一天機(jī)票價(jià)格是 75KOI,第 二天沒有航班,第三天的機(jī)票是 80KOI,然后循環(huán):第四天又是75KOI,第五天沒有航班,如此循環(huán).輸入文件由n=k=0 的場(chǎng)景結(jié)束.輸岀:對(duì)每個(gè)場(chǎng)景如果樂團(tuán)可能從城市1出發(fā),每天都要飛往另一個(gè)城市,最后(經(jīng)過k天)抵達(dá)城市n,則輸出這k個(gè)航班價(jià)格之和的最小值.如果不可能存

7、在這樣的巡回演出路線,輸出0.樣例輸入:3 62130 150375 0 807 120 110 0 100 110 120 0460 70 60 503 0 135 1402 70 802 32 0 701 800 0樣例輸出:4600初看這道題,很容易便可以想到動(dòng)態(tài)規(guī)劃,因?yàn)榈趚天在第y個(gè)地方的最優(yōu)值只與第x-1天有關(guān),符合動(dòng)態(tài)規(guī)劃的無后效性原則,即只與上一個(gè)狀態(tài)相關(guān)聯(lián),而某一天x航班價(jià)格不難求出S=C(x-1) mod m +1.我們用天數(shù)和地點(diǎn) 來規(guī)劃用一個(gè)數(shù)組 A1.1000,1.10來存儲(chǔ),Ai,j表示第i天到達(dá)第j個(gè)城市的最優(yōu)值,Ci,j,l表示i城市與j城市間第 l天航班價(jià)格,

8、則Ai,j=MinAi-1,l+Cl,j,i (l=1.n 且Cl,j,i0),動(dòng)態(tài)規(guī)劃方程一出,盡可以放懷大笑了 .示范程序:program perform_hh;varf,fout:text;p,l,i,j,n,k:integer;a:array 1.1000,1.10 of integer; 動(dòng)態(tài)規(guī)劃數(shù)組c:array 1.10,1.10 of record 航班價(jià)格數(shù)組num:integer;t:array 1.30 of integer;end;e:array 1.1000 of integer;procedure work;begin人工賦第一天各城市最優(yōu)值for i:=1 to

9、n dobeginif c1,i.t10then a1,i:=c1,i.t1;end;for i:=2 to k dobeginfor j:=1 to n dobeginfor l:=1 to n dobeginif (jl)and (cl,j.t(i-1) mod cl,j.num+10)判斷存在航班and (ai,j=0) or (ai-1,l+cl,j.t(i-1) mod cl,j.num+1ai,j) 判斷比當(dāng)前解優(yōu)then ai,j:=ai-1,l+cl,j.t(i-1) mod cl,j.num+1;賦值end;end;end;ep:=ak,n; 第p個(gè)場(chǎng)景的最優(yōu)值end;pro

10、cedure readfile; 讀文件beginassign(f,PERFORM.DA T); reset(f);assign(fout,PERFORM.OUT); rewrite(fout);readln(f,n,k); p:=0;while (n0) and (k0) dobeginp:=p+1;fillchar(c,sizeof(c),0); fillchar(a,sizeof(a),0);for i:=1 to n dobeginfor j:=1 to i-1 dobeginread(f,ci,j.num);for l:=1 to ci,j.num doread(f,ci,j.tl)

11、;end;for j:=i+1 to n dobeginread(f,ci,j.num);for l:=1 to ci,j.num do read(f,ci,j.tl);end;end;work;readln(f,n,k);end;輸岀各個(gè)場(chǎng)景的解for i:=1 to p-1 dowriteln(fout,ei); write(fout,ep);close(f);close(fout);end;beginreadfile;end.四小結(jié)動(dòng)態(tài)規(guī)劃與窮舉法相比,大大減少了計(jì)算量,豐富了計(jì)算結(jié)果,不僅求岀了當(dāng)前狀態(tài)到目標(biāo)狀態(tài)的最優(yōu)值,而且同時(shí)求出了到中間狀態(tài)的最優(yōu)值,這對(duì)于很多實(shí)際問題來說是很有用

12、的.這幾年,動(dòng)態(tài)規(guī)劃已在各省市信息學(xué)奧林匹克競(jìng)賽中占據(jù)相當(dāng)重要的地位,每年省賽8道題目中一般有23道題目屬于動(dòng)態(tài)規(guī)劃,動(dòng)態(tài)規(guī)劃相比一般窮舉也存 在一定缺點(diǎn):空間占據(jù)過多,但對(duì)于空間需求量不大的題目來說,動(dòng)態(tài)規(guī)劃無疑是最佳方法! 五課后題目1.m個(gè)人抄n本書,每本書頁數(shù)已知,每個(gè)人(第一個(gè)人除外)都必須從上一個(gè)人抄的最后一本書的下一本抄起(書必須整本整本的抄),求一種分配方法,使抄書頁數(shù)最多的人抄書頁數(shù)盡可能少.(GDOI99 Books).2.有一字符串有多種編碼方式可供人選擇,將這個(gè)字符串進(jìn)行編碼,使求得得編碼長(zhǎng)度最短。(GDKOI2000外,其他每個(gè)城市只能訪問一次,求最多能訪問多少個(gè)城市.沁園春雪山舞銀蛇,原馳蠟象,欲與天公試比Compress)3. Canada境內(nèi)有自西向東的一系列城市:Halifax,Hamilton,Montelia,Vanc

溫馨提示

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