Phân tích và Thiét kê
THUAT TOAN Ha Đại Dương
duonghd@mta.edu.vn
Trang 2Bai 13 - Phuong phap nhánh can (Branch and Bound)
Trang 4| Giới thiệu
Phương pháp quay lui, vét cạn cĩ thể giải các bài tốn tối ưu, bằng cách lựa chọn phương án tối ưu trong tất cả các lời giải tìm được Nhưng nhiều bài tốn
khơng gian các lời giải là quá lớn, nên áp dụng phương pháp pháp quay lui khĩ
đảm bảo về thời gian cũng như kỹ thuật Cho nên ta cần phải cải tiến thuật tốn
Trang 5| Giới thiệu
Phương pháp nhánh cận là một cải tiến của phương pháp quay lui, dùng để
tìm lời giải tối ưu của bài tốn Ý tưởng chính của nĩ như sau :
Trong quá trình duyệt ta luơn giữ lại một phương án mẫu ( cĩ thể xem là lời
giải tối ưu cục bộ — chẳng hạn cĩ giá nhỏ nhất tại thời điểm đĩ ) Đánh giá nhánh
cận là phương pháp tính giá của phương án ngay trong quá trình xây dựng các
thành phần của phương án theo hướng đang xây dựng cĩ thể tốt hơn phương án mẫu
Trang 6II Lược đơ chung
Giả sử bài tốn tối ưu cho là : Tim Min{f(x):x e DỊ: Với X = ụ = (a,. -,đ, Je [14 Poo i=l A,|<«;Vi=l,n P là một tính fi chat trén | | 4, i=!
Nghiệm của bài tốn nếu cĩ sẽ được biểu diễn dưới dạng :x = (XỊ Xn)
Trong quá trình liệt kê theo phương pháp quay lui, ta xây dựng dân các
Trang 7II Lược đơ chung
Một bộ phận 1 thanh phần (xị, , Xị) sẽ gọi là một lời giải (phương án) bộ
phận cấp ¡ Ta gọi X; là tập các lời giải bộ phận cấp ¡, V¿= ln
Đánh giá cận là tìm một hàm g xác định trên các X; sao cho :
gặ.:-:,x,) < Mint f (a): a =(a,, ,a,) € X,x, =4,,Vi = T,ï
Bất đẳng thức này cĩ nghĩa là giá trị ø(x,,::-,x,) khơng lớn hơn giá trị của
các phương án mở rộng từ lời giải bộ phận (x,.: ,x,)
Sau khi tìm được hàm đánh giá cận ø, ta dùng ø để giảm bớt chi phí duyệt
Trang 8II Lược đơ chung
Giả sử x* là lời giải tốt nhất hiện cĩ (phương án mâu), cịn f* là gid tri tốt nhất tương ứng f* = f(x*)
Nếu g(x,.: ,x.) > f* thì :
[*Š < a(x, hy KG J = Mim{ƒ (4) -a= (a,,"*+,d, ) C X,x, — q,, Vĩ — l,i}
KT“ 7 Xe * =} a * ~ ˆ a
Nên chắc rằng các lời giải mở rộng từ (x,,: ,x,)sẽ khơng tốt hơn phương án mâu, do đĩ cĩ thể bỏ đi khơng cần phát triển lời giải bộ phận (x,,: , x,) để tìm
Trang 10II Lược đơ chung
Thực chất của phương pháp nhánh cận là tìm kiếm theo chiều sâu trên cây liệt kê lời giải như phương pháp quay lui, chỉ khác cĩ một điều là khi tim duce x; mà đánh giá cận ø(x,.:::,x,)> f* thì ta cắt bổ các nhánh con từ x¡ đi xuống, mà quay lên ngay cha của nĩ là x¡_¡
Trang 11III Bài tốn áp dung
| Bài tốn người du lịch 1 Bai tốn
Một người du lịch muốn tham quan n thành phố Tị, , Tạ Xuất phát từ một
thành phố nào đĩ, người du lịch muốn đi qua tất cả các thành phố cịn lại, mỗi thành phố đi qua đúng 1 lần rối quay trở lại thành phố xuất phát
Trang 12III Bài tốn áp dung
Trang 13|II Bài tốn áp dụng
| Bài tốn người du lịch
2 Y tưởng
Bài tốn chuyển về dạng :
Tim Min{f(ao, , a, ) : (ao, , a, ) la hodn vi cua {2, n}}
VỚI f(ad,,°7°.4,) =Cyy + Cg g te tC, +C, ,
Cách giải bài tốn sẽ kết hợp đánh giá nhánh cận trong quá trình liệt kê
ai m7—Ï oly
Trang 14Try (i) = lor(J= l —>n) if( Chấp nhận được ) Ill.B toa | Bài tốn người du lịch 3 Thiết kế Input C= (Cụ )
Trang 15III Bài tốn áp dung
| Bài tốn người du lịch
3 Thiết kế
e Nếu ta cố định xuất phát tử T¡, ta duyệt vịng lặp từ j =2 sec Đánh giá nhánh cận :
Dat: CMin = Min{Cj:1,) € {1, ,n}
Giả sử vào bước ¡ ta tìm được lời giả bộ phận cấp ¡ là (x¡ x; ), tức là đã đi qua đoạn đường TÏ¡ —> Ta -> .->Ï;¡, tương ứng với chị phí :
Trang 16III Bài tốn áp dung
| Bài tốn người du lịch 3 Thiết kế
Để phát triển hành trình bộ phận này thành một hành trình đầy đủ, ta cịn
phải đi qua n-i+l đoạn đường nữa, gồm n-i thành phố cịn lại và đoạn quay lai T) Do chi phi mỗi một trong n-i+l đoạn cịn lại khơng nhỏ hơn CMIin, nên hàm
Trang 17III Bài tốn áp dung
| Bài tốn người du lịch 3 Thiết kế
e_ Diều kiện chấp nhận được của J là thành phố T; chưa đi qua Ta dùng một mảng lòic Daxet[] để biểu dién trang thai nay
1:7, đã được đi qua
Daxet| j| =
JÌ lu chưa được đi qua
Trang 18III Bài tốn áp dung
| Bài tốn người du lịch
3 Thiết kế
e_ Xác định x¡ theo J bằng câu lệnh gán : x¡ =]
Cap nhật trạng thái mới : Daxet|j] = 1
Trang 19III Bài tốn áp dung
Trang 20III Bài tốn áp dung
| Bài tốn người du lịch
3 Thiết kế
e Thao tac huy bo trang thai : Daxet[j] =0
Trang 23III Bài tốn áp dung
Trang 26III Bài tốn áp dung
II Bài tốn cái túi
1 Bài tốn
Cĩ n loại đồ vật, mỗi loại cĩ số lượng khơng hạn chế Đồ vật loại ¡, đặc
trưng bởi trọng lượng Wï va gid trị sử dụng Vĩ, với mọi ¡ e {I n}
Trang 27III Bài tốn áp dung
II Bài tốn cái túi 2 Ý tưởng H | Đặt : D= ụ =(I,,:''uUU)C MP: 3 _1r,M, < m| ;=l và : #:D->R ; (Uj, > f (uu) = UV; 3(u,,7°°,u,) ED i=l Bài tốn chiếc túi xách chuyển về bai tốn sau : Tim x* € D: f* =f(x*)= | f(w) “HE D}
Trang 28II Bài tốn cái túi
Trang 29III Bài tốn áp dung
II Bài tốn cái túi
3 Thiết kế thuật tốn e Cách chọn vật: M Vv “ wat 14 5 — _L hưu Xét mảng đơn giá : 2g = ww tì 1 H„, Hi
Ta chọn vật theo đơn giá giảm dân
Khơng mất tính tổng quát, ta giả sử các loại vật cho theo thứ tư øiim dân | = : : 7
“ "so
Trang 30III Bài tốn áp dung
II Bài tốn cái túi
3 Thiết kế thuật tốn
e Danh gia can tren:
Trang 31-III Bài tốn áp dung
ll Bai toan cai tui Max) su =(u,,-+-,u,) € Dyu ; =X, VJ= L,i}=
3 Thiết kế thuật tốn | Max< S + Nụ, v, Su Ww, ; SII, k= j=irl j=irl 1 la cĩ : | | | | HH, S+ an Š yu, Vi Su W, S1, tS 5ð +, | |
ƒ=i+Ì j=irl ] Wey
Do đĩ, cận trên cho các lời giải bộ phận cấp ¡ cĩ thể xác định bởi :
g(x, )=S+y,, | “
Trang 32III Bài tốn áp dung
II Bài tốn cái túi
Trang 33III Bài tốn áp dung
II Bài tốn cái túi
3 Thiết kế thuật tốn
e Vi vay, thao tac trả lại trạng thái cũ cho bài tốn :
3= h— AV] T= T- XiW¡
e Cap nhat lời giải tối ưu :
Khi tìm được một lời giải, ta so sánh lời giải này với lời giải mà ta coi là tốt
Trang 34III Bài tốn áp dung
II Bài tốn cái túi
3 Thiết kế thuật tốn
e Cac khdi tao giá trị ban đầu :
-x*=0; /Lời giải tối ưu của bài tốn
- f# =f(x*) =0: // Giá tri tối ưu
-S=0: //Giá trị thu được từng bước của chiếc túi
Trang 354 Cài đặt if(S > Gttu) id Try(int z ry(unt 1 Gan(): int j, t, g: , mess L=(in)((m-TIJ/v[ï)) [or (J=t;J >=Ú ; ] ) else |
Xfi} =] g¢=$+4+v[it+l]*(m-Tl)/w{[i+l]; //Danh gia can
Tl = Tl + w{i]”x[I]://Trong luong thu duoc Cg? 289) Try (+1);
S =S +v(1]*x[1|; //Gia tri thu duoc TI = TI - w[i]*x[il: If(IE=n) [jap nhat to1 uu S =S -Vv[I]*x[H]:
Trang 40IV Bai tap
1 Cài đặt thuật tốn giải bài tốn người du lịch (dựa trên thuật tốn
liệt kê các hốn vị) theo phương pháp nhánh cận Đánh giá độ phức
tạp thuật tốn bằng lý thuyết, bằng thực nghiệm và so sánh
2 2 Cài đặt thuật tốn giải bài tốn cái túi (dựa trên thuật tốn liệt day nhi phan do dài N) theo phương pháp nhánh cận Đánh giá độ