




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
部分貪心在信息學競賽中的應(yīng)用北京市清華附中高逸涵1引言引入眾所周知,貪心算法是一個在信息學競賽中應(yīng)用廣泛的高效算法。但是有的時候,由于小規(guī)模針對性數(shù)據(jù)的存在,使得貪心算法不能得到正確的結(jié)果。如何解決這一問題呢?部分貪心,顧名思義,就是在問題的局部采用貪心算法,而在其他部分采用其他算法。部分貪心2引言為什么要“部分”貪心?當問題的特殊情況普遍較小的時候,對于邊界數(shù)據(jù)采用其他算法處理可以有效的回避特殊情況的討論。部分的普通算法對于總體時間復雜度影響并不大。部分的貪心可以極大的提高算法的時間效率。3引言舉個例子:我們要最優(yōu)化目標函數(shù)為了求得目標函數(shù)的最小值,我們可以首先貪心的求出趨勢函數(shù)的最小值,然后在其左右尋找目標函數(shù)的最小值。4例題[例題1]駱駝[例題2]CowRelays5[例題1]駱駝有p個人帶著x個小包y個大包穿越沙漠每匹駱駝可以背的物體只能是下列四種組合之一:不超過3個小包;不超過2個大包;1個人與不超過2個小包;1個人和1個大包。問最少需要多少駱駝?數(shù)據(jù)范圍:1<=p,x,y<=10000000006[例題1]駱駝首先,當所有人所帶的包的種類確定以后,剩下需要的駱駝數(shù)目可以直接算出來。所以我們需要求的只是有多少個人帶大包,多少個人帶小包。很容易得到如下公式:(p,x,y分別為人,小包,大包數(shù))但由于數(shù)據(jù)規(guī)模巨大,直接枚舉顯然行不通,需要另想辦法。7[例題1]駱駝由于取整運算符的存在,導致直接數(shù)學計算變得比較困難。但是從整體趨勢上來看,i的增加顯然有利于ans的減小。那么按照貪心思想,我們需要盡量讓人帶著小包。8[例題1]駱駝我們很容易得到一個貪心算法:如果當前小包的個數(shù)>=2并且還有人是空閑的,那么令這個人帶著小包,否則令這個人帶大包。很不幸,這個算法是錯誤的(x=3,y=3,p=1)。如何改進?正確性?部分貪心!9[例題1]駱駝當人數(shù)和小包的數(shù)量都充分大的時候,令人帶小包顯然是沒錯的。經(jīng)過驗證,人數(shù)和小包數(shù)>=20的時候,一定存在一個最優(yōu)解使得存在一個駱駝帶著人和小包。算法的正確性采用調(diào)整法很容易證明。而當人數(shù)和小包數(shù)有一個小于20時,可以采用枚舉法解決問題。10[例題1]駱駝已知樸素算法貪心算法解答大規(guī)模數(shù)據(jù)小規(guī)模特例部分貪心算法xx11[例題2]CowRelays在一個無向圖中有T條邊,每個點至少和兩條邊相連,每條邊有一個長度,詢問從給定起點到給定終點的包含N條邊的路最短是多長。數(shù)據(jù)規(guī)模:1<=N<=1000000000,1<=T<=10012[例題2]CowRelays首先看到這一題目,我們的直觀感受是,最優(yōu)解一定是這樣的一條路經(jīng):首先從起點運動到某一個點上。然后在這個點所連接的最小邊上往復運動。最后從這個點直接運動到終點。針對這一思想,我們很容易設(shè)計出一個貪心算法——枚舉一條邊做往復運動,然后從起點和終點分別向這條邊走增量最短的路徑到達。13[例題2]CowRelays所謂增量最短路徑,就是將所有邊減去基準邊之后得到的新圖內(nèi)的最短路徑。ST5555477N=20基準邊31111314[例題2]CowRelays這樣的貪心算法的復雜度為,但是運用部分貪心算法避免重復計算,可以將復雜度進一步降為算法瓶頸在于對于每條邊,我們都要求一次最短路,我們希望在一次中解決所有最短路問題。15[例題2]CowRelays回顧我們求最短增量路徑的過程,顯然,我們所求的最短增量路徑一定是在邊數(shù)確定時的最短路徑。因此,我們只需要用動態(tài)規(guī)劃預處理出源點到每一個點所走邊數(shù)一定時所得的最短路徑的長度,然后在貪心時枚舉最短增量路徑長度即可。部分貪心思想!16[例題2]CowRelaysST5555477N=20N/A71015……基準邊32317SuvTSuvTSuvT[例題2]CowRelays貪心算法:樸素動態(tài)規(guī)劃:部分貪心:快快快慢慢慢優(yōu)勢互補!18結(jié)果[例題1]駱駝時間復雜度效果貪心算法O(1)WrongAnswer樸素算法O(N)TimeLimitExceed部分貪心算法O(1)Accepted19結(jié)果[例題2]CowRelays時間復雜度效果倍增算法較慢貪心算法較慢樸素算法很慢部分貪心算法很快20總結(jié)樸素算法 ——思路簡單,算法低效,不易出錯貪心算法 ——思路復雜,算法高效,易出錯部分貪心 ——思路簡單,算法高效,不易出錯取長補短,優(yōu)勢互補集兩家之所長,自成一體21ThankYou!22例題1正確性證明假設(shè)當有至少20個小包和20個人時,存在最優(yōu)解使得沒有駱駝帶著人和小包。則至少有6個駱駝只帶著小包,20個駱駝帶著大包和人。那么將4個帶著小包的駱駝和6個帶著大包和人的駱駝重分配,這時我們有12個小包,6個大包,6個人,我們只需令6個駱駝帶著人和小包,3個駱駝帶著大包,這樣只需要9個駱駝即可,即我們得到了一個比最優(yōu)解更優(yōu)的解,矛盾,因此假設(shè)不成立。23
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲業(yè)食品安全管理體系認證合同
- 小米c面試題及答案
- 市容環(huán)衛(wèi)外包方案
- 輕工產(chǎn)品倉儲倉單質(zhì)押擔保協(xié)議
- 汽車售后服務(wù)網(wǎng)點車輛訂購及維修服務(wù)合同
- 社區(qū)改造設(shè)計建筑方案
- 生態(tài)造林工程投標方案
- 黨章知識課件
- 數(shù)學小升初面試題及答案
- 體育協(xié)會換屆方案
- 2025-2030年中國建設(shè)工程質(zhì)量檢測行業(yè)發(fā)展態(tài)勢與前景規(guī)劃研究報告
- 典當行借款合同范本模板(2025年)
- IT項目外包人員管理制度
- 《醫(yī)藥數(shù)理統(tǒng)計》期末考試復習題庫(含答案)
- 鍋爐風煙系統(tǒng)
- 經(jīng)導管主動脈瓣置換術(shù)中國專家共識(2020-更新版)
- (完整版)西門子PLC教程從入門到精通
- 運維或技術(shù)支持崗位招聘筆試題與參考答案(某大型央企)2024年
- 004.多參數(shù)監(jiān)護儀臨床警報管理實踐指南2020版
- 汕頭市防汛防旱防風防凍應(yīng)急預案
- 2023年高考遼寧卷化學真題(解析版)
評論
0/150
提交評論