25
Chương 4 Chương 4 Phương pháp Tham Phương pháp Tham lam lam (Greedy Method) (Greedy Method)

Phương pháp tham lam

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Phương pháp tham lam

Chương 4Chương 4Phương pháp Tham lamPhương pháp Tham lam

(Greedy Method)(Greedy Method)

Page 2: Phương pháp tham lam

22

Nội dungNội dung1. Bài toán “Chọn hoạt động” 1. Bài toán “Chọn hoạt động”

2. Phương pháp “Tham lam“2. Phương pháp “Tham lam“

3. Cơ sở lý thuyết của Tham lam3. Cơ sở lý thuyết của Tham lam

Page 3: Phương pháp tham lam

33

1. Bài toán “Chọn hoạt động”1. Bài toán “Chọn hoạt động”

S = {aS = {a11,a,a22,..,a,..,ann} : tập các hoạt động muốn sử dụng tài } : tập các hoạt động muốn sử dụng tài

nguyên nguyên (ví dụ: một hội trường)(ví dụ: một hội trường)

Hoạt động aHoạt động ai i (i=1..n) chiếm tài nguyên: (i=1..n) chiếm tài nguyên: [s[sii, f, fii))

((ssii: thời điểm bắt đầu,: thời điểm bắt đầu, ffii: thời điểm kết thúc): thời điểm kết thúc)

Hai hoạt động Hai hoạt động “tương thích”“tương thích” lẫn nhau nếu [s lẫn nhau nếu [sii,f,fii) và [s) và [sii,f,fjj) )

không chồng lên nhaukhông chồng lên nhau

Một tập {aMột tập {aii11,a,aii22,..,a,..,aiikk} được gọi là } được gọi là “tương thích”“tương thích” nếu a nếu aiiuu

tương thích atương thích aiivv, , 11u,vu,vk, uk, uvv

Tìm tập tương thích lớn nhấtTìm tập tương thích lớn nhất

Page 4: Phương pháp tham lam

44

1. Bài toán “Chọn hoạt động” (2)1. Bài toán “Chọn hoạt động” (2)

11 22 33 44 55 66 77 88 99 1010 1111

ssii 11 33 00 55 33 55 66 88 88 22 1212

ffii 44 55 66 77 88 99 1010 1111 1212 1313 1414

•{a3,a9,a11} là một tập tương thích nhưng không lớn nhất

•{a1,a4,a8,a11} là tập tương thích lớn nhất

•{a2,a4,a9,a11} cũng là một tập tương thích lớn nhất

Ví dụ: có 11 hoạt động (được sắp xếp tăng dần theo thời điểm kết thúc)

Page 5: Phương pháp tham lam

55

1. Bài toán “Chọn hoạt động” (3)1. Bài toán “Chọn hoạt động” (3)

1. Quy hoạch động1. Quy hoạch động 2. Tham lam2. Tham lam 3. Đệ quy3. Đệ quy 3. Khử Đệ quy3. Khử Đệ quy

Chia bài toán lớn thành 2 bài toán con

Chỉ cần sự lựa chọn Tham lam Còn lại 1 bài toán con

Xây dựng giải thuật

Đệ quy

Chuyển Đệ quy Lặp

Các bước thực hiện:

Page 6: Phương pháp tham lam

66

1. Bài toán “Chọn hoạt động” (4)1. Bài toán “Chọn hoạt động” (4)

Tìm cấu trúc con tối ưuTìm cấu trúc con tối ưu

Gọi tập SGọi tập Sij ij = {a= {akkS | fS | fiisskk<f<fkkssjj}}

Giả sử: fGiả sử: f0 0 f f1 1 …… f fnn f fn+1n+1 (có thêm 2 hoạt động a (có thêm 2 hoạt động aoo và a và an+1n+1))

Xét bài toán con khác rỗng SXét bài toán con khác rỗng S ijij::• Giả sử Giả sử aakk, f, fii s skk f fkk s sjj. . • Nếu chọn aNếu chọn akk 2 bài toán con: S 2 bài toán con: S ikik và S và Skjkj

|S|Sijij| = |S| = |Sikik| + |S| + |Skjkj| + 1| + 1

Nhận xét:Nhận xét:

Nếu ANếu Aijij = MaxComp(S = MaxComp(Skjkj) thì A) thì Aikik = MaxComp(S = MaxComp(Sikik) và A) và Akjkj = MaxComp(S = MaxComp(Skjkj))

Giải pháp: chia bài toán AGiải pháp: chia bài toán A ijij thành 2 bài toán con A thành 2 bài toán con A ikik và A và Akjkj

AAijij = A = Aikik {a {akk} } A Akjkj

Bài toán ban đầu: ABài toán ban đầu: A0,n+10,n+1

1. Quy hoạch động1. Quy hoạch động 2. Tham lam2. Tham lam 3. Đệ quy3. Đệ quy 3. Khử Đệ quy3. Khử Đệ quy

Page 7: Phương pháp tham lam

77

1. Bài toán “Chọn hoạt động” (5)1. Bài toán “Chọn hoạt động” (5)

Xây dựng giải pháp Đệ qui:Xây dựng giải pháp Đệ qui:

Gọi cGọi cijij = |A = |Aijij||

Với SVới Sijij , ta có công thức đệ quy:, ta có công thức đệ quy:

ccijij = c = cikik + c + ckjkj + 1 (k có thể nhận j-i-1 giá trị) + 1 (k có thể nhận j-i-1 giá trị)

Công thức đệ quy đầy đủ: Công thức đệ quy đầy đủ:

ccijij = =

1. Quy hoạch động1. Quy hoạch động 2. Tham lam2. Tham lam 3. Đệ quy3. Đệ quy 3. Khử Đệ quy3. Khử Đệ quy

0 nếu Sij=

Max {cik+ckj+1} nếu Siji+1 k j-1

Page 8: Phương pháp tham lam

88

1. Bài toán “Chọn hoạt động” (6)1. Bài toán “Chọn hoạt động” (6)1. Bài toán “Chọn hoạt động” (6)1. Bài toán “Chọn hoạt động” (6)

SSijij: bài toán khác rỗng. Nếu a: bài toán khác rỗng. Nếu ammSSijij mà f mà fmm=min {f=min {fkk | a | akkSSijij} thì:} thì:

1.1. aamm được sử dụng trong tập con tương thích lớn nhất nào đó của được sử dụng trong tập con tương thích lớn nhất nào đó của

SSijij

2.2. SSimim== nếu chọn a nếu chọn amm thì chỉ còn duy nhất bài toán khác rỗng S thì chỉ còn duy nhất bài toán khác rỗng Smjmj

1. Quy hoạch động1. Quy hoạch động 2. Tham lam2. Tham lam 3. Đệ quy3. Đệ quy 3. Khử Đệ quy3. Khử Đệ quy

Định lý:

kama

aakk

Aij

A’ij

aamm

SSijij

Page 9: Phương pháp tham lam

99

1. Bài toán “Chọn hoạt động” (7)1. Bài toán “Chọn hoạt động” (7)

RecusiveActivitySelectorRecusiveActivitySelector(s,f,i,j) (s,f,i,j) {{mmi+1i+1whilewhile (m<j) and (s (m<j) and (smm<f<fii) ) dodo m m m+1m+1ifif (m<j) (m<j) thenthen returnreturn {a {amm}}RecursiveActivitySelectorRecursiveActivitySelector(s,f,m,j)(s,f,m,j)elseelse returnreturn

}}

1. Quy hoạch động1. Quy hoạch động 2. Tham lam2. Tham lam 3. Đệ quy3. Đệ quy 3. Khử Đệ quy3. Khử Đệ quy

•Vào: - 2 mảng s và f (thời điểm bắt đầu và kết thúc của các hoạt động)

-2 chỉ số i và j biểu thị bài toán con Sij

•Ra: Tập tương thích lớn nhất trong Sij

•Lời gọi ban đầu: RecursiveActivitySelector (s, f, 0, n+1)

Page 10: Phương pháp tham lam

1010

1. Bài toán “Chọn hoạt động” (8)1. Bài toán “Chọn hoạt động” (8)

GreedyAcrivitySelectorGreedyAcrivitySelector(s,f) (s,f) {{nnlength(s)length(s)A A {a{a11}}i i 11forfor m m 1 1 toto n n dodo

ifif s smm>f>fii thenthen {{A A AA{a{amm}}i i mm

}}

returnreturn A A}}

1. Quy hoạch động1. Quy hoạch động 2. Tham lam2. Tham lam 3. Đệ quy3. Đệ quy 3. Khử Đệ quy3. Khử Đệ quy

Page 11: Phương pháp tham lam

1111

1. Bài toán “Chọn hoạt động” (9)1. Bài toán “Chọn hoạt động” (9)Minh họa:Minh họa:

a0

a0

a1

m=1

a1

a2a3 a4

m=4

a1

a5

a4

a6 a7 a8

m=8

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 t

k sk fk

0 - 0

1 1 4

2 3 53 0 64 5 7

5 3 86 5 97 6 108 8 11

a1 a4 a8 a11

RAS(s,f, 0,12)

RAS(s,f, 1,12)

RAS(s,f, 4,12)

12 -

Page 12: Phương pháp tham lam

1212

2. Phương pháp “Tham lam”2. Phương pháp “Tham lam”

Tiến trình thực hiện phương pháp Tham lamTiến trình thực hiện phương pháp Tham lam1.1. Xác định cấu trúc con tối ưuXác định cấu trúc con tối ưu2.2. Xây dựng giải pháp đệ quyXây dựng giải pháp đệ quy3.3. Chứng minh: tại mỗi bước đệ qui, Chứng minh: tại mỗi bước đệ qui, lựa chọn lựa chọn

Tham lamTham lam là một trong những lựa chọn cho là một trong những lựa chọn cho kết kết quả tối ưuquả tối ưu

4.4. Chỉ ra: sau lỗi lựa chọn Tham lam, một trong Chỉ ra: sau lỗi lựa chọn Tham lam, một trong những bài toán con sẽ rỗngnhững bài toán con sẽ rỗng

5.5. Xây dựng giải pháp đệ quy cho chiến lược Tham Xây dựng giải pháp đệ quy cho chiến lược Tham lamlam

6.6. Khử đệ quyKhử đệ quy

Page 13: Phương pháp tham lam

1313

2. Phương pháp “Tham lam” (2)2. Phương pháp “Tham lam” (2)Một cách tổng quát, thực hiện phương pháp Tham Một cách tổng quát, thực hiện phương pháp Tham lam qua các bước:lam qua các bước:1.1.Tìm lựa chọn sao cho các bước tiếp theo chỉ Tìm lựa chọn sao cho các bước tiếp theo chỉ việc giải quyết một bài toán conviệc giải quyết một bài toán con2.2.Chứng minh: với sự lựa chọn Tham lam tại mỗi Chứng minh: với sự lựa chọn Tham lam tại mỗi bước bước luôn tìm đượcluôn tìm được 1 giải pháp tối ưu 1 giải pháp tối ưu (cho bài (cho bài toán ban đầu)toán ban đầu)3.3.Chỉ ra: với sự lựa chọn Tham lam tại mỗi bước Chỉ ra: với sự lựa chọn Tham lam tại mỗi bước giải pháp tối ưu của bài toán con còn lại kết hợp giải pháp tối ưu của bài toán con còn lại kết hợp với sự lựa chọn Tham lam này với sự lựa chọn Tham lam này sẽ đi đếnsẽ đi đến một giải một giải pháp tối ưu pháp tối ưu (cho bài toán ban đầu)(cho bài toán ban đầu)

Page 14: Phương pháp tham lam

1414

2. Phương pháp “Tham lam” (3)2. Phương pháp “Tham lam” (3)

Hai đặc tính quan trọng của phương pháp Tham lam:Hai đặc tính quan trọng của phương pháp Tham lam:

1.1.Tính lựa chọn Tham lamTính lựa chọn Tham lam (Greedy Choice Property)(Greedy Choice Property):: • Một bài toán có “tính lựa chọn Tham lam” nếu có thể tìm được 1 Một bài toán có “tính lựa chọn Tham lam” nếu có thể tìm được 1

giải pháp tối ưu toàn cục bằng cách lựa chọn tối ưu cục bộ. giải pháp tối ưu toàn cục bằng cách lựa chọn tối ưu cục bộ. • Nhiều sự lựa chọn Nhiều sự lựa chọn chọn phương án tốt nhất chọn phương án tốt nhất• Tham lam (Top-Down) Tham lam (Top-Down) Quy hoạch động (Bottom-Up) Quy hoạch động (Bottom-Up)

2.2.Cấu trúc con tối ưuCấu trúc con tối ưu (Optimal Substructure):(Optimal Substructure): Một bài toán có “cấu trúc con tối ưu” nếu giải pháp tối ưu cho bài Một bài toán có “cấu trúc con tối ưu” nếu giải pháp tối ưu cho bài

toán này chứa các giải pháp tối ưu cho các bài toán con của nó.toán này chứa các giải pháp tối ưu cho các bài toán con của nó.

Page 15: Phương pháp tham lam

1515

3. Cơ sở lý thuyết3. Cơ sở lý thuyết

Hasser Whitney (1907-1989)Hasser Whitney (1907-1989)

1935: trong bài báo 1935: trong bài báo ““On the abstract properties of On the abstract properties of linear dependencelinear dependence””, ông đưa ra lý thuyết Matroid, ông đưa ra lý thuyết Matroid

Lý thuyết matroid Lý thuyết matroid không thểkhông thể áp dụng cho áp dụng cho tất cảtất cả các trường hợp áp dụng phương pháp Tham lam các trường hợp áp dụng phương pháp Tham lam (như bài toán “Chọn hoạt động”, mã Huffman)(như bài toán “Chọn hoạt động”, mã Huffman)

Page 16: Phương pháp tham lam

1616

3. Cơ sở lý thuyết (2)3. Cơ sở lý thuyết (2)

Một Một matroidmatroid mà một bộ 2 có thứ tự M=(S, mà một bộ 2 có thứ tự M=(S,), thỏa mãn:), thỏa mãn:– S là một tập hữu hạn S là một tập hữu hạn khác rỗngkhác rỗng– là một họ khác rỗng các tập con (độc lập) của S, thỏa mãn: nếu là một họ khác rỗng các tập con (độc lập) của S, thỏa mãn: nếu

BB và A và AB thì AB thì A (ta nói (ta nói là là di truyềndi truyền) ) – M thỏa mãn tính chất M thỏa mãn tính chất trao đổitrao đổi (exchange) nếu A (exchange) nếu A, B, B và |A|<|B| và |A|<|B|

thì thì xxB-A mà AB-A mà A{x}{x}

Định nghĩa 1:

Ví dụ:

• Matroid ma trận M=(S,). S là tập các hàng của ma trận. là họ các tập con của S mà các hàng trong mỗi tập con này độc lập tuyến tính.

• Matroid đồ thị MG=(SG,G). G=(V,E) là đồ thị vô hướng. SG là

tập các cạnh của đồ thị G. AG A không chứa chu trình

Page 17: Phương pháp tham lam

1717

3. Cơ sở lý thuyết (3)3. Cơ sở lý thuyết (3)

Chứng minh:Chứng minh:

1.1. SSGG=E là một tập hữu hạn khác rỗng=E là một tập hữu hạn khác rỗng

2.2. GG là di truyền vì một tập con của một rừng là một rừng là di truyền vì một tập con của một rừng là một rừng

3.3. Tính chất trao đổi? GTính chất trao đổi? GAA=(V,A), G=(V,A), GBB=(V,B) là rừng của G và |B|>|A|.=(V,B) là rừng của G và |B|>|A|.

Rừng GRừng GAA có |V|-|A| cây, rừng G có |V|-|A| cây, rừng GBB có |V|-|B| cây. G có |V|-|B| cây. GBB có ít cây hơn G có ít cây hơn GAA nên nên cây cây

TTGGBB mà các đỉnh của T nằm ở 2 cây khác nhau trong G mà các đỉnh của T nằm ở 2 cây khác nhau trong GAA.. T liên thông T liên thông

(u,v)(u,v)T mà u và v nằm ở 2 cây khT mà u và v nằm ở 2 cây khác nhau của Gác nhau của GAA nên cạnh (u,v) nên cạnh (u,v) có thể có thể

thêm vào Gthêm vào GAA mà không tạo thành chu trình mà không tạo thành chu trình M MGG thỏa mãn tính chất trao đổi. thỏa mãn tính chất trao đổi.

Nếu G=(V,E) là một đồ thị vô hướng thì MNếu G=(V,E) là một đồ thị vô hướng thì MGG=(S=(SGG,,GG) là một ) là một matroidmatroid..

Định lý 1:

GA GB

23

4

5

1

2 3

4

5

1

Page 18: Phương pháp tham lam

1818

3. Cơ sở lý thuyết (4)3. Cơ sở lý thuyết (4)

Cho matroid M=(S,Cho matroid M=(S,). x). xA được gọi là A được gọi là phần tử mở rộngphần tử mở rộng của của AA nếu A nếu A{x}{x}A là tập con độc lập của matroid M. Ta nói A A là tập con độc lập của matroid M. Ta nói A cực đại cực đại nếu nó nếu nó không có phần tử mở rộng nào.không có phần tử mở rộng nào.

Mọi tập con cực đại trong một matroid có Mọi tập con cực đại trong một matroid có cùng lực lượngcùng lực lượng..

Định lý 2:

Chứng minh: A là tập con cực đại trong M. Giả sử Chứng minh: A là tập con cực đại trong M. Giả sử B là B là tập con cực đại khác trong M mà |B|>|A|. Tính chất trao tập con cực đại khác trong M mà |B|>|A|. Tính chất trao đổi đổi x=B-A là một phần tử mở rộng của A x=B-A là một phần tử mở rộng của A trái với giả trái với giả thiết A là tập con cực đại thiết A là tập con cực đại đpcm đpcm

Phần tử mở rộng:

Page 19: Phương pháp tham lam

1919

3. Cơ sở lý thuyết (5)3. Cơ sở lý thuyết (5)Matroid M=(S,Matroid M=(S,) là ) là có trọng sốcó trọng số nếu nếu ánh xạ: ánh xạ:

w: S w: S R R++

x w(x)x w(x)

Với AVới AS, ta có: w(A) = sumS, ta có: w(A) = sumxxAA(w(x))(w(x))

Matroid có trọng số:

w(B)

w(A)

Page 20: Phương pháp tham lam

2020

3. Cơ sở lý thuyết (6)3. Cơ sở lý thuyết (6)

Nhiều bài toán sử dụng Tham lam để tim lời giải tối ưu tương Nhiều bài toán sử dụng Tham lam để tim lời giải tối ưu tương đương việc tìm tập con cực đại có trọng số lớn nhất trong một đương việc tìm tập con cực đại có trọng số lớn nhất trong một matroid có trọng số.matroid có trọng số.

Ví dụ:Ví dụ: bài toán Cây khung nhỏ nhất bài toán Cây khung nhỏ nhất– Gọi matroid MGọi matroid MGG với hàm trọng số w’: w’(e) = w với hàm trọng số w’: w’(e) = w00-w(e). -w(e).

Trong đó wTrong đó w00 = max{w(e)}+1 = max{w(e)}+1– 1 tập con A cực đại1 tập con A cực đại 1 cây khung của đồ thị 1 cây khung của đồ thị– w’(A) = (|V|-1)ww’(A) = (|V|-1)w0 0 - w(A). w(A) là độ dài của cây khung.- w(A). w(A) là độ dài của cây khung.– Cực đại hóa w’(A) Cực đại hóa w’(A) cực tiểu hóa w(A) cực tiểu hóa w(A)– tìm tập con tối ưu A tìm tập con tối ưu A tìm cây khung nhỏ nhất tìm cây khung nhỏ nhất

Phương pháp Tham lam áp dụng cho matroid có trọng số

Page 21: Phương pháp tham lam

2121

3. Cơ sở lý thuyết (7)3. Cơ sở lý thuyết (7)

GreedyGreedy (S, (S, , w) , w)

AASort(S) Sort(S) {Sxếp S không tăng dần w}{Sxếp S không tăng dần w}

forfor each x in S each x in S dodo

ifif (A (A{x}{x}) ) thenthen A A A A{x}{x}

returnreturn A A

Vào: Matroid có trọng số, đại diện bởi 3 thông số: S, , w

Ra: Tập con tối ưu A

Page 22: Phương pháp tham lam

2222

3. Cơ sở lý thuyết (8)3. Cơ sở lý thuyết (8)

M=(S,M=(S,) là một matroid có trọng số, với hàm trọng số w và ) là một matroid có trọng số, với hàm trọng số w và tập S có thứ tự không tăng dần theo trọng số.tập S có thứ tự không tăng dần theo trọng số.

x là phần tử đầu tiên của S mà {x} độc lập.x là phần tử đầu tiên của S mà {x} độc lập.

Nếu Nếu x thì x thì một tập con tối ưu A của S chứa x. một tập con tối ưu A của S chứa x.

Bổ đề 1: Matroid có tính lựa chọn tham lam

BA

x

y3 y4

y1

y2

y5

y3

y1y5

y4

Chứng minh:

•Không x là tập con độc lập duy nhất

•Gọi B là tập con tối ưu

•xB đpcm

•xB xây dựng tập A (sử dụng tính chất trao đổi)

Page 23: Phương pháp tham lam

2323

3. Cơ sở lý thuyết (9)3. Cơ sở lý thuyết (9)

Với matroid M=(S,Với matroid M=(S,). Nếu x). Nếu xS là một mở rộng của tập con độc S là một mở rộng của tập con độc lập A nào đó của S thì x cũng là một mở rộng của lập A nào đó của S thì x cũng là một mở rộng của ..

Bổ đề 2:

Chứng minh: x là 1 mở rộng của A A{x} độc lập. l di truyền {x} độc lập.

Matroid M=(S,Matroid M=(S,). Nếu x). Nếu xS mà x không là mở rộng của S mà x không là mở rộng của thì x không là mở rộng của bất kỳ tập con độc lập A nào thì x không là mở rộng của bất kỳ tập con độc lập A nào của S.của S.

Hệ quả 1:

Nếu một phần tử không được chọn lúc ban đầu thì sau này cũng không được chọn!

Page 24: Phương pháp tham lam

2424

3. Cơ sở lý thuyết (10)3. Cơ sở lý thuyết (10)

Gọi x là phần tử đầu tiên của S được chọn bởi hàm Gọi x là phần tử đầu tiên của S được chọn bởi hàm Greedy. Vấn đề còn lại của việc tìm một tập con độc lập Greedy. Vấn đề còn lại của việc tìm một tập con độc lập có trọng số cực đại (chứa x) là tìm một tập con độc lập có có trọng số cực đại (chứa x) là tìm một tập con độc lập có trọng số cực đại của matroid có trọng số M’=(S’,trọng số cực đại của matroid có trọng số M’=(S’,’):’):

S’ = {yS’ = {yS | {x,y}S | {x,y},, ’ ’ = {B= {BS-{x} | BS-{x} | B{x}{x}S},S}, Hàm trọng số cho M’ là hàm trọng số cho M nhưng giới hạn Hàm trọng số cho M’ là hàm trọng số cho M nhưng giới hạn

bởi S’ (gọi M’ là rút gọn của M bởi x)bởi S’ (gọi M’ là rút gọn của M bởi x)

Bổ đề 3: (Matroid có tính cấu trúc con tối ưu)

Page 25: Phương pháp tham lam

2525

3. Cơ sở lý thuyết (11)3. Cơ sở lý thuyết (11)

Chứng minh:Chứng minh:

Hệ quả 1 Hệ quả 1 những phần tử bị bỏ lúc đầu không hữu những phần tử bị bỏ lúc đầu không hữu dụng dụng sau này khôn cần xét lại chúng nữa sau này khôn cần xét lại chúng nữa

Bổ đề 1 Bổ đề 1 khi một phần tử đầu tiên x được chọn, khi một phần tử đầu tiên x được chọn, Greedy đúng khi thêm x vào A vì luôn tồn tại một tập con Greedy đúng khi thêm x vào A vì luôn tồn tại một tập con tối ưu chứa xtối ưu chứa x

Bổ đề 3 Bổ đề 3 bái toán còn lại là tìm tập con tối ưu trong bái toán còn lại là tìm tập con tối ưu trong matroid M’ (M’ là rút gọn của M bởi x)matroid M’ (M’ là rút gọn của M bởi x)

Nếu M=(S,Nếu M=(S,) là một matroid có trọng số với hàm trọng số là ) là một matroid có trọng số với hàm trọng số là w thì hàm Greedy(S, w thì hàm Greedy(S, ,w) trả về một tập con tối ưu.,w) trả về một tập con tối ưu.

Định lý 3: (tính đúng của Tham lam áp dụng cho matroid)