Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 25

Chương 4

Phương pháp Tham lam


(Greedy Method)
Nội dung
1.
1.Bài
Bàitoán
toán “Chọn
“Chọn hoạt
hoạt động”
động”

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

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

2
1. Bài toán “Chọn hoạt động”
S = {a1,a2,..,an} : tập các hoạt động muốn sử dụng
tài nguyên (ví dụ: một hội trường)
Hoạt động ai (i=1..n) chiếm tài nguyên: [si, fi)
(si: thời điểm bắt đầu, fi: thời điểm kết thúc)
Hai hoạt động ai và aj “tương thích” lẫn nhau nếu
[si,fi) và [si,fj) không chồng lên nhau
Một tập S’  S được gọi là “tương thích” nếu các
hoạt động của S’ đôi một tương thích.

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


3
1. Bài toán “Chọn hoạt động” (2)
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)

1 2 3 4 5 6 7 8 9 10 11

si 1 3 0 5 3 5 6 8 8 2 12

fi 4 5 6 7 8 9 10 11 12 13 14

•{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

4
1. Bài toán “Chọn hoạt động” (3)
Các bước thực hiện:

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

Chia bài Chỉ cần sự


lựa chọn Xây
toán lớn dựng Chuyển
thành 2 Tham lam Đệ quy
 Còn lại giải thuật
bài toán  Lặp
con 1 bài toán Đệ quy
con

5
1. Bài toán “Chọn hoạt động” (4)
1.
1. Quy
Quy hoạch
hoạch động
động 2.
2. Tham
Tham lam
lam 3.
3. Đệ
Đệ quy
quy 3.
3. Khử
Khử Đệ
Đệ quy
quy

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


Gọi tập Sij = {akS | fisk<fksj}
Giả sử: f0  f1 … fn  fn+1 (có thêm 2 hoạt động ao và an+1)
Xét bài toán con khác rỗng Sij:
• Giả sử ak, fi  sk  fk  sj.
• Nếu chọn ak  2 bài toán con: Sik và Skj
  |Sij| = |Sik| + |Skj| + 1
Nhận xét:

Nếu Aij = MaxComp(Sij) thì Aik = MaxComp(Sik) và Akj = MaxComp(Skj)

Giải pháp: chia bài toán Aij thành 2 bài toán con Aik và Akj
Aij = Aik  {ak}  Akj
Bài toán ban đầu: A0,n+1
6
1. Bài toán “Chọn hoạt động” (5)
1.
1. Quy
Quy hoạch
hoạch động
động 2.
2. Tham
Tham lam
lam 3.
3. Đệ
Đệ quy
quy 3.
3. Khử
Khử Đệ
Đệ quy
quy

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


Gọi cij = |Aij|
Với Sij  , ta có công thức đệ quy:
cij = cik + ckj + 1 (k có thể nhận j-i-1 giá trị)
Công thức đệ quy đầy đủ:
0 nếu Sij=

cij = Max {cik+ckj+1} nếu Sij


i+1  k  j-1

7
amk

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


1.
1. Quy
Quy hoạch
hoạch động
động 2.
2. Tham
Tham lam
lam 3.
3. Đệ
Đệ quy
quy 3.
3. Khử
Khử Đệ
Đệ quy
quy
Định lý:

Sij: bài toán khác rỗng. Nếu amSij mà fm=min {fk | akSij} thì:
1. am được sử dụng trong tập con tương thích lớn nhất nào đó của
Sij
2. Sim=  nếu chọn am thì chỉ còn duy nhất bài toán khác rỗng Smj

Aij

ak Sij
am
A’ij
8
1. Bài toán “Chọn hoạt động” (7)
1.
1. Quy
Quy hoạch
hoạch động
động 2.
2. Tham
Tham lam
lam 3.
3. Đệ
Đệ quy
quy 3.
3. Khử
Khử Đệ
Đệ quy
quy

RecusiveActivitySelector(s,f,i,j) {
mi+1
while (m<j) and (sm<fi) do m m+1
if (m<j) then return {am}RecursiveActivitySelector(s,f,m,j)
else return 
}

•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)

9
1. Bài toán “Chọn hoạt động” (8)
1.
1. Quy
Quy hoạch
hoạch động
động 2.
2. Tham
Tham lam
lam 3.
3. Đệ
Đệ quy
quy 3.
3. Khử
Khử Đệ
Đệ quy
quy

GreedyAcrivitySelector(s,f) {
nlength(s)
A {a1}
i 1
for m 1 to n do
if sm>fi then {
A A{am}
i m
}
return A
}

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

0 - 0 a0

1 1 4 a1 RAS(s,f, 0,12)
a0 m=1

2
3
4 3
0
5 5
6
7 a3 a2 a4 RAS(s,f, 1,12)

a1 m=4

5
6
8
7 3
5
8
6 8
9
11
10
a5 a6 a7 a8

a1 a4 m=8 RAS(s,f, 4,12)

12  -
a1 a4 a8 a11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 t
11
2. Phương pháp “Tham lam”
Tiến trình thực hiện phương pháp Tham lam
1. Xác định cấu trúc con tối ưu
2. Xây dựng giải pháp đệ quy
3. Chứng minh: tại mỗi bước đệ qui, lựa chọn Tham
lam là một trong những lựa chọn cho kết quả tối
ưu
4. Chỉ ra: sau lỗi lựa chọn Tham lam, một trong
những bài toán con sẽ rỗng
5. Xây dựng giải pháp đệ quy cho chiến lược Tham
lam
6. Khử đệ quy

12
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
lam qua các bước:
1.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 con
2.Chứng minh: với sự lựa chọn Tham lam tại mỗi
bước  luôn tìm được 1 giải pháp tối ưu (cho bài
toán ban đầu)
3.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 với sự lựa chọn Tham lam này sẽ đi đến một
giải pháp tối ưu (cho bài toán ban đầu)

13
2. Phương pháp “Tham lam” (3)
Hai đặc tính quan trọng của phương pháp Tham lam:

1.Tính lựa chọn Tham lam (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
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  chọn phương án tốt nhất
• Tham lam (Top-Down)  Quy hoạch động (Bottom-Up)

2.Cấu trúc con tối ưu (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
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ó.

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

Hasser Whitney (1907-1989)


1935: trong bài báo “On the abstract properties of
linear dependence”, ông đưa ra lý thuyết Matroid
Lý thuyết matroid không thể áp dụng cho tất cả
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)

15
3.
Định nghĩa 1:
Cơ sở lý thuyết (2)
Một matroid mà một bộ 2 có thứ tự M=(S,), thỏa mãn:
– S là một tập hữu hạn khá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
B và AB thì A (ta nói là di truyền)
– M thỏa mãn tính chất trao đổi (exchange) nếu A, B và |A|<|B| thì
xB-A mà A{x}
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. AG  A không chứa chu trình
16
Định lý 1:
3. Cơ sở lý thuyết (3)
Nếu G=(V,E) là một đồ thị vô hướng thì MG=(SG,G) là một matroid.

Chứng minh:
1. SG=E là một tập hữu hạn khác rỗng
2. G là di truyền vì một tập con của một rừng là một rừng
3. Tính chất trao đổi? GA=(V,A), GB=(V,B) là rừng của G và |B|>|A|.
Rừng GA có |V|-|A| cây, rừng GB có |V|-|B| cây. GB có ít cây hơn GA nên
cây TGB mà các đỉnh của T nằm ở 2 cây khác nhau trong G A. T liên thông
 (u,v)T mà u và v nằm ở 2 cây khác nhau của GA nên cạnh (u,v) có thể
thêm vào GA mà không tạo thành chu trình  MG thỏa mãn tính chất trao
đổi.
2
3 2 3

1 4
1 4
5
GA 5 GB
17
3. Cơ sở lý thuyết (4)
Phần tử mở rộng:

Cho matroid M=(S,). xA được gọi là phần tử mở rộng của


A nếu A{x}
A là tập con độc lập của matroid M. Ta nói A cực đại nếu nó
không có phần tử mở rộng nào.

Định lý 2:
Mọi tập con cực đại trong một matroid có cùng lực lượng.

Chứng minh: A là tập con cực đại trong M. Giả sử B là tập


con cực đại khác trong M mà |B|>|A|. Tính chất trao đổi
 x=B-A là một phần tử mở rộng của A  trái với giả
thiết A là tập con cực đại  đpcm
18
3. Cơ
Matroid có trọng số:
sở lý thuyết (5)
Matroid M=(S,) là có trọng số nếu  ánh xạ:
w: S  R+
x w(x)
Với AS, ta có: w(A) = sumxA(w(x))

w(B)

w(A)

19
3. Cơ sở lý thuyết (6)
Phương pháp Tham lam áp dụng cho matroid có trọng số

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
matroid có trọng số.

Ví dụ: bài toán Cây khung nhỏ nhất


– Gọi matroid MG với hàm trọng số w’: w’(e) = w0-w(e).
Trong đó w0 = max{w(e)}+1
– 1 tập con A cực đại 1 cây khung của đồ thị
– w’(A) = (|V|-1)w0 - w(A). w(A) là độ dài của cây khung.
– Cực đại hóa w’(A)  cực tiểu hóa w(A)
– tìm tập con tối ưu A  tìm cây khung nhỏ nhất

20
3. Cơ sở lý thuyết (7)
Greedy (S,  , w)
A
Sort(S) {Sxếp S không tăng dần w}
for each x in S do
if (A{x}) then A  A{x}
return 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

21
3. Cơ sở lý thuyết (8)
Bổ đề 1: Matroid có tính lựa chọn tham lam

M=(S,) 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ố.
x là phần tử đầu tiên của S mà {x} độc lập.
Nếu x thì  một tập con tối ưu A của S chứa x.

Chứng minh:
y3 y3
•Không x   là tập con độc lập duy nhất y4
y4
•Gọi B là tập con tối ưu  x
y1
y1 y5
•xB  đpcm
y5 y2
•xB  xây dựng tập A (sử dụng tính
chất trao đổi)
A B
22
3. Cơ sở lý thuyết (9)
Bổ đề 2:
Với matroid M=(S,). Nếu x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 .

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.

Hệ quả 1:
Matroid M=(S,). Nếu x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
của S.

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!
23
3. Cơ sở lý thuyết (10)
Bổ đề 3: (Matroid có tính cấu trúc con tối ưu)
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
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’,’):
 S’ = {yS | {x,y},
 ’ = {BS-{x} | B{x}S},
 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)

24
3. Cơ sở lý thuyết (11)
Định lý 3: (tính đúng của Tham lam áp dụng cho matroid)
Nếu M=(S,) là một matroid có trọng số với hàm trọng số là
w thì hàm Greedy(S, ,w) trả về một tập con tối ưu.

Chứng minh:
Hệ quả 1  những phần tử bị bỏ lúc đầu không hữu dụng
 sau này khôn cần xét lại chúng nữa
Bổ đề 1  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 tối ưu
chứa x
Bổ đề 3  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)

25

You might also like