Định lý 16.13

Một phần của tài liệu Tiểu luận môn học THIẾT KẾ VÀ PHÂN TÍCH THUẬT TOÁN PHƯƠNG PHÁP THAM LAM (Trang 41 - 46)

Nếu S là một tập các công việcvới các thời hạn kết thúc tương ứng và l là tập của tất cả các tập độc lập thì hệ thống tương ứng (S,l) là một matroid.

Chứng minh: Mọi tập con của một tập các công việc độc lập đều là độc lập. Để

chứng minh tính chất trao đổi, giả sử B và A là những tập công việc độc lập và B > A .

Gọi k là giá trị t lớn nhất sao cho Nt(B)≤ Nt(A). (Ví dụ một giá trị t tồn tại vì rằng N0(B)=0). Bởi vì Nn(B)= B và Nn(A)= A , nhưng B > A , ta ắt hẳn có k<n và

Nj(B)>Nj(A) đối với tất cả các j trong khoảng k+1≤j≤ n. Vì vậy, B chứa nhiều công việc với thời hạn kết thúc k+1 hơn A. Đặt ai là một công việc trong B-A với thời hạn kết thúc là k+1. Đặt A’=A∪{ai}.

Bây giờ ta chỉ ra rằng A’ phải là độc lập bởi tính chất 2 của bổ đề 16.12. Với 0≤ t≤ k, ta có Nt(A’) = Nt(A)≤ t, vì rằng A là độc lập. Với k<t=n, ta có Nt(A’)≤ Nt(B)≤t vì rằng B là độc lập. Vì vậy, A’ là độc lập, ta hoàn thành việc chứng minh rằng (S,l) là một matroid.

Bằng định lý 16.11, ta có thể sử dụng thuật toán tham lam để tìm ra một tập các nhiệm vụ A độc lập có trọng số cực đại. Sau đó ta có thể lập nên một làm việc tối ưu gồm các công việc trong A như là những công việc sớm của nó. Phương thức này là một thuật toán lập lịch các công việc hiệu quả với các thời hạn kết thúc và số tiền phạt đối với bộ xử lý đơn. Thời gian chạy thuật toán là O(n2) bằng cách sử dụng GREEDY, vì rằng có O(n) lần kiểm tra tính độc lập mà mỗi lần tốn O(n) đơn vị thời gian (xem Bài tập 15.5-2).

Minh hoạ 16.7 đưa ra một ví dụ về bài toán lập lịch các công việc với các thời hạn kết thúc và số tiền phạt đối với bộ xử lý đơn. Trong ví dụ này, thuật toán tham lam chọn các công việc a1, a2, a3 và a4, sau đó loại bỏ a5 và a6, và cuối cùng nhận a7. Lịch làm việc tối ưu cuối cùng là: a2, a4, a1, a3, a7, a5, a6 có tổng số tiền phạt là w5 + w6 = 50

Công việc

ai 1 2 3 4 5 6 7 di 4 2 4 3 1 4 6 wi 70 60 50 40 30 20 10

Minh hoạ 16.7: Một ví dụ của bài toán lập lịch các công việc với các thời hạn kết thúc và các số tiền phạt cho bộ xử lý đơn.

5.3. Các bài tập liên quan:

Bài 1:Giải bài toán lập lịch được cho ở minh hoạ 16.7, nhưng với số tiền phạt wi được thay bởi 80 - wi

Bài 2: Chỉ ra cách sử dụng tính chất 2 của Bổ đề 16.12 để xác định trong thời gian O( A ) thì tập A các nhiệm vụ cho trước có là độc lập hay không.

CÁC BÀI TẬP TỔNG HỢP Bài 1: Đổi tiền

Cho bài toán đổi n thành một số nhỏ nhất các đồng tiền xu. Giả sử rằng giá trị của mỗi đồng tiền xu là một số nguyên.

a. Mô tả thuật toán tham lam để đổi thành đồng trị giá 25 xu (1/4 đô la), 1 hào (1/10 đô la), niken và peni. Chứng minh rằng thuật toán của bạn đưa đến một giải pháp tối ưu.

b. Giả sử rằng những đồng tiền có giá trị là loại đơn vị tiền tệ là luỹ thừa của c, v.v…, những loại đơn vị tiền tệ là c0, c1,…, ck với các số nguyên c>1 và k≥1. Chỉ ra rằng thuật toán tham lam luôn đưa đến một giải pháp tối ưu.

c. Cho một tập các loại đơn vị tiền tệ mà thuật toán tham lam không đưa đến một giải pháp tham lam. Tập hợp của bạn bao gồm các đồng xu sao cho có một giải pháp cho mọi giá trị của n.

d. Cho một thuật toán có độ phức tạp thời gian là O(nk) mà để đổi một tập bất kỳ gồm k loại đơn vị tiền tệ khác nhau, giả sử rằng mỗi loại đó là một đồng xu.

Bài 2:Lập lịch với thời gian hoàn thànhtrung bình nhỏ nhất

Giả sử bạn được cho một tập S = {a1, a2,..., an} của các nhiệm vụ, điều kiện nhiệm

vụ thứ ai yêu cầu pi đơn vị thời gian xử lý để hoàn thành, mỗi một lần nó bắt đầu. bạn có một máy tính để chạy các nhiệm vụ này, và máy tính chạy mỗi một nhiệm vụ trong một lần. Cho ci là thời gian hoàn thành của nhiệm vụ ai, nghĩa là, thời gian mà nhiệm vụ ai hoàn thành việc xử lý. Chiến thắng của bạn là cực tiểu thời gian hoàn thành trung bình, đó là, cực tiểu hoá 1 (1/ ) n i i n C =

∑ . Ví dụ, giả sử có hai nhiệm vụ, a1 và a2, với p1 = 3, p2 = 5, và xem như lịch thực hiện mà trong đó a2 thực hiện trước, sau đó đến a1. cho c2 =5, c1 =8, và thời gian hoàn thành trung bình là (5+8)/2=6.5.

a. Cho một thuật toán để lâp lịch cho các nhiệm vụ sao cho cực tiểu hoá thời gian hoàn thành trung bình. Mỗi một nhiệm vụ phải thực hiện không ưu tiên, nghĩa là, khi nhiệm vụ ai được bắt đầu, nó phải chạy liên tục trong pi đơn vị thời gian. Chứng minh rằng thuật

toán của bạn cực tiểu thời gian hoàn thành trung bình, nói rõ thời gian thực hiện thuât toán của bạn.

Giả sử bây giờ rằng các nhiệm vụ không thể chạy tất cả trong mỗi lần. Nghĩa là mỗi nhiệm vụ có một thời gian thật ri trước mỗi thời gian đó nó không thể được xử lý. Cũng giả sử rằng ta cho phép dừng, để mà một nhiệm vụ có thể được tạm hoãn và bắt đầu lại tại thời gian trễ hơn. Ví dụ, một nhiệm vụ ai với thời gian xử lý pi =6 có thể bắt đầu chạy tại thời gian 1 và có thể tạm hoãn tại thời gian 4. Nó có thể bắt đầu lại tại thời gian 10 nhưng tạm hoãn tại thời gian 11và cuối cùng bắt đầu lại tại thời gian 13 và hoàn thành tại thời gian 15. Nhiệm vụ ai đã thực hiện trong tổng cộng là 6 đơn vị thời gian, nhưng thời gian thực hiện của nó đã được chia ra làm ba phần. Ta nói rằng thời gian hoàn thành của ai là 15. Hãy đưa ra một thuật toán lập lịch cho các nhiệm vụ để mà cực tiểu thời gian hoàn thành trung bình trong kịch bản mới này. Chứng minh rằng thuật toán của bạn cực tiểu thời gian hoàn thành trung bình, và nói rõ thời gian thực hiện thuật toán của bạn.

Bài 3: Đồ thị con không có chu trình

a. Cho G = (V, E) là một đồ thị vô hướng. Sử dụng định nghĩa của một matroid, chỉ ra rằng (E,ℓ) là một matroid, điều kiện A ∈ℓ nếu và chỉ nếu A là một đồ thị con không có

chu trình của E.

b. Ma trận liên thuộc cho một đồ thị vô hướng G = (V, E) là một |V | ×|E| ma trận M nghĩa là Mve=1 nếu cạnh e là liên thuộc trên đỉnh v, và Mve= 0 là ngược lại. lý luận rằng một tập các cột của M là độc lập tuyến tính nếu và chỉ nếu tập tương ứng của các cạnh không có chu trình. Sau đó, sử dụng kết quả của bài tập 16.4-2 để cung cấp một sự chứng minh kế tiếp rằng (E,ℓ) của phần (a) là matroid.

c. Giả sử rằng một trọng số không âm w(e) được kết hợp với mỗi cạnh trong một đồ thị vô hướng G = (V, E). Hãy đưa ra một thuật toán hiệu quả để tìm một tập con không có chu trình của E với tổng trọng số lớn nhất.

d. Cho G(V, E) là một đồ thị có hướng tuỳ ý, và cho (E,ℓ) được định nghĩa để cho A ∈ℓ nếu và chỉ nếu A không chứa chu trình có hướng bất kỳ. Hãy đưa ra một ví dụ một đồ thị có hướng G sao cho hệ thống kết nối (E,ℓ) không là một matroid. Chỉ rõ điều kiện định

e. Ma trận liên thuộccho đồ thị có hướng G = (V, E) là một |V |×|E| ma trận M để mà Mve

= -1 nếu cạnh e rời đỉnh v, Mve = 1 nếu cạnh e hướng tới đỉnh v, và Mve= 0 cách khác. Lý luận rằng nếu một tập của các cột của M là độc lập tuyến tính, sau đó tập tương ứng của các cạnh không chứa một chu trình có hướng.

f. Bài tập 16.4-2 ta cho rằng một tập của các tập độc lập tuyến tính của các cột của ma trận bất kỳ M thành lập một matroid. Giải thích cẩn thận tại sao kết quả của các phần (d) và (e) là không mâu thuẫn. Không thể có sự tương ứng hoàn toàn giữa khái niệm của một tập các cạnh là chu trình và khái niệm của tập kết hợp gồm các cột của ma trận liên thuộc là độc lập tuyến tính.

Bài 4: Các biến thể về lập lịch

Xem thuật toán được đề cập đến cho bài toán ở phần 16.5 của các công việc được lập lịch theo đơn vị thời gian với các thời hạn cuối cùng và số tiền phạt.Cho tất cả n thời gian đưa vào lúc đầu là rỗng, điều kiện thời gian đưa vào i là đơn vị chiều dài thời gian đưa vào của thời gian kết thúc tại thời điểm i. Ta xem như các công việc xếp thứ tự theo số tiền phạt giảm dần. Khi xem xét nhiệm vụ aj, Nếu có tồn tại một thời gian đưa vào tại thời điểm hoặc truớc thời điểm kết thúc dj của aj mà là vẫn còn rỗng, cho aj thời gian đưa vào trễ nhất, điền nó vào. Nếu như không có một vị trí như thế thì gán công việc aj cho vị trí mới nhất của các vị trí chưa điền.

a. Biện luận rằng thuật toán này luôn luôn đưa ra một đáp án tối ưu.

b. Sử dụng một tập rời rạc nhanh được trình bày ở phần 21.3 để thực hiện thuật toán một cách hiệu quả. Giả sử rằng một tập các công việc đưa vào đã được sắp xếp theo thứ tự giảm dần số tiền phạt. Phân tích thời gian chạy của tiến trình thực thi.

CÁC CHÚ Ý TRONG ĐỀ TÀI

Nhiều tài liệu về phương pháp tham lam và matroid có thể tìm đọc ở Lawler [196] và Papadimitriou và Steiglitz [237].

Phương pháp tham lam đầu tiên xuất hiện trong tài liệu tối ưu tổ hợp trong một bài báo năm 1971 của Edmonds [85], qua lý thuyết về matroids có trong bài báo năm 1935 của Whitney [314].

Chứng minh của ta về sự chính xác của phương pháp tham lam cho bài toán chọn hoạt động là dựa trên cơ sở của Gavril [112]. Bài toán lập lịch công việc được nghiên cứu trong Lawler [196], Horowitz và Sahni [157], và Brassard và Bratley [47].

Giải thuật mã hoá Huffman được phát minh năm 1952[162]; Lelewer and Hirschberg [200] surveys

Kỹ thuật nén dữ liệu được biết đến năm 1987

Lý thuyết mở rộng về matroid trong lý thuyết tham lam được khám phá đầu tiên bởi Korte và Lovász.

Một phần của tài liệu Tiểu luận môn học THIẾT KẾ VÀ PHÂN TÍCH THUẬT TOÁN PHƯƠNG PHÁP THAM LAM (Trang 41 - 46)

Tải bản đầy đủ (DOC)

(46 trang)
w