




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院0Algorithms:
DesignTechniquesandAnalysis
算法設(shè)計(jì)技巧與分析2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院1第八章貪心法貪心法的基本思想8.1
引言應(yīng)用8.2
單源最短路問(wèn)題8.3
最小生成樹(shù)(Kruskal算法)8.4
最小生成樹(shù)(Prim算法)8.5
文件壓縮2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院28.1
引言貪心法的適用問(wèn)題貪心法又叫優(yōu)先策略,顧名思義就是“擇優(yōu)錄取”,它是一種非常簡(jiǎn)單好用的求解最優(yōu)化問(wèn)題的方法,在許多方面的應(yīng)用非常成功。貪心法的基本思想貪心算法是根據(jù)一種貪心準(zhǔn)則(greedycriterion)來(lái)逐步構(gòu)造問(wèn)題的解的方法。在每一個(gè)階段,都作出了相對(duì)該準(zhǔn)則最優(yōu)的決策。決策一旦作出,就不可更改。由貪心法得到的問(wèn)題的解可能是最優(yōu)解,也可能只是近似解。能否產(chǎn)生問(wèn)題的最優(yōu)解需要加以證明。所選的貪心準(zhǔn)則不同,則得到的貪心算法不同,貪心解的質(zhì)量當(dāng)然也不同。因此,貪心算法的好壞關(guān)鍵在于正確的選擇貪心準(zhǔn)則。2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院3背包問(wèn)題問(wèn)題
給定一個(gè)承重量為M的背包,n個(gè)重量分別為w1,w2,…,wn的物品。已知物品i放入背包能產(chǎn)生pi的價(jià)值(放入單位重量的物品i,產(chǎn)生的價(jià)值為pi/wi),i=1,2,…,n。如何裝包才能獲得最大價(jià)值?
實(shí)際上,就是要求找到一組非負(fù)且不超過(guò)1的實(shí)數(shù)x1,x2,…,xn滿足∑i=1nxiwi≤M,且使得∑i=1n
xipi達(dá)到最大值。
2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院4背包問(wèn)題實(shí)例
n=3,M=20,(w1,w2,w3)=(18,15,10),(p1,p2,p3)=(25,24,15).求解思想貪心準(zhǔn)則1——根據(jù)物品的價(jià)值由大到小來(lái)放。(由實(shí)例可知,它不是最優(yōu)貪心準(zhǔn)則)貪心準(zhǔn)則2——根據(jù)物品的重量由小到大來(lái)放。(由實(shí)例可知,它不是最優(yōu)貪心準(zhǔn)則)貪心準(zhǔn)則3——根據(jù)價(jià)值/重量(即單位價(jià)值)由大到小來(lái)放。(可以證明它是最優(yōu)貪心準(zhǔn)則)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院58.2單源最短路問(wèn)題問(wèn)題
設(shè)G=<V,E>是一個(gè)有向圖,圖中每一條邊都有一個(gè)非負(fù)長(zhǎng)度。單源最短路徑問(wèn)題就是要求出從圖中一個(gè)指定的點(diǎn)s(稱為源點(diǎn))到其它每個(gè)點(diǎn)的長(zhǎng)度最短的路徑。2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院68.2單源最短路問(wèn)題貪心準(zhǔn)則Dijkstra算法的基本思想(1)X←{1};Y←V-{1}(2)對(duì)于每個(gè)點(diǎn)v∈Y
,若有一條從1到v的邊,則令
[v]=該邊的邊長(zhǎng),否則令
[v]=∞。令
[1]=0(3)while
Y≠{}(4)令y∈Y
為
[]中最小的y(5)將y
從Y移到X中(6)更新Y中與y相連的點(diǎn)
[]值(7)endwhile.2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院78.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院88.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院98.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院108.2單源最短路問(wèn)題Dijkstra算法算法8.1DIJKSTRA2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院118.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院128.2單源最短路問(wèn)題正確性:
引理8.1
在Dijkstra算法中,當(dāng)步驟8中選擇一個(gè)結(jié)點(diǎn)y時(shí),如果
[y]<∞,則
[y]=
[y],其中
[y]表示從源點(diǎn)到y(tǒng)的距離。2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院138.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院148.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院158.2單源最短路問(wèn)題改進(jìn):一個(gè)在稠密圖上是線性時(shí)間的算法基本思想:使用最小堆數(shù)據(jù)結(jié)構(gòu)來(lái)保存集合Y中的結(jié)點(diǎn),使得距X中結(jié)點(diǎn)最近的Y中的結(jié)點(diǎn)
y能夠在時(shí)間O(logn)內(nèi)得到。與每個(gè)結(jié)點(diǎn)v相關(guān)的關(guān)鍵字是
[v]。算法8.2
SHORTESTPATH
2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院168.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院178.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院188.2單源最短路問(wèn)題復(fù)習(xí)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院198.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院208.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院218.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院228.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院238.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院248.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院258.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院268.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院278.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院288.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院298.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院308.2單源最短路問(wèn)題2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院31最小生成樹(shù)問(wèn)題
設(shè)G=<V,E>是一個(gè)每條邊都有權(quán)的無(wú)向連通圖。G的一棵生成樹(shù)<V,T>是G的一個(gè)生成子圖且該子圖是一棵樹(shù),簡(jiǎn)記作T。G的權(quán)最小的生成樹(shù)
T被稱作是最小生成樹(shù)。給定無(wú)向帶權(quán)圖G=<V,E>,要求求G的一棵最小生成樹(shù)。2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院32
實(shí)例——最小代價(jià)通訊網(wǎng)絡(luò)
考慮n個(gè)城市的通訊網(wǎng)絡(luò)建設(shè)問(wèn)題。要求所有城市能互相通訊,且總的建設(shè)成本最小。城市與城市間所有可能的通訊連接可被視作一個(gè)無(wú)向圖G=<V,E>,圖的每條邊都賦予一個(gè)權(quán)值,權(quán)值表示建成由這條邊所表示的通訊連接所要付出的代價(jià)。包含圖中所有頂點(diǎn)(城市)的無(wú)回路連通子圖是一個(gè)可行解,它是圖的一棵生成樹(shù),其代價(jià)為該子圖中邊的權(quán)之和。設(shè)所有的權(quán)值都非負(fù),要求找出代價(jià)最小的生成樹(shù)。最小生成樹(shù)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院33求解思想Prim算法
該算法要求選擇n-1條邊。其貪心準(zhǔn)則:從剩下的邊中,選擇一條權(quán)值最小的邊,并且它的加入應(yīng)使得和已經(jīng)選定的邊集仍然構(gòu)成一棵樹(shù)。Kruskal算法(避圈法)
該算法要求選擇n-1條邊。其貪心準(zhǔn)則:從剩下的邊中選擇一條和已經(jīng)選定的邊集不構(gòu)成圈(即回路)的有最小權(quán)值的邊。破圈法
該算法是通過(guò)刪除原圖中的若干條邊來(lái)得到最小生成樹(shù)。其貪心準(zhǔn)則:在剩下的圖中任意選擇一條回路,去掉其一條最大權(quán)值的邊來(lái)打破該回路。最小生成樹(shù)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院348.3最小生成樹(shù)(Kruskal算法)貪心準(zhǔn)則Kruskal算法的基本思想(1)對(duì)G中的邊按照其權(quán)值的非減次序排序;置T={}。
(2)依次來(lái)考慮圖中的每一條邊是否加入生成樹(shù)T中。若當(dāng)前被考慮的邊與T中已經(jīng)有的邊不構(gòu)成回路,將該邊加入T中;否則該邊不加入T中。然后再考慮下一條邊。直到所有的邊都考慮完為止。實(shí)例——圖8.42024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院358.3最小生成樹(shù)(Kruskal算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院368.3最小生成樹(shù)(Kruskal算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院378.3最小生成樹(shù)(Kruskal算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院388.3最小生成樹(shù)(Kruskal算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院398.3最小生成樹(shù)(Kruskal算法)Kruskal算法2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院408.3最小生成樹(shù)(Kruskal算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院418.3最小生成樹(shù)(Kruskal算法)復(fù)習(xí)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院428.3最小生成樹(shù)(Kruskal算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院438.3最小生成樹(shù)(Kruskal算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院448.3最小生成樹(shù)(Kruskal算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院458.3最小生成樹(shù)(Kruskal算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院468.3最小生成樹(shù)(Kruskal算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院478.3最小生成樹(shù)(Kruskal算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院488.3最小生成樹(shù)(Kruskal算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院498.3最小生成樹(shù)(Kruskal算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院508.3最小生成樹(shù)(Kruskal算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院518.3最小生成樹(shù)(Kruskal算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院528.3最小生成樹(shù)(Kruskal算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院538.3最小生成樹(shù)(Kruskal算法)Kruskal算法時(shí)間復(fù)雜度:O(mlogm)正確性:
引理8.2
算法Kruskal在無(wú)向帶權(quán)連通圖中找到一棵最小生成樹(shù)。
證明思路:
對(duì)
T的大小進(jìn)行歸納證明,其中T是一棵最小生成樹(shù)的邊集的一個(gè)子集。2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院548.4最小生成樹(shù)(PRIM算法)貪心準(zhǔn)則Prim算法的基本思想(1)T←{};X←{1};Y←V-{1}(2)while
Y≠{}(3)設(shè)(x,y)是一條滿足x∈X且y∈Y的權(quán)值最小的邊(4)X←X∪{y}(5)Y←Y-{y}(6)T←T∪{(x,y)}(7)endwhile2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院558.4最小生成樹(shù)(PRIM算法)實(shí)例——圖8.52024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院568.4最小生成樹(shù)(PRIM算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院578.4最小生成樹(shù)(PRIM算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院588.4最小生成樹(shù)(PRIM算法)Prim算法2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院598.4最小生成樹(shù)(PRIM算法)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院608.4最小生成樹(shù)(PRIM算法)Prim算法算法8.4PRIM時(shí)間復(fù)雜度:(n2)正確性:
引理8.3
算法PRIM在無(wú)向帶權(quán)連通圖中找到一棵最小生成樹(shù)。證明思路:通過(guò)對(duì)T的大小進(jìn)行歸納證明,其中T滿足(X,T)是一棵最小生成樹(shù)的子樹(shù)。2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院618.4最小生成樹(shù)(PRIM算法)改進(jìn):一個(gè)在稠密圖上是線性時(shí)間的算法基本思想:使用最小堆
來(lái)保存點(diǎn)集Y,使得兩點(diǎn)分別在點(diǎn)集Y和V-Y的一條最小成本的邊能夠在時(shí)間O(logn)內(nèi)得到。算法8.5MST時(shí)間復(fù)雜度:
定理8.52024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院628.5
文件壓縮(Huffman算法)
問(wèn)題
設(shè)
F
是一個(gè)字符流文件,其中的字符取自字母表C={c1,c2,…,cn}。設(shè)f(ci)表示字符ci
出現(xiàn)在文件中的頻率,1≤i≤n。希望用某種方式將文件壓縮得盡可能小,且易于根據(jù)壓縮文件恢復(fù)得到原文件。2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院638.5
文件壓縮(Huffman算法)直接算法
使用定長(zhǎng)碼給每個(gè)字符編碼。哈夫曼編碼(Huffman算法)
使用變長(zhǎng)碼給字符編碼,使得出現(xiàn)頻率高的字符的編碼盡可能短。2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院648.5
文件壓縮(Huffman算法)實(shí)例
假設(shè)有一個(gè)數(shù)據(jù)文件包含100000個(gè)字符,我們要用壓縮的方式來(lái)存儲(chǔ)它。該文件中各個(gè)字符出現(xiàn)的頻率如下表所示。要壓縮表示這個(gè)文件中的信息有多種方法。我們考慮用0,1碼串來(lái)表示字符的方法,即每個(gè)字符用唯一的一個(gè)0,1串來(lái)表示。問(wèn)題要求使用二進(jìn)制數(shù)字0,1碼串來(lái)編碼,保證編碼是前綴碼的前提下使得壓縮文件最短。(為了使得譯碼容易,編碼必須具有性質(zhì):任一字符的代碼都不是其它字符代碼的前綴。我們稱這樣的編碼為前綴碼。)2024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院658.5
文件壓縮(Huffman算法)
abcdef頻率(千次)4513121695定長(zhǎng)碼000001010011100101變長(zhǎng)碼0101100111110111002024/3/21華南師范大學(xué)計(jì)算機(jī)學(xué)院668.5
文件壓縮(Huffman算法)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 品牌授權(quán)使用許可合同
- 確定位置(教學(xué)設(shè)計(jì))-2024-2025學(xué)年四年級(jí)上冊(cè)數(shù)學(xué)北師大版
- 商業(yè)洋房出售合同范本
- 《幼兒園中班幼兒的告狀行為分析開(kāi)題報(bào)告文獻(xiàn)綜述4500字》
- 采砂合同范本
- 2025年銅釬焊熔劑項(xiàng)目可行性研究報(bào)告
- 小數(shù)除法-調(diào)查“生活垃圾”(教學(xué)設(shè)計(jì))-2024-2025學(xué)年五年級(jí)上冊(cè)數(shù)學(xué)北師大版
- 不斷發(fā)展的人工產(chǎn)品(教學(xué)設(shè)計(jì))-2023-2024學(xué)年科學(xué)二年級(jí)下冊(cè)人教鄂教版
- 5 各種各樣的天氣(教學(xué)設(shè)計(jì))2024-2025學(xué)年二年級(jí)上冊(cè)科學(xué)教科版
- 2025至2031年中國(guó)三元素高效復(fù)合肥行業(yè)投資前景及策略咨詢研究報(bào)告
- 幼兒園一崗雙責(zé)制度及實(shí)施方案(5篇)
- 教學(xué)常規(guī)檢查記錄表
- 清真食品相關(guān)項(xiàng)目投資計(jì)劃書(shū)范文
- 《紐約國(guó)際介紹》課件
- 部編版語(yǔ)文七年級(jí)下冊(cè)期中專項(xiàng)復(fù)習(xí)-標(biāo)點(diǎn)符號(hào) 試卷(含答案)
- 更年期綜合癥研究白皮書(shū)
- 《學(xué)習(xí)共同體-走向深度學(xué)習(xí)》讀書(shū)分享
- 互聯(lián)網(wǎng)視域下微紀(jì)錄片情感化敘事研究-以《早餐中國(guó)》為例
- 芋頭種植技術(shù)要點(diǎn)
- 【基于近五年數(shù)據(jù)的鴻星爾克財(cái)務(wù)報(bào)表分析15000字】
- 公司員工獎(jiǎng)懲制度流程
評(píng)論
0/150
提交評(píng)論