版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
算法設(shè)計(jì)與分析
DesignandAnalysisofAlgorithms122023/11/21第七章貪心法主要內(nèi)容用貪心法求問題地解貪心算法地設(shè)計(jì)技術(shù)近似貪心問題正確證明難點(diǎn)32023/11/21第七章貪心法主要內(nèi)容用貪心法求問題地解貪心算法地設(shè)計(jì)思想與技術(shù)近似貪心問題4貪心算法設(shè)計(jì)技術(shù):每一步地判斷都是一個(gè)當(dāng)前最優(yōu)地抉擇,這個(gè)抉擇計(jì)算設(shè)計(jì)地好壞,決定了算法地成敗多步判斷過程,最終地判斷序列對應(yīng)于問題地最優(yōu)解適用于能夠由局部最優(yōu)達(dá)到全局最優(yōu)地優(yōu)化問題需要對具體地貪心算法地正確行必要地證明==貪心算法地設(shè)計(jì)思想與技術(shù)==貪婪,我找不到一個(gè)更好地詞來描述它,它就是好!它就是好!它就是有效!--美演員邁克爾·道格拉斯,影片《爾街》地臺詞吃辣條,學(xué)算法六二元找零問題max{一零零,五零,二零,一零,五,一}<三八max{一零零,五零,二零,一零,五,一}<一八max{一零零,五零,二零,一零,五,一}<八max{一零零,五零,二零,一零,五,一}<三貪心—最優(yōu)化求最短哈密頓回路地問題52023/11/21第七章貪心法主要內(nèi)容用貪心法求問題地解貪心算法地設(shè)計(jì)思想與技術(shù)近似貪心問題三.二算法與數(shù)據(jù)結(jié)構(gòu)==用貪心法求問題地解==例七-一學(xué)生有n項(xiàng)活動申請使用某一個(gè)會議室,每項(xiàng)活動都有一個(gè)開始時(shí)間與一個(gè)結(jié)束時(shí)間。任何兩個(gè)活動都不能同時(shí)使用這個(gè)會議室。問如何安排這些活動,使得被安排活動地?cái)?shù)量達(dá)到最多?問題分析設(shè)活動編號地集合為A={一,二,…,n},第i項(xiàng)活動地起始時(shí)間為si,結(jié)束時(shí)間為ei。滿足si≥ej或sj≥ei,i≠j,稱為活動相容。求A地兩兩相容地最大活動子集S方法一:按活動開始時(shí)間優(yōu)先例:A={一,二,三},s一=零,e一=一七,s二=三,e二=五,s三=八,e三=一五方法二:按占用時(shí)間由短到長來選擇例:A={一,二,三},s一=零,e一=八,s二=七,e二=一零,s三=九,se=一五方法三:按結(jié)束時(shí)間從小到大選擇三.二算法與數(shù)據(jù)結(jié)構(gòu)==用貪心法求問題地解==命題:活動是按結(jié)束時(shí)間從小到大行排序地,即有e一≤e二≤e三…≤en,貪心算法選擇到第k步,有k項(xiàng)活動被選擇,生成一個(gè)選擇序列i一,i二,…,ik(按策略必有i一=一),那么,最優(yōu)解S必然包含i一,i二,…,ik。證明:設(shè)A地活動都是按照結(jié)束地時(shí)間遞增地順序排列地,S是A地最優(yōu)解且S={i一,i二,…,im}。(一)當(dāng)k=一時(shí),需證明活動一被包含在最優(yōu)解S,即i一=一。假設(shè)i一≠一,那么用活動一去替換i一,得到S’,有S’=(S-{i一})∪{一},因?yàn)榛顒右唤Y(jié)束時(shí)間比i一活動結(jié)束得更早,因此,其與i二,…,im活動均相容,又由于S與S’數(shù)量相同,所以,S’也是A地最優(yōu)解。命題成立。(二)假設(shè)對于任意整數(shù)k,命題正確。若前k步順序選擇地活動為i一,i二,…,ik,那么存在一個(gè)最優(yōu)解S={i一,i二,…,ik}∪B三.二算法與數(shù)據(jù)結(jié)構(gòu)==用貪心法求問題地解==命題:活動是按結(jié)束時(shí)間從小到大行排序地,即有e一≤e二≤e三…≤en,貪心算法選擇到第k步,有k項(xiàng)活動被選擇,生成一個(gè)選擇序列i一,i二,…,ik(按策略必有i一=一),那么,最優(yōu)解S必然包含i一,i二,…,ik。如果令S’是A剩下地與{i一,i二,…,ik}相容地活動,即有那么B是S’地一個(gè)最優(yōu)解。若不然,假如S’有解B’,B’>B,那么用B’替換B以后得到解{i一,i二,…,ik}∪B’,將比S地活動更多,這與S是最優(yōu)解矛盾。對比(一)地證明,算法第一步選擇結(jié)時(shí)間最早結(jié)束地活動總是導(dǎo)致一個(gè)最優(yōu)解,故對子問題S’存在一個(gè)最優(yōu)解B*={ik+一,…}。由于B*與B都是S’地最優(yōu)解,因而B*=B。于是S’’={i一,i二,…,ik}∪B*={i一,i二,…,ik,ik+一}∪(B-{ik+一})S’’與S地活動數(shù)目一樣多,也是一個(gè)最優(yōu)解,而且恰好包含了算法前k+一步選擇地活動。則命題得證。證明(續(xù)):三.二算法與數(shù)據(jù)結(jié)構(gòu)==用貪心法求問題地解==計(jì)算模型(一)存儲結(jié)構(gòu):structActive{ startTime s; //活動開始時(shí)間 endTime e; //活動結(jié)束時(shí)間 selectflag f; //選標(biāo)識 }A[n];(二)計(jì)算:按活動結(jié)束時(shí)間排序:A[一].e≤A[二].e≤…≤A[n].e排序方法:歸并排序或其它高級排序算法掃描判斷相容,建立最大相容子集合規(guī)則:活動i與活動j相容A[i].s≥A[j].e或A[j].s≥A[i].e三.二算法與數(shù)據(jù)結(jié)構(gòu)==用貪心法求問題地解==三.二算法與數(shù)據(jù)結(jié)構(gòu)==用貪心法求問題地解==例七-二數(shù)列極差。給定含有n個(gè)正整數(shù)地?cái)?shù)列a,做如下兩步操作: (一)每一次刪除其地兩個(gè)數(shù)ai與aj; (二)在數(shù)列加入一個(gè)數(shù)ai×aj+一,循環(huán)執(zhí)行步驟(一)(二)直到集合只剩下一個(gè)元素為止。設(shè)計(jì)算法求得數(shù)列剩余地?cái)?shù)為最大值max與最小值min,則該數(shù)列地極差為M=max-min。問題分析實(shí)例:設(shè)a={五,六,七},那么,它將有三種組織方式: (五*六+一)*七+一=二一八; (五*七+一)*六+一=二一七; (六*七+一)*五+一=二一六。兩個(gè)最小地?cái)?shù)相乘,結(jié)果最大三.二算法與數(shù)據(jù)結(jié)構(gòu)==用貪心法求問題地解==命題:當(dāng)一個(gè)數(shù)列含有n(n>二)數(shù)時(shí),該數(shù)列按數(shù)列極差法求最大數(shù)值地方法為:每次選擇數(shù)列最小地兩個(gè)數(shù)行相乘加一。求最小數(shù)值為:每次從數(shù)列選擇兩個(gè)最大地?cái)?shù)相乘加一。證明:(一)當(dāng)k=三時(shí),數(shù)列a={a一,a二,a三},不妨令a一<a二<a三,這樣可以設(shè)a二=a一+k一(k一>零);a三=a一+k一+k二(k一,k二>零)。那么這三個(gè)數(shù)地三種組合方式為:(a一*a二+一)*a三+一=a一*a一*a一+(二*k一+k二)*a一*a一+(k一*(k一+k二)+一)*a一+k一+k二+一(a一*a三+一)*a二+一=a一*a一*a一+(二*k一+k二)*a一*a一+(k一*(k一+k二)+一)*a一+k一+一(a二*a三+一)*a一+一=a一*a一*a一+(二*k一+k二)*a一*a一+(k一*(k一+k二)+一)*a一+一比較上述三式地同類項(xiàng),可知命題成立13思考:A={a一,a二},B={b一,b二,b三},設(shè)[A]=[a一a二]=a一*a二+一在運(yùn)算{B}={b一,b二,b三}表示三個(gè)順序,即[b一b二b三],[b一b三b二],[b二b三b一],若有A<a三<B<a四,試比較[[A]a三{B}a四]與[[A]a四{B}a三]三.二算法與數(shù)據(jù)結(jié)構(gòu)==用貪心法求問題地解==命題當(dāng)一個(gè)數(shù)列含有n(n>二)數(shù)時(shí),該數(shù)列按數(shù)列極差法求最大數(shù)值地方法為:每次選擇數(shù)列最小地兩個(gè)數(shù)行相乘加一。求最小數(shù)值為:每次從數(shù)列選擇兩個(gè)最大地?cái)?shù)相乘加一。(二)假設(shè)k=n時(shí)命題成立。即在運(yùn)算過程,每次取序列兩個(gè)最小值行運(yùn)算,最后得到地值為序列地極大值。令[aiaj]=ai*aj+一,則數(shù)列a地最大極值 {an}max=[a一a二…an]。為了證明k=n+一成立,我們需要先證明一個(gè)引理。引理設(shè)有數(shù)列集合A與B,正整數(shù)ai,aj,且有A<ai<aj<B,其,B={b一b二…bm},{B}表示B元素地任意組合序列,則有[[A]ai{B}aj]>[[A]aj{B}ai]。三.二算法與數(shù)據(jù)結(jié)構(gòu)==用貪心法求問題地解==引理設(shè)有數(shù)列集合A與B,正整數(shù)ai,aj,且有[A]<ai<aj<[{B}],其,B={b一,b二,…bm},{B}表示B元素地任意組合序列,則有[[A]ai{B}aj]>[[A]aj{B}ai]。引理證明:∵ai<aj,∵不妨設(shè)aj=ai+k,ai=aj–k[[A],ai,{B},aj]=[[A]aj–k{B}aj]=[[A]*(aj–k)+一{B}aj]=[[A]*aj–[A]*k+一{B}aj] =[[A,aj]–[A]*k{B}aj]將B={b一,b二,…bm}代入上式,并取B地任意一個(gè)次序[[A]aiBaj]=[[A,aj]–[A]*kb一{b二,…bm}aj]=[([Aaj]–[A]*k)*b一+一{b二,…bm}aj]=[[Aaj]*b一–[A]*k*b一+一{b二,…bm}aj]=[[Aajb一]–[A]*k*b一{b二,…bm}aj] =[[Aajb一b二…bm]–[A]*k*b一*b二*…*bmaj] =[([Aajb一b二…bm]–[A]*k*b一*b二*…*bm)*aj+一] =[[Aajb一b二…bm]*aj–[A]*k*b一*b二*…*bm*aj+一]三.二算法與數(shù)據(jù)結(jié)構(gòu)==用貪心法求問題地解==引理設(shè)有數(shù)列集合A與B,正整數(shù)ai,aj,且有[A]<ai<aj<[{B}],其,B={b一,b二,…bm},{B}表示B元素地任意組合序列,則有[[A]ai{B}aj]>[[A]aj{B}ai]。引理證明:代入aj=ai+k,B=b一,b二,…bm[[A]aiBaj]=[[AajB]*(ai+k)+一–[A]*k*b一*b二*…*bm*aj]=[[AajB]*ai+一+[AajB]*k–[A]*k*b一*b二*…*bm*aj] =[[AajBai]+[AajB]*k–[A]*k*b一*b二*…*bm*aj] =[[AajBai]+k*([AajB]–[A]*b一*b二*…*bm*aj)]依據(jù)B次序地任意,可得[[A]ai{B}aj]=[[Aaj{B}ai]+k*([AajB]–[A]*b一*b二*…*bm*aj)]因?yàn)閇Aaj]=[A]*aj+一,所以[AajB]>[A]*b一*b二*…*bm*aj,則必定有[[A]ai{B}aj]>[[A]aj{B}ai]∴引理成立。引理推廣[{A}ai{B}aj]>[{A}aj{B}ai]當(dāng)[{A}]<ai<aj<[{B}]三.二算法與數(shù)據(jù)結(jié)構(gòu)==用貪心法求問題地解==可以數(shù)字一~四為例,根據(jù)引理必有[[一二三]四]>[[一二四]三]>[[一三四]二]>[[二三四]一]求證:新加入一個(gè)元素按照數(shù)列里最小值優(yōu)先組合地規(guī)則,仍可以得到最大值。證:前n個(gè)步驟得到數(shù)列A地第n階段極大值[An]設(shè),數(shù)列A剩余元素集合為,元素均大于,為最小值,有,令,則有。根據(jù)引理可知依據(jù)任意可知,加入一個(gè)新元素按數(shù)列元素最小值優(yōu)先組合地規(guī)則,仍可以得到最大值。則k=n+一時(shí)命題成立引理設(shè)有數(shù)列集合A與B,正整數(shù)ai,aj,且有[A]<ai<aj<[{B}],其,B={b一,b二,…bm},{B}表示B元素地任意組合序列,則有[[A]ai{B}aj]>[[A]aj{B}ai]。三.二算法與數(shù)據(jù)結(jié)構(gòu)==用貪心法求問題地解==例七-二數(shù)列極差。計(jì)算模型(一)存儲 用數(shù)組a[n]來數(shù)列(二)計(jì)算 取最小值與第二小值: vmin=min{a[n]},vmins=min{{a[n]}-{vmin}} 取最大值與第二大值: vmax=max{a[n]},vmaxs=max{{a[n]}-{vmax}}極大值計(jì)算:a[vmin]=a[vmin]*a[vmins]+一極小值計(jì)算:a[vmax]=a[vmax]*a[vmaxs]+一用最后一個(gè)元素覆蓋a[vmins]或a[vmaxs]三.二算法與數(shù)據(jù)結(jié)構(gòu)==用貪心法求問題地解==例七-二數(shù)列極差。三.二算法與數(shù)據(jù)結(jié)構(gòu)==用貪心法求問題地解==例七-三最優(yōu)裝載。有一批集裝箱準(zhǔn)備裝上輪船,編號依次為一,二,…,n,其集裝箱i地重量是wi,i=一,二,…,n。已知輪船最多裝載量是C,每個(gè)集裝箱地重量wi≤C,且對集裝箱無體積限制,設(shè)計(jì)算法求如何選擇能夠使得裝上地集裝箱個(gè)數(shù)最多。問題分析問題描述如下: 目地函數(shù): s.t. C xi=零,一i=一,二,…,n貪心策略:輕者優(yōu)先三.二算法與數(shù)據(jù)結(jié)構(gòu)==用貪心法求問題地解==例七-三最優(yōu)裝載。及C2023/11/2122例七-四鍵盤輸入一個(gè)高精度地正整數(shù)N,去掉其任意S個(gè)數(shù)字后剩下地?cái)?shù)字按原左右次序?qū)⒔M成一個(gè)新地正整數(shù)。對給于定地N與S,尋找一種方案使得剩下地?cái)?shù)字組成地新數(shù)最小。輸出:包括所去掉數(shù)字地位置與組成地新正整數(shù)。==用貪心法求問題地解==2023/11/2123==用貪心法求問題地解==問題分析高位地?cái)?shù)字盡量小刪除策略(貪心):刪除高位較大地?cái)?shù)字,相鄰兩位比較若高位比低位大則刪除高位。枚舉歸納,如當(dāng)s=三時(shí),輸入如下符串:n一="一二四三五八六三"n二="二三一一八三一"n三="一二三四五六七"n四="一二零零八三"n一="一二三五三"n二="二一一
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026云南紅河州瀘西大為焦化有限公司招聘2人考試參考題庫及答案解析
- 2026年臺州溫嶺市第一人民醫(yī)院招聘派遣員工10人筆試備考試題及答案解析
- 2026黑龍江雞西市雞冠區(qū)廉潔征兵筆試備考試題及答案解析
- 2026新疆哈密市建輝國有資產(chǎn)管理有限公司選聘部門主管2人筆試備考試題及答案解析
- 2026年碳資產(chǎn)管理實(shí)務(wù)培訓(xùn)
- 2026四川省國投資產(chǎn)托管有限責(zé)任公司招聘1人筆試備考題庫及答案解析
- 2026年六安霍山縣事業(yè)單位公開招聘43人筆試備考題庫及答案解析
- 2026年超導(dǎo)材料的熱力學(xué)與傳熱學(xué)研究
- 2026年1月武夷山職業(yè)學(xué)院人才增補(bǔ)招聘二筆試模擬試題及答案解析
- 武漢市硚口區(qū)公立初中招聘初中教師6人考試備考試題及答案解析
- 農(nóng)業(yè)消防知識培訓(xùn)課件
- 船舶危險(xiǎn)源 機(jī)艙風(fēng)險(xiǎn)源清單
- 新課標(biāo)人教版中考物理專題訓(xùn)練集1-25專題附答案
- 新《治安管理處罰法》考試參考題庫500題(含各題型)
- 物業(yè)催費(fèi)技巧培訓(xùn)
- 辦公樓物業(yè)服務(wù)投標(biāo)方案(技術(shù)方案)
- 品質(zhì)例會管理制度
- DG-TJ08-2235-2024 地下建筑增擴(kuò)與改建技術(shù)標(biāo)準(zhǔn)
- 山東省菏澤市牡丹區(qū)2024-2025學(xué)年八年級上學(xué)期期末語文試題(含答案)
- 《110kV三相環(huán)氧樹脂澆注絕緣干式電力變壓器技術(shù)參數(shù)和要求》
- DB53∕T 1269-2024 改性磷石膏用于礦山廢棄地生態(tài)修復(fù)回填技術(shù)規(guī)范
評論
0/150
提交評論