29.01.04 1 Bài toán chọn hoạt động (activity-selection problem) ° Cho – Một tập các hoạt động S = {1, 2,…, n} – Một tài nguyên chung mà tại mọi thời điểm nó được dùng bởi nhiều lắm là một hoạt động – Hoạt động i có thời điểm bắt đầu là s i và thời điểm chấm dứt là f i – Nếu hoạt động i được chọn thì i tiến hành trong thời gian [s i , f i ) – Hai hoạt động i và j là tương thích nhau (“compatible”) nếu [s i , f i ) và [s j , f j ) không chạm nhau. ° Bài toán chọn hoạt động là tìm một tập các hoạt động tương thích nhau mà có số phần tử lớn nhất. 29.01.04 2 Giải thuật greedy cho bài toán chọn hoạt động ° Giải thuật – Giả sử: f 1 ≤ f 2 ≤ … ≤ f n . GREEDY-ACTIVITY-SELECTOR(s, f) 1 n ← length[s] 2 A ← {1} 3 j ← 1 4 for i ← 2 to n 5 do if s i ≥ f j 6 then A ← A ∪ {i} 7 j ← i 8 return A 29.01.04 3 Chạy GREEDY-ACTIVITY-SELECTOR lên một ví dụ 1 1 4 2 3 5 3 0 6 4 5 7 5 3 8 6 5 9 7 6 10 8 8 11 9 8 12 10 2 13 11 12 14 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 8 8 8 8 11 2 4 3 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 thời gian i s i f i vòng lặp for với i = 2 vòng lặp for với i = 3 29.01.04 4 Correctness của giải thuật greedy cho bài toán chọn hoạt động ° Đònh lý Giải thuật GREEDY-ACTIVITY-SELECTOR tìm được lời giải tối ưu cho bài toán chọn hoạt động. ° Chứng minh – Gọi S = {1, 2,…, n} là tập hợp các hoạt động. Các hoạt động được xếp thứ tự theo thời điểm chấm dứt. Do đó hoạt động 1 có thời điểm chấm dứt sớm nhất. – Ta chứng minh có lời giải tối ưu bắt đầu bằng hoạt động do chọn lựa greedy, tức là bắt đầu bằng hoạt động 1: • Giả sữ A ⊆ S là lời giải tối ưu, ta xếp thứ tự các hoạt động trong A theo thời điểm chấm dứt. Giả sữ k là hoạt động đầu tiên trong A. • Nếu k = 1 thì ta xong. Nếu k ≠ 1, ta xét B = A − {k} ∪ {1}. Vì f 1 ≤ f k , nên B cũng là lời giải tối ưu. – Nếu A là lời giải tối ưu cho bài toán nguyên thủy S, thì A’ = A − {1} là lời giải tối ưu cho bài toán S’ = {i ∈ S : s i ≥ f 1 }. [...]... mọi i 12. 9 .20 04 Ch 2: Amortized Ana 21 Phương pháp thế năng: phân tích một stack ° ° Phân tích một chuỗi gồm n thao tác lên một stack – PUSH(S, x) – POP(S) – MULTIPOP(S, k) Áp dụng phương pháp thế năng để xác đònh chi phí khấu hao của mỗi thao tác – Đònh nghóa: thế năng Φ của một stack là số đối tượng trong stack top → 23 33 4 45 4 78 12. 9 .20 04 stack có thế năng là 6 Ch 2: Amortized Ana 22 Phương... ) − Φ(Di − 1) ≤ ti + 1 + 1 − ti = 2 12. 9 .20 04 Ch 2: Amortized Ana 27 Phương pháp thế năng: phân tích bộ đếm nhò phân dài k bits ° Trò của bộ đếm bắt đầu bằng 0, nên Φ(D0) = 0, do đó Φ(Di ) ≥ Φ(D0) Vậy chi phí khấu hao tổng cộng là chận trên cho chi phí thực sự tổng cộng ⇒ Phí tổn trong trường hợp xấu nhất của n thao tác là O(n) 12. 9 .20 04 Ch 2: Amortized Ana 28 Bảng động ° ° Trong một số ứng dụng, dùng... phí khấu hao của mỗi thao tác – Nhận xét (giả sử trò ban đầu của bộ đếm là 0) bit A[0] flips n lần bit A[1] n /2 bit A [2] n/4 Tổng quát: bit A[i] flips n/2i lần, i = 0,…, lg n bit A[i] không flips nếu i > lg n – Tính được tổng của n/2i từ i = 0 đến lg n là ≤ 2n 12. 9 .20 04 Ch 2: Amortized Ana 11 Phương pháp gộp chung: phân tích bộ đếm nhò phân ° ° Dùng phương pháp gộp chung để xác đònh... O(n) 12. 9 .20 04 Ch 2: Amortized Ana 25 Phương pháp thế năng: phân tích bộ đếm nhò phân dài k bits ° ° Phân tích một chuỗi các thao tác lên một bộ đếm nhò phân dài k-bit Dùng phương pháp thế năng để xác đònh chi phí khấu hao của mỗi thao tác – Đònh nghóa thế năng Φ của bộ đếm sau thao tác INCREMENT thứ i là bi , số các bits bằng 1 trong bộ đếm 0 1 1 1 Thế năng là 3 12. 9 .20 04 Ch 2: Amortized Ana 26 Phương... khi trả cho PUSH 12. 9 .20 04 Ch 2: Amortized Ana 15 Phương pháp kế toán: phân tích stack (tiếp) ° Kết luận: Cho một chuỗi bất kỳ gồm n thao tác PUSH, POP, và MULTIPOP, phí tổn khấu hao tổng cộng là một cận trên cho phí tổn thực sự tổng cộngï – Vì mỗi thao tác có phí tổn khấu hao là O(1) nên một cận trên cho phí tổn thực sự tổng cộng là O(n) 12. 9 .20 04 Ch 2: Amortized Ana 16 Phương pháp kế toán: phân tích... 1 12. 9 .20 04 Ch 2: Amortized Ana 31 Chiến lược mở rộng một bảng (tiếp) thực thi TABLE-INSERT ∅ TABLE-INSERT 12. 9 .20 04 Ch 2: Amortized Ana 32 Phân tích một chuỗi TABLE-INSERT ° ° Giả sử: – Thời gian thực thi của TABLE-INSERT tỉ lệ với thời gian chèn từng item (“chèn sơ đẳng”) vào bảng ở dòng 6 và 10 – Chi phí của một chèn sơ đẳng là 1 Sẽ phân tích chi phí của một chuỗi gồm n INSERT lên một bảng động. .. phương pháp – gộp chung – kế toán – thế năng 12. 9 .20 04 Ch 2: Amortized Ana 33 Phân tích chuỗi TABLE-INSERT bằng phương pháp gộp chung ° Dùng phương pháp gộp chung để xác đònh chi phí khấu hao của INSERT – Chi phí ci của thao tác thứ i là i nếu i − 1 = 2j ° là 1 trong các trường hợp còn lại – Chi phí của n thao tác TABLE-INSERT ° là n + tổng các 2j từ j = 0 đến lg n ≤ n + 2n = 3n Vậy chi phí khấu hao... mọi bit của bộ đếm là 1, thao tác INCREMENT có thể cần đến thời gian xấu nhất là Θ(k) – Do đó một chuỗi n thao tác INCREMENT cần thời gian xấu nhất là nO(k) = O(nk) 12. 9 .20 04 Ch 2: Amortized Ana 12 Phương pháp kế toán ° Trong phương pháp kế toán của phân tích khấu hao, chúng ta đònh giá (charge) khác nhau cho các thao tác khác nhau Ta có thể đònh giá cho một thao tác cao hơn hay thấp hơn phí tổn thực... nhò phân dài k-bit mà trò ban đầu là 0 Dùng phương pháp kế toán để xác đònh chi phí khấu hao của INCREMENT – Quy một phí tổn khấu hao là 2 đồng để set một bit thành 1 ° dùng 1 đồng để trả phí tổn thực sự ° dùng 1 đồng còn lại để trả trước cho phí tổn để reset bit này thành 0 sau này (nếu có) 12. 9 .20 04 Ch 2: Amortized Ana 17 Phương pháp kế toán: phân tích một bộ đếm nhò phân ° ° Xác đònh phí tổn khấu... lên một bảng – TABLE-INSERT: chèn một item vào bảng – TABLE-DELETE: xóa một item khỏi bảng 12. 9 .20 04 Ch 2: Amortized Ana 29 Hệ số sử dụng của một bảng ° ° Đònh nghóa hệ số sử dụng (load factor) của một bảng T (không trống) là α(T): α(T) = số khe (slots) có chứa đối tượng trong bảng chia cho số khe của bảng Bài toán: Xác đònh chiến lược nới rộng và thu nhỏ bảng sao cho – hệ số sử dụng của bảng cao ° được . nhau. ° Bài toán chọn hoạt động là tìm một tập các hoạt động tương thích nhau mà có số phần tử lớn nhất. 29 .01.04 2 Giải thuật greedy cho bài toán chọn hoạt động ° Giải thuật – Giả sử: f 1 ≤ f 2 . for với i = 3 29 .01.04 4 Correctness của giải thuật greedy cho bài toán chọn hoạt động ° Đònh lý Giải thuật GREEDY-ACTIVITY-SELECTOR tìm được lời giải tối ưu cho bài toán chọn hoạt động. ° Chứng. 29 .01.04 1 Bài toán chọn hoạt động (activity-selection problem) ° Cho – Một tập các hoạt động S = {1, 2, …, n} – Một tài nguyên chung mà tại mọi thời điểm nó được dùng bởi nhiều lắm là một hoạt