Tải bản đầy đủ (.docx) (14 trang)

Giải thuật tham lam

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (202.62 KB, 14 trang )

Giải thuật tham lam
Phần 1: Bài toán chọn/xếp lịch các hoạt động
Bài toán sắp xếp lịch cho nhiều hoạt động với ý nghĩa để có thể sử dụng chung một tài nguyên (mỗi
thời điểm chỉ có một hoạt động sử dụng tài nguyên chung), với mục tiêu là sắp xếp sao cho càng có
nhiều hoạt động tương thích sử dụng tài nguyên càng tốt.

Giảng viên: ThS. Bùi Thị Thủy
Nhóm thực hiện:
1. Nguyễn Văn Huấn
2. Lê Thị Hiến
3. Nguyễn Thanh Thảo
4. Nguyễn Thu Thủy
5. Nguyễn Thị Ngọc Yến

4/4/2012


Mục lục

1.Giới thiệu bài toán
Bài toán sắp xếp lịch cho nhiều hoạt động với ý nghĩa để có thể sử dụng chung một tài nguyên (mỗi
thời điểm chỉ có một hoạt động sử dụng tài nguyên chung), với mục tiêu là sắp xếp sao càng có nhiều
hoạt động tương thích sử dụng tài nguyên càng tốt.
Giả sử ta có một tập hợp S = {a1,a2,..an } là tập các hoạt động muốn sử dụng tài nguyên, ví dụ một hội
trường, chỉ mỗi một hoạt động tại mỗi thời điểm.Mỗi hoạt động ai sẽ có thời điểm bắt đầu là si và thời
điểm kết thúc là fi, với điều kiện 0 ≤ si < fi < ∞.Nếu hoạt động ai được chọn, thì nó sẽ độc chiếm tài nguyên
trong khoảng thời gian [si, fi). Hoạt động ai và aj được gọi là tương thích lẫn nhau nếu như khoảng thời gian
2


[si, fi) và [sj, fj) là không giao nhau (Ví dụ ai và aj là tương thích nếu si ≥ fj hoặc sj ≥ fi).Trong bài toán chọn


hoạt động ta phải chọn tập con lớn nhất của các hoạt động tương thích lẫn nhau. Chẳng hạn, xem tập S
của các hoạt động sau, mà ta có thể sắp xếp tăng dần theo thời điểm kết thúc.

i

S
i

F
i

1 2 3 4 5 6 7

8

9

1
0

1
1

1 3 0 5 3 5 6

8

8

2


1
2

1
0

1
1

1
2

1
3

1
4

4 5 6 7 8 9

Ta sẽ thấy một cách ngắn gọn là tại sao nó thuận lợi để xem xét các hoạt động trong trình tự sắp xếp.
Chẳng hạn như, một tập con {a3, a9, a11 } bao gồm những hoạt động tương thích lẫn nhau. Nó không phải là
tập con lớn nhất, vì một tập con {a1, a4, a8, a11} là lớn hơn.Thật ra {a1, a4, a8, a11} là tập con lớn nhất của các
hoạt động tương thích lẫn nhau; một tập con lớn nhất khác là {a2, a4, a9, a11}.
Ta sẽ giải quyết bài toán này trong một vài bước. Ta bắt đầu bởi việc đưa ra công thức của giải pháp
quy hoạch động đối với bài toán này trong đó ta tổng hợp các giải pháp tối ưu đối với hai bài toán con để
thiết lập giải pháp tối ưu của bài toán gốc. Ta có các lựa chọn khi quyết định các bài toán để sử dụng
trong một giải pháp tối ưu.Sau đó, ta sẽ nhận thấy rằng ta chỉ cần một lựa chọn duy nhất - lựa chọn tham
lam - và sau khi ta lựa chọn chỉ còn một bài toán con, một bài toán con còn lại sẽ rỗng. Dựa trên những

nhận xét này, ta sẽ xây dựng một giải thuật tham lam đệ quy để giải quyết bài toán lập lịch hoạt động. Ta
sẽ hoàn thành quá trình xây dựng giải thuật tham lam bởi việc biến đổi giải thuật đệ quy sang giải thuật
lặp. Mặc dù những bước ta thực hiện trong phần này thể hiện mối liên quan nhiều hơn là tiêu biểu cho sự
phát triển của phương pháp tham lam, chúng minh hoạ cho mối quan hệ của phương pháp tham lam và
quy hoạch động.

3


2. Cấu trúc con tối ưu của bài toán chọn hoạt động
Như đã đề cập ở trên, ta bắt đầu bằng phương quy hoạch động để giải quyết bài toán lựa chọn hoạt
động.Như ở chương 15, bước đầu tiên là tìm ra cấu trúc con tối ưu và sau đó sử dụng nó để xây dựng một
giải pháp tối ưu cho bài toán từ các giải pháp tối ưu cho các bài toán con.
Ta nhận thấy rằng ở chương 15 ta cần định nghĩa một không gian thích hợp của bài toán con. Ta hãy
bắt đầu bằng việc định nghĩa các tập hợp:
Sij = {ak ∈S : fi ≤ sk < fk ≤ sj }
Sao cho Sij là một tập con của các hoạt động trong tập S mà có thể bắt đầu sau khi hoạt động a i kết
thúc và kết thúc trước hoạt động aj bắt đầu.Thật ra, Sij chứa tất cả các hoạt động tương thích với ai và aj và
cũng tương thích với tất cả các hoạt động hoàn thành không trễ hơn ai và tất cả các hoạt động bắt đầu
không sớm hơn aj bắt đầu.Để thuận tiện trong việc biểu diễn bài toán, không mất tính tổng quát, ta thêm
vào những hoạt động giả sử a0 và an+1 với qui ước rằng f0 = 0 và Sn+1 = ∞. Sau đó S = S0..n+1, và phạm vi của
i và j được cho bởi 0 ≤ i, j ≤n+1.
Ta có thể giới hạn hơn nữa phạm vi của i và j như sau. Giả sử rằng các hoạt động đó được sắp xếp
theo một thứ tự tăng dần của thời điểm kết thúc:
f0 ≤ f1 ≤ f2 ≤...≤fn ≤ fn+1. (16.1)
Ta dễ dàng thấy rằng Sij = Ø với i ≥ j. Tại sao? Giả sử rằng tồn tại hoạt động a k

Sij sao cho i ≥ j, vì

vậy ai kế tiếp aj trong thứ tự sắp xếp. Sau đó ta sẽ có

fi ≤ sk < fk ≤ sj < fj.Vì vậy, fi < fj, điều này mâu thuẫn với giả thiết rằng ai kế tiếp aj trong thứ tự sắp xếp. Ta
có thể kết luận rằng, ta sắp xếp các hoạt động theo thứ tự tăng dần của thời điểm kết thúc, phạm vi của các
bài toán con của ta là chọn một tập con cực đại của các hoạt động tương thích lẫn nhau từ S ij với 0 ≤ i < j ≤
n+1, biết rằng tất cả các Sij khác là đều rỗng.
Để nhận ra được cấu trúc con của bài toán chọn hoạt động, ta xét một bài toán con khác rỗng Sij, và
giả sử rằng một giải pháp đối với Sij tồn tại một hoạt động ak, mà fi ≤ sk < fk ≤ sj. Việc chọn hoạt động ak sẽ
phát sinh ra hai bài toán con, Sik (những hoạt động mà bắt đầu sau khi ai kết thúc và kết thúc trước khi ak
bắt đầu) và Skj (những hoạt động mà bắt đầu sau khi ak kết thúc và kết thúc trước khi aj bắt đầu), mỗi hoạt
đó bao gồm một tập con của các hoạt động trong Sij. Giải pháp của ta đối với bài toán Sij là tổng hợp hai

4


giải pháp cho hai bài toán con Sik và Skj, ứng với hoạt động ak. Vì vậy số các hoạt động trong giải pháp đối
với Sij của ta là kích thước của bài toán Sik, cộng với kích thước của bài toán Skj, cộng với một (cho ak).
Cấu trúc con tối ưu của bài toán này là như sau. Nếu Aij là giải pháp tối ưu cho bài toán có chứa các
hoạt động ak.Thì giải pháp Aik cho Sik và Akj cho Skj được sử dụng trong Sij cũng tối ưu.Lý luận cắt và dán
thông thường áp dụng.Thật vậy, nếu tồn tại một giải pháp A'ik cho Sik chứa nhiều hoạt động hơn Aik, ta có
thể thay Aik bởi A'ik trong Aij, ta sẽ tìm ra một giải pháp khác đối với Sij có nhiều hoạt động hơn Aij.Điều
này trái với giả thiết ta co rằng Aij là giải pháp tối ưu đối với Sij.Tương tự, nếu ta có một giải pháp A'kj đối
với Skj với nhiều hoạt động hơn Akj, ta có thể thay thế Akj bởi A'kj để đưa ra một giải pháp cho Sij với nhiều
hoạt động hơn Aij.
Bây giờ ta sử dụng cấu trúc con tối ưu để chỉ ra rằng có thể xây dựng một giải pháp tối ưu cho bài
toán từ những giải pháp tối ưu đối với những bài toán con. Ta đã thấy rằng giải pháp nào đó cho bài toán
con khác rỗng Sij có chứa hoạt động ak, và giải pháp tối ưu bất kỳ đó chứa trong nó những giải pháp tối ưu
đối với bài toán con Sik và Skj. Vì vậy, ta có thể xây dựng một tập con cực đại của những hoạt động tương
thích lẫn nhau trong Sij bởi việc phân chia bài toán thành hai bài toán con (tìm tập con lớn nhất của các
hoạt động tương thích lẫn nhau trong Sik và Skj ), tìm ra những tập con lớn nhất Aik và Akj của những hoạt
động tương thích lẫn nhau đối với những bài toán con này, và thành lập tập con lớn nhất Aij của các hoạt
động tương thích lẫn nhau như:

Aij = Aik U {ak } U Akj (16.2)
Giải pháp tối ưu cho bài toán chính là giải pháp cho S0,n+1.

3. Giải pháp đệ quy
Bước thứ hai trong việc phát triển giải pháp quy hoạch động là định nghĩa một cách đệ quy giá trị của
giải pháp tối ưu.Đối với những bài toán chọn hoạt động, gọi c[i,j] là số các hoạt động trong tập con lớn
nhất chứa các hoạt động tương thích lẫn nhau trong Sij. Ta có c[i,j] = 0 khi Sij = Ø, hoặc c[i,j] = 0 khi i ≥ j.
Xét một tập con Sij khác rỗng. Như ta đã thấy, nếu ak được sử dụng trong tập con lớn nhất các hoạt
động tương thích lẫn nhau của Sij, Ta cũng sử dụng các tập con lớn nhất của các hoạt động tương thích lẫn
nhau cho các bài toán con Sik và Skj. Dùng công thức (16.2), ta có công thức c[i,j] = c[i,k] + c[k,j] + 1.
Công thức đệ quy này cho thấy rằng ta biết giá trị của k, mà ta không biết.Ta có i-j-1 giá trị có thể
chấp nhận cho k, cụ thể là k = i+1,..., j-1. Vì tập con lớn nhất của S ij phải dùng một trong những giá trị
5


này của k, ta phải kiểm tra tất cả chúng để tìm ra giá trị tốt nhất. Vì vậy công thức đệ quy đầy đủ của c[i,j]
trở thành:

(16.3)

4. Biến đổi một giải pháp quy hoạch động thành một giải pháp tham lam
Tại điểm này, nó sẽ là một bài tập dễ hiểu lập một cái bảng, từ dưới lên, thuật toán quy hoạch động
dựa trên công thức (16.3).Thực ra, bài tập 16.1-1 yêu cầu bạn thực hiện điều này. Có hai sự xác định then
chốt, tuy nhiên, điều này cho phép ta đơn giản hoá giải pháp của ta.
Định lý 16.1
Xét một bài toán con khác rỗng Sij,và nếu am là một hoạt động trong Sij có thời điểm kết thúc sớm
nhất: fm = min{fk : ak ϵSij}. Thì:
1. Hoạt động am được sử dụng trong một tập con lớn nhất nào đó của các hoạt động tương thích lẫn
nhau của Sij.
2. Bài toán con Sim là rỗng, do đó nếu chọn am thì chỉ còn duy nhất bài toán con khác rỗng Smj.

Chứng minh
Ta chứng minh phần hai trước vì đơn giản hơn. Giả sử rằng Sim là khác rỗng, do đó có một hoạt động
ak nào đó sao cho fi ≤ sk < fk ≤ sm < fm . Mà ak cũng nằm trong Sij và nó có thời gian kết thúc sớm hơn am,
điều này mâu thuẫn với việc chọn am Ta kết luận rằng Sim là rỗng.
Để chứng minh phần thứ nhất, ta giả sử rằng, Aij là một tập con lớn nhất của các hoạt động tương
thích lẫn nhau của Sij, và ta sắp xếp các hoạt động của Aij theo thứ tự tăng dần của thời điểm kết thúc. Gọi
ak là hoạt động đầu tiên trong Aij. Nếu ak = am, thì ta đã chứng minh được, chỉ ra rằng am được sử dụng
trong tập con lớn nhất nào đó của các hoạt động tương thích lẫn nhau của S ij. Nếu ak ≠ am, ta xây dựng tập
con A’ij = Aij – {ak} ∪ {am}. các hoạt động trong A’ij thì tách rời nhau, các hoạt động trong Aij thì, ak là hoạt
6


động kết thúc đầu tiên trong Aij, và fm ≤ fk. Chú ý rằng A’ij có số hoạt động giống như Aij, ta thấy rằng A’ij
cũng là một tập con lớn nhất của các hoạt động tương thích lẫn nhau của S ij mà có chứa am.
Tại sao định lý 16.1 có giá trị?Quay về phần 15.3 cấu trúc con tối ưu làm thay đổi cách nhiều bài toán
được sử dụng trong giải pháp tối ưu để đến bài toán gốc và trong nhiều cách chọn ta có xác định những
bài toán con để sử dụng. Trong giải pháp quy hoạch động, hai bài toán con được sử dụng trong giải pháp
tối ưu, và có j-i-1 cách chọn khi giải quyết bài toán con Sij. Định lý 16.1 giảm cả số lượng lớn đáng kể
này: chỉ duy nhất một bài toán con được sử dụng trong giải pháp tối ưu (một bài toán con khác thì là
rỗng), và khi giải quyết bài toán con Sij, ta cần xem duy nhất một cách chọn: một cách với thời gian kết
thúc sớm nhất trong Sij.May mắn thay, ta có thể dễ dàng xác định đây là hoạt động nào.
Cùng với việc giảm số các bài toán con và số cách chọn, định lý 16.1 cung cấp một lợi ích khác: ta có
thể giải quyết mỗi bài toán con theo kiểu từ trên xuống (top-down), hơn là kiểu từ dưới lên (bottom-up)
sử dụng điển hình trong quy hoạch động. Để giải quyết bài toán con Sij, ta chọn hoạt động am trong Sij với
thời gian kết thúc sớm nhất và thêm vào giải pháp này một tập của các hoạt động dùng trong giải pháp tối
ưu đối với bài toán con Sij. Bởi vì ta biết rằng, có chọn am, ta sẽ được sử dụng một giải pháp nào đó cho Smj
trong giải pháp tối ưu của ta cho Sij, ta không cần giải quyết Smj trước việc giải quyết Sij. Để giải quyết Sij,
ta có thể chọn am trước tiên như hoạt động trong Sij với thời điểm kết thúc sớm nhất và sau đó giải quyết
Smj.
Cũng chú ý rằng có một mô hình đối với những bài toán con mà ta giải quyết. Bài toán ban đầu của ta

là S =S0,n+1. Giả sử rằng chọn am1 là hoạt động trong S0,n+1 với thời điểm kết thúc sớm nhất. (Từ việc sắp xếp
các hoạt động theo thứ tự thời điểm kết thúc tăng dần và f0 = 0, ta phải có m1 = 1.) Bài toán con tiếp theo là
Sm1,n+1. Bây giờ giả sử rằng ta chọn am2 là hoạt động trong Sm1,n+1 với thời điểm kết thúc sớm nhất. (Nó
không cần thiết trong trường hợp m2 = 2). Bài toán con tiếp theo là Sm2,n+1. Tiếp theo, ta thấy rằng mỗi bài
toán con sẽ có dạng S

,n+1

cho số hoạt động mi nào đó.Tóm lại, mỗi bài toán con gồm có các hoạt động

cuối cùng để kết thúc, và một số các hoạt động biến đổi từ bài toán con này đến bài toán con khác.
Cũng có một mô hình đối với các hoạt động mà ta chọn.Bởi vì ta luôn luôn chọn hoạt động với thời
điểm kết thúc sớm nhất trong S

,n+1,

thời điểm kết thúc của các hoạt động được chọn qua tất cả các bài

toán con sẽ làm gia tăng nghiêm trọng thời gian.Tuy nhiên, ta có thể xem như mỗi hoạt động là một toàn
diện, trong việc sắp xếp tăng dần của thời điểm kết thúc.

7


Hoạt động am mà ta chọn khi giải quyết một bài toán con thì luôn là một hoạt động với thời điểm kết
thúc sớm nhất mà có thể được lập lịch hợp lý. Hoạt động được chọn như vậy là chọn lựa “tham lam”
trong hướng này, qua trực giác, nó để lại nhiều cơ hội có thể cho những hoạt động còn lại để lập lịch.Đó
là, lựa chọn tham lam là một cách mà cực đại hoá số lượng đáng kể của thời gian còn lại chưa lập lịch.

5. Giải pháp tham lam đệ quy

Bây giờ ta đã thấy cách tổ chức hiệu quả giải pháp quy hoạch động, và cách xử lý nó theo phương
pháp từ trên xuống, ta xem một giải thuật mà nó hoạt động một cách thuần tuý trong thuật toán tham lam,
kiểu từ trên xuống.Dễ hiểu, một giải thuật đệ quy như là thủ tục RECURSIVE-ACTIVITY-SELECTOR.
Nó lấy thời điểm bắt đầu và kết thúc của các hoạt động, được trình bày như các mảng s và f, xem như
những chỉ số bắt đầu i và n mà nó định nghĩa bài toán con Si,n+1 nó là để giải quyết. (Tham số n chỉ hoạt
động thực tế cuối cùng an trong bài toán con và không chỉ hoạt động không có thật an+1 mà nó cũng ở trong
bài toán con). Nó trả về một tập lớn nhất của các hoạt động tương thích lẫn nhau trong S i,n+1 .Ta cho rằng
n hoạt động đưa vào được sắp xếp theo thời điểm kết thúc tăng dần, theo công thức (16.1). nếu không, ta
có thể sắp xếp chúng theo thứ tự này với độ phức tạp O(n lgn), phá vỡ sự ràng buộc một cách tuỳ tiện.
Lời gọi ban đầu là RECURSIVE-ACTIVITY-SELECTOR(s,f, 0, n).
RECURSIVE-ACTIVITY-SELECTOR (s ,f ,i, n)
1.
2.
3.
4.
5.
6.

mi+1
while m < n and sm < fi
Tìm hoạt động đầu tiên trong Si,n+1
do m m+1
if m < n
then return {am} U RECURSIVE-ACTIVITY-SELECTOR(s ,f ,m ,n)
else return Ø

Minh hoạ 16.1 chỉ ra sự thực hiện của thuật toán.Trong việc gọi đệ quy của RECURSIVEACTIVITY-SELECTOR(s,f,i,n), vòng lặp while của dòng 2-3 tìm kiếm hoạt động đầu tiên trong vòng lặp
ví dụ ai+1, ai+2, …, an, cho đến khi nó tím thấy hoạt động đầu tiên am mà tương thích với ai, một hoạt động
như vậy có Sm fi. Nếu vòng lặp giới hạn bởi nó tìm thấy một hoạt động như vậy giải thuật quay lại dòng 5
sự kết hợp của {am} và tập con cực đại của Sm,n+1 quay lại bởi việc gọi đệ quy RECURSIVE-ACTIVITYSELECTOR(s,f,m,n).Một cách lựa chọn, vòng lặp có thể giới hạn bởi m>n, trong trường hợp này ta đã có

kiểm tra tất cả các hoạt động mà không tìm thấy một hoạt động nào tương thích với ai. Trong trường hợp
này Si,n+1= Ø, vì vậy giải thuật sẽ trả về Ø ở dòng 6.

8


6. Giải pháp tham lam lặp
Ta dễ dàng chuyển đổi giải thuật đệ quy thành giải thuật lặp. Giải thuật RECURSIVE-ACTIVITYSELECTOR thì hầu như “đệ qui yếu“ (xem bài toán 7-4): nó kết thúc với lời gọi đệ quy chính nó theo
một sự thực hiện kết hợp.Dễ dàng để thay đổi một giải thuật đệ qui yếu thành giải thuật lặp, thật ra, một
số trình biên dịch cho ngôn ngữ lập trình bất kỳ thực hiện công việc này một cách tự động. Như đã được
viết, RECURSIVE-ACTIVITY-SELECTOR thực hiện cho các bài toán con S i,n+1…, những bài toán con
mà có các hoạt động kết thúc cuối cùng.
Giải thuật GREEDY-ACTIVITY-SELECTOR là một phiên bản lặp của giải thuật RECURSIVEACTIVITY-SELECTOR, ở đây cũng giả sử các hoạt động đầu vào được sắp xếp theo thời điểm kết thúc
tăng dần. Nó tập hợp các hoạt động được chọn vào một tập A và quay lại tập này khi nó đã được thực
hiện xong.

9


10


Hình 16.1 Sự thực hiện của RECURSIVE-ACTIVITY-SELECTOR trong hoạt động 11 được cho sớm
hơn.Các hoạt động đã được xem trong mỗi lời đệ quy xuất hiện giữa những đường kẻ ngang.Hoạt động
không có thật a0 kết thúc tại thời điểm 0, và trong lời gọi ban đầu RECURSIVE-ACTIVITY-SELECTOR
(s,f,0,11), hoạt động a1 được chọn.Trong mỗi lời gọi đệ quy, những hoạt động mà đã được chọn được tô
đen, và các hoạt động tmàu tô trắng đang được xem xét. Nếu thời gian bắt đầu của một hoạt động xảy ra
trước thời gian kêt thúc của hoạt động mới được chọn (mũi tên giữa chúng chỉ sang trái), nó bị loại. Trái
lại(mũi tên chỉ trực tiếp hay qua phải), nó được chọn. Lời gọi đệ quy cuối cùng, RECURSIVE-ACTIVITYSELECTOR (s, f, 0, 11) trả về Ø. Tập kết quả của các hoạt động được chọn là{a1, a4, a8, a11}.
GREEDY-ACTIVITY-SELECTOR(s,f)

1

n ← length[s]

2

A ← {a1}

3

i←1

4

for m ← 2 to n

5

do if sm ≥ fi

6

then

i←m

7
8

A ← A ∪ {am}


return A

Giải thuật thực hiện như sau.Biến i đánh số các phần tử thêm vào A gần nhất, tương ứng đối với hoạt
động ai trong phiên bản đệ quy.Giả sử các hoạt động được sắp xếp theo thứ tự tăng dần của thời điểm kết
thúc, fi luôn là thời điểm kết thúc lớn nhất của hoạt động nào đó trong A. Điều đó là:
fi = max{fk : ak ϵA} (16.4)
Dòng 2-3 chọn hoạt động ai, ban đầu A chỉ chứa chỉ một hoạt động này, và khởi đầu i là chỉ số hoạt
động này.Vòng lặp for ở các dòng 4-7 tìm thấy hoạt động kết thúc sớm nhất trong Si,n+1. Vòng lặp xem
xét mỗi hoạt động am trong vòng lặp và thêm am vào A nếu nó tương thích với tất cả các hoạt động được
11


chọn trước đó. Một hoạt động như vậy là hoạt động kết thúc sớm nhất trong Si,n+1. Để thấy nếu hoạt
động am là tương thích với mỗi hoạt động hiện tại trong A, nó đáp ứng bởi phương trình (16.4) để kiểm tra
(dòng 5) rằng thời điểm bắt đầu của nó Sm thì không sớm hơn thời điểm kết thúc fi của hoạt động thêm vào
A gần đây nhất. nếu hoạt động am tương thích, thì các dòng 6-7 thêm hoạt động am vào A và thiết lập i đến
m. Tập A quay lại bởi lời gọi GREEDY-ACTIVITY-SELECTOR(s,f) là chính xác tập được quay lại bởi
lời gọi RECURSIVE-ACTIVITY-SELECTOR(s,f, 0, n ).
Giống như phiên bản đệ quy, GREEDY-ACTIVITY-SELECTOR lập lịch một tập của n hoạt động
với độ phức tạp là O(n) thời gian, giả sử rằng các hoạt động ban đầu đã được sắp xếp theo thời điểm kết
thúc của chúng.

7.Bài tập
Exercises 16.1-1
Give a dynamic-programming algorithm for the activity-selection problem, based on the
recurrence (16.3). Have your algorithm compute the sizes c[i, j] as defined above and also
produce the maximum-size subset A of activities. Assume that the inputs have been sorted as
in equation (16.1). Compare the running time of your solution to the running time of
GREEDY-ACTIVITY-SELECTOR.

Bài tập 16.1-1
Cho một thuật toán chương trình-động về vấn đề lựa chọn hoạt động, dựa trên sự tái diễn (16.3).Tính toán
kích cỡ c[i,j] như định nghĩa ở trên và tạo ra tập con A các hoạt động với kích cỡ lớn nhất .Giả định rằng
đầu vào đã được sắp xếp như trong phương trình (16.1).So sánh thời gian chạy của giải pháp này với thời
gian chạy của GREEDY-ACTIVITY-SELECTOR.
Exercises 16.1-2
Suppose that instead of always selecting the first activity to finish, we instead select the last
activity to start that is compatible with all previously selected activities. Describe how this
approach is a greedy algorithm, and prove that it yields an optimal solution.
Bài tập 16.1-2

12


Giả sử rằng thay vì luôn chọn hoạt động đầu tiên để kết thúc, ta chọn hoạt động cuối để bắt đầu sao cho
nó tương thích với tất cả các hoạt động đã chọn trước đó.Mô tả phương pháp tiếp cận này là một thuật
toán tham lam như thế nào và chứng minh rằng nó mang lại một giải pháp tối ưu.
Exercises 16.1-3
Suppose that we have a set of activities to schedule among a large number of lecture halls. We
wish to schedule all the activities using as few lecture halls as possible. Give an efficient
greedy algorithm to determine which activity should use which lecture hall.
(This is also known as the interval-graph coloring problem. We can create an interval graph
whose vertices are the given activities and whose edges connect incompatible activities. The
smallest number of colors required to color every vertex so that no two adjacent vertices are
given the same color corresponds to finding the fewest lecture halls needed to schedule all of
the given activities.)
Bài tập 16.1-3
Giả sử ta có một tập các hoạt động để lập lịch trong một lượng lớn các giảng đường.Ta muốn lập lịch mọi
hoạt động sử dụng ít nhất có thể các giảng đường.Hãy cho một thuật toán tham lam hiệu quả để xác định
hoạt động nào nên dùng giảng đường nào.

(Điều này còn được gọi là tô màu đồ thị -thời gian).Ta có thể tạo ra đồ thị -thời gian ,các đỉnh của nó là
các hoạt động và các cạnh nối các hoạt động không tương ứng.Xác định số màu nhỏ nhất cần thiết tô cho
các đỉnh để không có 2 đỉnh liền kề cùng màu tương đương với việc tìm số giảng đường ít nhất cần cho
việc lên lịch các hoạt động.
Exercises 16.1-4
Not just any greedy approach to the activity-selection problem produces a maximum-size set
of mutually compatible activities. Give an example to show that the approach of selecting the
activity of least duration from those that are compatible with previously selected activities
does not work. Do the same for the approaches of always selecting the compatible activity
that overlaps the fewest other remaining activities and always selecting the compatible
remaining activity with the earliest start time.
Bài tập 16.1-4
Không chỉ có thuật toán tham lam tiếp cận đến vấn đề lựa chọn hoạt động tạo ra tập hợp kích cỡ lớn nhất
các hoạt động tương thích.Hãy cho một ví dụ chỉ ra rằng phương pháp tiếp cận của lựa chọn hoạt động
13


về thời gian ngắn nhất từ chúng tương thích với các hoạt động đã lựa chọn trước đó không thực hiện
được.Làm tương tự với các pp tiếp cận luôn chọn hoạt động tương thích chồng chéo các hoạt động khác ít
nhất còn lại và luôn chọn hoạt động còn lại tương thích với thời gian bắt đầu sớm nhất.
[1]
We will sometimes speak of the sets Sij as subproblems rather than just sets of activities. It
will always be clear from the context whether we are referring to Sij as a set of activities or the
subproblem whose input is that set.
[1]
Đôi khi ta nói về các tập hợp Sij như bài toán con không chỉ là các tập hợp hoạt động.Điều đó sẽ luôn rõ
ràng từ ngữ cảnh cho dù chúng ta đang đề cập tới Sij như tập các hoạt động hay bài toán con có đầu vào
là tập hợp đó.

Tài liệu tham khảo

16.1 An activity-selection problem -Chapter 16-The MIT Press Introduction to Algorithms 2nd

Phân công công việc trong nhóm
1.Nguyễn Thị Ngọc Yến: Mô tả bài toán ; Cấu trúc con tối ưu của bài toán chọn hoạt động
2.Lê Thị Hiến: Giải pháp đệ quy trong quy hoạch động ; Biến đổi một giải pháp quy hoạch động thành
một giải pháp tham lam (Định lý 16.1)
3.Nguyễn Thu Thủy: Giải pháp tham lam đệ quy;Phân tích hình 16.1
4.Nguyễn Văn Huấn: Giải pháp tham lam lặp;Phân tích hình 16.1
5.Nguyễn Thanh Thảo: Tổng hợp tài liệu word,làm slide power point, thuyết trình.

14



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×