算法分析與分析_第1頁
算法分析與分析_第2頁
算法分析與分析_第3頁
算法分析與分析_第4頁
算法分析與分析_第5頁
已閱讀5頁,還剩80頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

算法設計與分析

分支限界法

分支限界法:?

?分支限界法

?與回溯法類似,都是在問題的解空間樹上搜索問題

解的算法;

?求解目標:找出滿足約束條件的解

?可行解或最優(yōu)解

?搜索策略_

根據(jù)限界函數(shù)值,剔除那些導致不可行解或非曼優(yōu)解的

子結(jié)點,使搜索過程僅限制在剩余的分支內(nèi)進行;

提綱

?分支限界法的基本思想

?實例分析

?本章小結(jié)

提綱

?分支限界法的基本思想

?實例分析

?本章小結(jié)

分支限界法Vs回溯法

分支限界法的主要分類

實例說明

分支限界法Vs回溯法

分支限界法的主要分類

實例說明

分支限界法Vs回溯法::

?相同點:

?兩者在進行問題求解前,都需要完成解空間的定義

和組織;

?都是通過在解空間搜索來尋找問題的解;

分支限界法Vs回溯法

?不同點:

?搜索方式

回溯法:深度優(yōu)先;

分支限界法:廣度優(yōu)先;

?搜索策略

回溯法:根據(jù)剪枝函數(shù),選擇下一個擴展接點并按深度優(yōu)先

方式進行搜索;

分支限界法:在擴展結(jié)點處,先產(chǎn)生其所有的子結(jié)點(分

支),然后根據(jù)限界函數(shù),確定哪些子結(jié)點將導致不可行解

或非最優(yōu)解,將這些子結(jié)點剔除,用剩下的子結(jié)點構(gòu)造當前

的活結(jié)點表,然后從該表中取一個結(jié)點作為當前擴展結(jié)點,

并重復上述過程;

分支限界法Vs回溯法

分支限界法的主要分類

實例說明

分支限界法的主要分類

?分支限界法的主要分類

?根據(jù)從活結(jié)點表中選擇下一個擴展結(jié)點的方式

?隊列式FIFO分支限界法

優(yōu)先隊列式分支限界法

隊列式FIFO分支限界法

?隊列式FIFO分支限界法

?算法思想:將活結(jié)點表組織成一個隊列,并按

隊列的先進先出FIFO原則選取下一個結(jié)點作為

當前擴展結(jié)點;

優(yōu)先隊列式分支限界法::

?優(yōu)先隊列式分支限界法

?算法思想:將活結(jié)點表組織成一個優(yōu)先隊列,并按

優(yōu)先隊列中規(guī)定的結(jié)點優(yōu)先級,選取剩余隊列中優(yōu)

先級最高的下一個結(jié)點作為當前擴展結(jié)點;

分支限界法Vs回溯法

分支限界法的主要分類

實例說明

實例說明

?實例說明

?0-1背包問題

?TSP問題

實例說明

?實例說明

?0」背包問題

?TSP問題

實例說明——0?1背包問題

?n=3的0」背包問題

?w=[16,15,15]

?p=[45,25,25]

?c=30

解空間為:

{(0,0,0),(0,1,0),(0,0,1),(1,0,0),(0,1,1),(1,0,1),(1,1,0),(1,1,1)}

活結(jié)點&當前

擴展結(jié)點

活結(jié)點

死結(jié)點

n=3的0」背包問題的解空間樹

利用隊列式FIFO分支限界法

利用優(yōu)先隊列式分支限界法

???

活結(jié)點隊列

(初始為空)活結(jié)點隊列

兩個子結(jié)點,但D是不可行結(jié)

A將結(jié)點加入到活結(jié)

點(因為超過背包容量),所■E

以將D舍去。E是可行結(jié)點。點隊列中

活結(jié)點隊列活結(jié)點隊列

-Cc)00—CE)Cc)

—國

兩個子結(jié)點

:尸點。F.、G都是可

iz3</1

?f(G>將結(jié)點F、G

1Ho1X。按從左到右

/V.JZ的順序加入

9W09(2)到活結(jié)點隊

?o??c列中

活結(jié)點隊列活結(jié)點隊列

??01」->000-?

兩個子結(jié)點都是葉結(jié)點,其

中J是不可行解,而K是可行

解(價值為45)

0

活結(jié)點隊列活結(jié)點隊列

-BCD00

兩個子結(jié)點都是葉結(jié)點,而

且都分別對應一個可行解,

其中L對應的解的價值50,

而M對應的解的價值25

A/I

1

活結(jié)點隊列

最優(yōu)解為::?:'

???1

(0,1,1),對應的價值為50

o兩個子結(jié)點都是葉結(jié)點,而

、且都分別對應一個可行解,

其中N對應的解的價值25,

而。對應的解的價值0

活結(jié)點隊列活結(jié)點隊列

利用隊列式FIFO分支限界法

利用優(yōu)先隊列式分支限界法

當前唯一的活結(jié)點,也

是當前的擴展結(jié)點

A

0兩個可行的子結(jié)點,由于結(jié)點

B獲得的當前價值為40,而結(jié)

點C的當前價值為0。

BC

00

將B、C放入極

DEG大堆,而且結(jié)點

10000B是當前堆中的

取大兀素。

HMNO

極大堆

C極大堆

(初始為空)

兩個子結(jié)點,但D是不可行結(jié)

點(因為超過背包容量),所

以將D舍去。E是可行結(jié)點。

0

L忘我價值為40,大于結(jié)點

(C)(的價值,所以成為當前堆)

中的最大元素J

兩個子結(jié)點都是葉結(jié)點,其

中J是不可行解,而K是可行

解(價值為45)

0

0兩個子結(jié)點F、G都是可

、行結(jié)點。F的價值為25,

而G的價值為0。

/1

Pf"(GVZ將結(jié)點F、G加入

Ko1ZXo到極大堆中,結(jié)

XX'點F成為當前堆中

(M)(N)(。)的最大元素。

極大堆

0兩個子結(jié)點F、G都是可行結(jié)

點,都是可行解。L的價值

c為50,而G的價值為25。

1

F

>0

M

極大堆

最優(yōu)解為:

(0,1,1),對應的價值為50

、兩個子結(jié)點N、。都是

可行結(jié)點,都是可行

,Vx解。N的價值為25,而

O的價值為0。

"M/

(M^<O5

極大堆

實例說明

?實例說明

?0-1背包問題

?TSP問題

實例說明——TSP問題

4頂點的無向帶權(quán)圖

n=4的TSP問題的解空間樹(排列樹)

利用隊列式FIFO分支限界法

利用優(yōu)先隊列式分支限界法

活結(jié)點隊列

(初始為空)活結(jié)點隊列

A

兩個可行的子結(jié)點,按從左1

到右的順序?qū)⑦@兩個子結(jié)點

加入活結(jié)點隊列。4

活結(jié)點隊列活結(jié)點隊列

A

兩個可行的子結(jié)點,按從左1

到右的順序?qū)⑦@兩個子結(jié)點

加入活結(jié)點隊列。/4

/3

活結(jié)點隊列活結(jié)點隊列

^TTFTTE

\兩個可行的子結(jié)點,按從

CIDL/左到右的順序?qū)⑦@兩個子

及二結(jié)點加入活結(jié)點隊列。

活結(jié)點隊列活結(jié)點隊列

當前擴展結(jié)點的子結(jié)

點是葉結(jié)點,表明找

B

到一條TSP回路,費4

用為59。3

CD

242當前最優(yōu)解為12341

HIJ費用:59

423

NP

活結(jié)點隊列活結(jié)點隊列

當前擴展結(jié)點的子結(jié)

4

E

42;當前最優(yōu)解為12341

Q費用:59

IJ

23

P

活結(jié)點隊列

A

當前擴展結(jié)點的子結(jié)1

點是葉結(jié)點,表明找

到一條TSP回路,費4

用為25。3?

C,DE

34742;當前最優(yōu)解為13241

Q費用:

HIJ25

\423

P

活結(jié)點隊列活結(jié)點隊列

A

1由于從根結(jié)點到當前結(jié)

點的費用〉當前最優(yōu)費

4用,所以結(jié)點I被舍棄。

4黑42;當前最優(yōu)解為13241

Q費用:25

HIJ

423

活結(jié)點隊列

A

由于從根結(jié)點到當前結(jié)

點的費用>當前最優(yōu)費用,*

4所以結(jié)點5被舍棄。

4黑42\3/當前最優(yōu)解為13241

HIJ費用:25

423

活結(jié)點隊列活結(jié)點隊列

利用隊列式FIFO分支限界法

利用優(yōu)先隊列式分支限界法

1當前擴展結(jié)點

B

4一三個可行的子結(jié)點,被加入到

3三:,極小堆中。由于E是當前堆中

CDE具有最小費用的結(jié)點(費用為

424234),所以處于堆頂,向下依次

是D和C。

GHIJK

434232

LMIN

極小堆極小堆

C

CID兩個可行的子結(jié)點,被加

入到極小堆中。其中J的

費用為14,K的費用為24。

——D在當前堆中費用最

小,所以處于堆頂

極小堆

兩個可行的子結(jié)點,被加

入到極小堆中。其中H的

費用為11,K的費用為26。

——H在當前堆中費用最

小,所以處于堆頂

極小堆

A

當前擴展結(jié)點的子結(jié)1

點是葉結(jié)點,表明找

到一條TSP回路,費4

用為25。3i

CZDE

34黑當前最優(yōu)解為13241

H費用:25

\4

極小堆

A

4

4黑42最優(yōu)解為13241

HIJ費用:25

423

極小堆

以此類推

提綱

?分支限界法的基本思想

?實例分析

?本章小結(jié)

實例分析

?單源最短路徑問題1

?裝載問題,

?布線問題J

?0-1背包問題

?最大團問題

?TSP問題

?電路板排列問題

?批處理作業(yè)調(diào)度,

單源最短路徑

算法思想

?算法思想

?采用優(yōu)先隊列式分支限界法

以當前結(jié)點所對應的路徑長度為參考標準(路徑長度越短,

優(yōu)先級越高)

?限界函數(shù)設計

利用已經(jīng)獲得的當前最短路徑長度Lmin為基準,對那些

結(jié)點所對應路徑長度大于Lmin的情況,剪去以該結(jié)點為

根的子樹;

利用結(jié)點間的控制關系進行剪枝

?對于通過不同路徑到達同一頂點的兩條路徑,路徑長度短的結(jié)

點(控制結(jié)點)控制路徑長度長的結(jié)點(被控制結(jié)點)

分將被控制結(jié)點所對應的子樹剪去

實例分析

找從頂點“1”到

頂點“5”的最短

路徑

一個帶權(quán)有向圖

一個帶權(quán)有向圖有向圖G的單源最短路

徑問題的解空間樹

A、B是兩個可行的子結(jié)點,被加入

到極小堆中。由于A是當前堆中具

有最小路徑長度的結(jié)點(路徑長度

為10),所以處于堆頂。

C為葉結(jié)點,表示得到一條從“1”

到“5”的路徑,路徑長度為100

極小堆極小堆

,一個可行的子結(jié)點,被加入到

極小堆中。由于D結(jié)點所對應

路徑長度為60,所以被加入到

B結(jié)點之后,B是當前堆中具有

最小路徑長度的結(jié)點(路徑長

度為30),處于堆頂

極小堆

E為可行的子結(jié)點,被加入到極小堆??

中。由于E結(jié)點所對應路徑長度為50

/,'(小于D結(jié)點所對應的路徑長度),

'而且D、E在圖G中對應同一個頂點3

分結(jié)點D被結(jié)點E控制,剪去以D結(jié)

點為根的子樹;

F結(jié)點為葉結(jié)點,且對應的

從“1“到”5”的路徑長度為90,小于

已知的最短路徑長度

少用該路徑最為當前已知的最優(yōu)解

因此,當前極小堆中只剩下E

極小堆

到達葉結(jié)點處,由于H結(jié)點所對應

路徑長度為60(小于F結(jié)點所對應

的路徑長度)

少用該路徑取代已知的最短路徑,

作為當前已知的最優(yōu)解

極小堆極小堆

最優(yōu)解

一個帶權(quán)有向圖有向圖G的單源最短路

徑問題的解空間樹

裝載問題

問題描述

裝載問題

有一批共n個集裝箱要裝上兩艘載重量分別為C1和。2的船,

n

其中集裝箱,的重量為明,且?的。+。

II12

Z=1

現(xiàn)要求確定是否有一個合理的裝載方案,可將這〃個集裝箱

裝上這兩艘輪船。如果有請給出裝載方案。

裝載問題是NP難問題。

求解出發(fā)點

?容易證明,如果一個給定的裝載問題有解,

則采用以下策略可以得到最優(yōu)裝載方案:

1.首先將第一艘船盡可能裝滿;

等價于選取全體集裝箱的一個子集,使該子集中集裝

箱重量之和最接近C1

2.將剩余的集裝箱裝上第二艘船;

算法思想

?算法思想

?解空間樹

?子集樹

?分支限界法

?隊列式

優(yōu)先隊列式

隊列式

?隊列式

?算法實現(xiàn):檢查當前結(jié)點的深度

?i=n

?表示當前活結(jié)點為葉結(jié)點,不需要加入到活結(jié)點隊列中,只要

檢查該結(jié)點表示的可行解是否優(yōu)于當前最優(yōu)解,并適時更新當

前最優(yōu)解

i<n

■表示當前結(jié)點為內(nèi)部結(jié)點,應加入到活結(jié)點隊列中

限界函數(shù)設計:

?限界函數(shù)

?是否超過船的負荷限制

?根據(jù)當前已知的最優(yōu)解bestw來進行剪枝

?當前擴展結(jié)點所對應的重量ew;

?剩余集裝箱的重量r;

如果ew+rv=bestw,則進行剪枝(剪去右子樹,因

為右子樹為0,表示下一個集裝箱沒有被選中)

——提早更新bestw(在每次進入左子樹時更新)

優(yōu)先隊列式

?優(yōu)先隊列式

?思路:根據(jù)活結(jié)點X在優(yōu)先隊列中的優(yōu)先級

?優(yōu)先級定義

從根結(jié)點到結(jié)點x的路徑所對應的載重量+剩余集裝箱的重量

?優(yōu)先隊列中優(yōu)先級最大的活結(jié)點成為下一個擴展結(jié)點

一旦有一個葉結(jié)點成為當前擴展結(jié)點,則該葉結(jié)點所對應

的解就是最優(yōu)解

優(yōu)先級策略的實現(xiàn)方式

?優(yōu)先級策略的實現(xiàn)方式

?第一種,在結(jié)點優(yōu)先隊列的每一個活結(jié)點中保存從

解空間樹的根結(jié)點到該結(jié)點的路徑;

在到達最優(yōu)值的葉結(jié)點時,在該結(jié)點處同時得到相應的

最優(yōu)解;

?第二種,在算法的搜索過程中保存當前已構(gòu)造出的

部分解空間樹。

當達到最優(yōu)值的葉結(jié)點時,可以在解空間樹中從該葉結(jié)

點開始向根結(jié)點回溯,從而構(gòu)造出最優(yōu)解。

?教材中所選用的方案

布線問題

布線問題

?布線問題

?問題描述:確定連接方

格a的中點到方格b的

中點的最短布線路徑。

布線時,電路只能沿直

線或直角布線X

其他線路不允許穿過已b

布線的方格

d

算法設計思想::

?算法設計思想

?解空間:圖

?搜索策略:隊列式分支限界法

從起始位置a開始,將其作為第一個擴展結(jié)點。與該擴

展結(jié)點相鄰并且可達的方格(有相鄰邊且未被標記)作

為可行結(jié)點被加入到活動結(jié)點隊列中,并且將這些方格

標記為1(即從起始方格a到這些方格的距離為1)。

然后,算法從活結(jié)點隊列中取出隊首結(jié)點作為下一個擴

展結(jié)點,并將與當前擴展結(jié)點相鄰且可達的方格標記為

2,并存入活結(jié)點隊列。

該過程一直持續(xù),直到算法搜索到目標方格b或活結(jié)點

隊列為空時停止。

相鄰可達的概念

>滿足相鄰可達條件

―?不滿足相鄰可達條件

qoo

算法實現(xiàn)&復雜性分析

?算法實現(xiàn)

?參看教材216

?注意移動方向的設置以及布線長度的設置

?算法復雜性分析

?擴展每個結(jié)點需0(1)時間,算法共需耗時0(mn)。

構(gòu)造相應的最短距離需要0(L)時間

-L是最短布線路徑長度

實際的電路布線問題

?實際的電路布線問題

?參看提供的參考文獻

從“…/算法分析/參考資料”處下載

批處理作業(yè)調(diào)度

問題描述

給定及個作業(yè)的集合/={4,4,每個作業(yè)人都有兩項任務

要分別在兩臺機器上完成。每個作業(yè)必須先在機器1上處理,

然后再由機器2處理。

作業(yè)《需要機器J的處理時間為/..,/=1,2,...,/I;7=1,2.

對于一個確定的作業(yè)調(diào)度,設廠,是作業(yè),在機器/上完成處理的時間,

n

則所有作業(yè)在機器2上完成處理的時間和/=Z

稱為該作業(yè)調(diào)度的完成時間和。

批處理作業(yè)調(diào)度問題要求對于給定的〃個作業(yè),制定最佳作業(yè)調(diào)度方案,

使其完成時間和達到最小。

對于批處理作業(yè)調(diào)度問題,可以證明存在最佳作業(yè)調(diào)度使得在機器1和

機器2上作業(yè)以相同次序完成。

舉例???

品機器1機器2

作業(yè)121

作業(yè)231

作業(yè)323

上述3個作業(yè)有6種不同的調(diào)度方案

1-2-3:19機器1完成的時間機器2完成印$間|

1-3-2:18?—最優(yōu)作業(yè)122+5:|

■■

2-1-3:20作業(yè)

1I32+2=44+3T17?

2-3-1:211作業(yè)24+3=77+七

3-1-2:19

11

3-2-1:21

13+7+8=18

算法設計思想

?

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論