Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 39 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
39
Dung lượng
1,16 MB
Nội dung
KHOA CÔNG NGHỆ THÔNG TIN - - BÀI TẬP LỚN Bài toán phân phối áo áp dụng phương pháp xấp xỉ Giảng viên hướng dẫn: PGS.TS Đào Thanh Tĩnh Học viên thực hiện: Lê Văn Hợp Lớp: Cao học 25B - HTTT Hà nội, 05/ 2014 Phân tích đánh giá thuật toán Mục lục LỜI NÓI ĐẦU Phân tích đánh giá thuật toán nhân tố quan trọng xác định hiệu hệ thống giải toán tin học đặt Có nhiều toán (thuật toán) đưa tốt mức độ chấp nhận Việc tính toán cho phép chấp nhận sai số Vì vậy, thời gian gần phương pháp xấp xỉ quan tâm phát triển số ứng dụng Có nhiều toán mà ta giải phương pháp Trong phải đề cấp đến toán phân phối áo, toán tối ưu hóa Bài toán đặt tên từ vấn đề lựa chọn cách phân phối áo cho kết thu độ lệch cực tiểu Liên quan đến việc giải toán có nhiều phương án khác như: Phương pháp xếp (vun đống), phương pháp tham lam … Ở phương pháp có ưu nhược điểm khác Tuy nhiên tất phương án tốt chưa phải phương án tối ưu Lê Văn Hợp – Cao học 25B – HTTT Phân tích đánh giá thuật toán I PHƯƠNG PHÁP XẤP XỈ Thuật toán cho kết gần với kết tối ưu gọi thuật toán xấp xỉ Tỷ lệ xấp xỉ − Bài toán có nhiều giải pháp − Cần tối ưu hóa hàm mục tiêu − Giải pháp tối ưu giải pháp mà cực đại (hoặc cực tiểu) hóa hàm mục tiêu Đặt: − C giá trị hàm mục tiêu giải pháp xấp xỉ − C* giá trị hàm mục tiêu giải pháp tối ưu Một thuật toán xấp xỉ có tỷ lệ xấp xỉ, ký hiệu ρ(n), với liệu vào kích thước n là: max( C C* , ) ≤ ρ ( n) C* C + Bài toán cực tiểu hóa: C ≥ C* > 0, ρ(n)=C/C* + Bài toán cực đại hóa: C* ≥ C > 0, ρ(n)=C*/C Một thuật toán với tỷ lệ xấp xỉ ρ(n) gọi thuật toán xấp xỉ-ρ(n) Ta có: ρ(n) ≥ Lê Văn Hợp – Cao học 25B – HTTT Phân tích đánh giá thuật toán Nếu ρ(n) nhỏ giải pháp xấp xỉ gần với giải pháp tối ưu Thuật toán xấp xỉ-1 cho giải pháp tối ưu (nghĩa ρ(n)=1) Yêu cầu thuật toán xấp xỉ: Một thuật toán xấp xỉ phải thoả mãn yêu cầu sau đây: − − − − II Dễ tính, dễ chương trình hoá Ước lượng sai số gặp phải Tính thời gian chạy thuật toán Chứng minh tính đắn thuật toán TÊN ĐỀ TÀI (Đề số 23) Người ta may sẵn n áo với kích thước vai V(1), V(2), …, V(n) cho n học sinh Các học sinh đánh số từ tới n có kích thước vai p(1), p(2), …, p(n) Nếu học sinh i nhận áo j độ lệch vai cho trường hợp |V(i)-p(j)| Một phương án phân phối áo cho học sinh 1,2, n mô tả hoán vị π 1, π 2, …,π n với hàm ý học sinh i nhận áo πi Độ lệnh phương án định nghĩa bằng: max {|V(i) – p( π i )|, i=1,2, ,n} Hãy xây dựng thuật toán phân phối áo cho học sinh cho độ lệnh cực tiểu Đánh giá độ phức tạp thuật toán xây dựng III PHÂN TÍCH BÀI TOÁN Các vấn đề toán − Dữ liệu đầu vào hai dãy số V(1), V(2), …, V(n) p(1), p(2), …, p(n) tương ứng với kích thước vai áo kích thước vai n học sinh − Đầu toán đưa phương án phân phối áo cho học sinh với độ lệnh cực tiểu − Giải pháp phân phối áo cho học sinh − Cách tính độ lệnh cực tiểu phương án − Xây dựng thuật toán phân phối áo cho học sinh cho độ lệnh cực tiểu Lê Văn Hợp – Cao học 25B – HTTT Phân tích đánh giá thuật toán − Đánh giá độ phức tạp thuật toán − Khả nâng cao số phần tử tối đa hai mảng liệu đầu vào lên đến 1.000.000 phần tử Do vậy, toán phải tính đến khả chứa hết nhớ quy ước Các ví dụ minh họa Ví dụ 1: Kích thước vai áo có số thứ tự là: V(1,2…8) = {19, 8, 6, 11, 9, 13, 5, 14} Kích thước vai học sinh có số thứ tự là: p(1,2 8) = {15, 4, 3, 2, 6, 5, 1, 10} Phương án 1: Phân phối áo có kích thước vai V1, V2, V8 tương ứng với học sinh kích thước vai p1, p2, p8 Khi độ lệnh phương án phân phối d1 = max {|V(i) – p(π i)|, i=1,2, ,8} d1 = max {(19–15), (8–4), (6–3), (11–2), (9–6), (13–5), (5–1), (14–10)} = Phương án 2: Sắp xếp kích thước vai áo, vai học sinh theo thứ tự tăng dần đánh số lại theo thứ tự, ta có: Kích thước vai áo có số thứ tự là: V(1,2…8)= { 5, 6, 8, 9, 11, 13, 14, 19} Kích thước vai học sinh có số thứ tự là: p(1,2 8)= { 1, 2, 3, 4, 5, 6, 10, 15} Phân phối áo có kích thước vai V1, V2, V8 tương ứng với học sinh kích thước vai p1, p2, p8 Khi độ lệnh phương án phân phối : d2 = max {|V(i) – p(π i)|, i=1,2, ,8} d2 = max {(5–1), (6–2), (8–3), (9–4), (11–5), (13–6), (14–10), (19–15)} = Phương án : Tìm áo có kích thước nhỏ dãy V1 V8 = Vmin1= Lê Văn Hợp – Cao học 25B – HTTT Phân tích đánh giá thuật toán Tìm học sinh có kích thước vai nhỏ dãy p1…p8 = pmin1= Phát áo có kích thước Vmin1 cho học sinh có kích thước vai pmin1 Thực tương tự với dãy lại có kết : Vmin2 = , pmin2= Vmin3 = , pmin3= Vmin4 = , pmin4= Vmin5 = 11 , pmin5= Vmin6 = 13 , pmin6= Vmin7 = 14 , pmin7= 10 Vmin8 = 19 , pmin8= 15 Khi độ lệnh phương án phân phối : d3= max {|V(i) – p(π i)|, i=1,2, ,8} = max {|Vmin(α) – pmin(α)|, α=1,2, ,8} d3= max {|5 -1|, |6 -2|, |8 -3|, |9 -4|, |11 -5|, |13 -6|, |14 - 10|, |19 - 15|} = Nhận xét: Trong hai phương án phương án phương án có độ lệnh tốt Ví dụ 2: Kích thước vai áo có số thứ tự là: V(1,2…10) = {2, 8, 10, 17, 11, 27, 33, 42, 19, 19} Kích thước vai học sinh có số thứ tự là: p(1, 2…10) = {12, 5, 3, 6, 13, 23, 16, 20, 9, 22} Phương án : Phân phối áo có kích thước vai V1, V2, V10 tương ứng với học sinh kích thước vai p1, p2, p10 Khi độ lệnh phương án phân phối d1 = max {|V(i) – p(π i)|, i=1,2, ,10} d1 = max {(12–2), (8–5), (10–3), (17–6), (13–11), (27–23), (33–16), (42– 20), (19–9), (22–19)} = 22 Lê Văn Hợp – Cao học 25B – HTTT Phân tích đánh giá thuật toán Phương án : Sắp xếp kích thước vai áo, vai học sinh theo thứ tự tăng dần đánh số lại theo thứ tự, ta có: Kích thước vai áo có số thứ tự là: V(1,2…10)= {2, 8, 10, 11, 17, 19, 19, 27, 33, 42} Kích thước vai học sinh có số thứ tự là: p(1,2 10) = {3, 5, 6, 9, 12, 13, 16, 20, 22, 23} Phân phối áo có kích thước vai V1, V2, V10 tương ứng với học sinh kích thước vai p1, p2, p10 Khi độ lệnh phương án phân phối là: d2 = max {|V(i) – p(π i)|, i=1,2, ,10} d2 = max {(3–2), (8–5), (10–6), (11–9), (17–12), (19–13), (19–16), (27–20), (33–22), (42–23)} = 19 Phương án : Tìm áo có kích thước nhỏ dãy V1 V10 = Vmin1= Tìm học sinh có kích thước vai nhỏ dãy p1…p10 = pmin1= Phát áo có kích thước Vmin1 cho học sinh có kích thước vai pmin1 Thực tương tự với dãy lại có kết : Vmin2 = , pmin2= Vmin3 = 10 , pmin3= Vmin4 = 11 , pmin4= Vmin5 = 17 , pmin5= 12 Vmin6 = 19 , pmin6= 13 Vmin7 = 19 , pmin7= 16 Vmin8 = 27 , pmin8= 20 Vmin9 = 33 , pmin9= 22 Vmin10 = 42 , pmin10= 23 Khi độ lệnh phương án phân phối : Lê Văn Hợp – Cao học 25B – HTTT Phân tích đánh giá thuật toán d3= max {|V(i) – p(π i)|, i=1,2, ,10} = max {|Vmin(α) – pmin(α)|, α=1,2, ,10} d3= max {|2 - 3|, |8 -5|, |10 -6|, |11 -9|, |17 -12|, |19 -13|,|19 - 16|, |27 - 20|, |33 -22|, |42 -23|} = 19 Nhận xét: Trong phương án phương án (phương án xếp lại hai dãy theo thứ tự tăng dần (không giảm)) phương án (phương pháp tham lam) phương án cho kết có độ lệnh nhỏ Cách xây dựng phương án phân phối áo Sắp xếp n áo theo chiều không giảm kích cỡ vai, xếp học sinh theo chiều không giảm kích cỡ vai Một phương án phân phối áo cho học sinh có độ lệch cực tiểu chọn áo có kích thước vai nhỏ phát cho học sinh có kích thước vai nhỏ Sau tiến hành tương tự với áo học sinh lại IV THUẬT TOÁN Thuật giải 1.1 Ý tưởng Qua phân tích toán cách xây dựng phương án phân phối áo trên, ta dự đoán phương án phân phát áo cho học sinh sau: − Ý tưởng 1: Sắp xếp n học sinh theo thứ tự tăng dần (không giảm) kích thước vai, đánh số từ đến n theo thứ tự Tương tự xếp n áo theo thứ tự tăng dần (không giảm) kích thước vai, đánh số từ đến n theo thứ tự Lần lượt phát áo cho học sinh theo quy tắc: - Học sinh thứ nhận áo thứ 1; - Học sinh thứ nhận áo thứ 2; - ……… - Học sinh thứ n nhận áo thứ n Tính độ lệch phương án − Ý tưởng (Thuật toán tham lam) + Tìm học sinh có kích thước vai nhỏ n học sinh + Tìm áo có kích thước vai nhỏ n áo + Phát áo vừa tìm cho học sinh vừa tìm + Tìm học sinh có kích thước vai nhỏ n-1 học sinh lại Lê Văn Hợp – Cao học 25B – HTTT Phân tích đánh giá thuật toán + Tìm áo có kích thước vai nhỏ n-1 áo lại + Phát áo vừa tìm cho học sinh vừa tìm + Thực bước không học sinh & áo 1.2 Thuật giải lời cho ý tưởng 1: − Input: Hai dãy số nguyên V1, V2, V3,… Vn; p1, p2, p3,…pn; − Ouput: Độ lệnh cực tiểu d; mảng xếp tương ứng với phương pháp phân phối áo Thuật toán: Bước 1: Sắp xếp mảng kích thước vai áo theo thứ tự tăng dần (không giảm) Bước 2: Sắp xếp mảng kích thước vai học sinh theo thứ tự tăng dần (không giảm) Bước 3: Lấy tương ứng học sinh thứ i áo thứ i Bước 4: Tính độ lệch học sinh, tính độ lệch lớn (độ lệch phương án phân phối áo) 1.3 Thuật giải giả mã cho ý tưởng 1: * Input: mảng số nguyên V[1 n],p[1 n] số nguyên n * Output: mảng số nguyên săp xếp V[1 n],p[1 n] độ lệnh d; {Sử dụng thuật toán Sắp xếp vun đống(HeapSort) để xếp hai mảng kích thước vai áo vai học sinh thuật toán vun đống đánh giá có độ phức tạp O(nlog2n)} Proc Swap(x:gia tri, y:gia tri) Begin temp := x; x := y; y := temp; End; Proc Adjust( X:mang,i:chi so,n:tri so) j,flag:interger; k:gia tri; Begin Lê Văn Hợp – Cao học 25B – HTTT Phân tích đánh giá thuật toán 1.k := X[i];flag := 1; j := * i; while(j = X[j]) then flag :=0; else X[j/2] = X[j]; j := j *2; end; X[j/2] = k; End; proc Build_Initial_Heap( X:mang, n: tri so) i: interger; Begin For i=n/2 down to Adjust(X,i,n-1); End; proc SortHeap( X:mang , n tri so) i:interger; Begin Build_Initial_Heap(X,n); for i=(n-2)downto 2.1 Swap(X[0],X[i+1]); 2.2 Adjust(X,0,i); End; Function Dolech(X:mang,Y:mang, n:tri so) tg: giatri Begin 1.For i=0 to n-1 Lê Văn Hợp – Cao học 25B – HTTT 10 Phân tích đánh giá thuật toán Chọn chức năng: - Nhập 100000 (Thời gian chạy 40963ms) Lê Văn Hợp – Cao học 25B – HTTT 25 Phân tích đánh giá thuật toán Lê Văn Hợp – Cao học 25B – HTTT 26 Phân tích đánh giá thuật toán Chọn chức năng: - Nhập 1000000 (Thời gian chạy 452258ms) Lê Văn Hợp – Cao học 25B – HTTT 27 Phân tích đánh giá thuật toán Chọn chức năng: - File: 20.txt (Thời gian chạy 21ms) Lê Văn Hợp – Cao học 25B – HTTT 28 Phân tích đánh giá thuật toán Chọn chức năng: - File: 100.txt (Thời gian chạy 158ms) Lê Văn Hợp – Cao học 25B – HTTT 29 Phân tích đánh giá thuật toán Lê Văn Hợp – Cao học 25B – HTTT 30 Phân tích đánh giá thuật toán Chọn chức năng: - File: 100000.txt (Chương trình gặp lỗi!) Lê Văn Hợp – Cao học 25B – HTTT 31 Phân tích đánh giá thuật toán Lê Văn Hợp – Cao học 25B – HTTT 32 Phân tích đánh giá thuật toán Chọn chức năng: - Nhập 20 (Thời gian chạy 19ms) Lê Văn Hợp – Cao học 25B – HTTT 33 Phân tích đánh giá thuật toán Chọn chức năng: - Nhập 100 (Thời gian chạy 117ms) Lê Văn Hợp – Cao học 25B – HTTT 34 Phân tích đánh giá thuật toán Lê Văn Hợp – Cao học 25B – HTTT 35 Phân tích đánh giá thuật toán Chọn chức năng: - Nhập 100000 (Chương trình gặp lỗi!) Lê Văn Hợp – Cao học 25B – HTTT 36 Phân tích đánh giá thuật toán Lê Văn Hợp – Cao học 25B – HTTT 37 Phân tích đánh giá thuật toán VII KẾT LUẬN Bài toán phân phối áo phương pháp xấp xỉ giải cách xếp liệu đầu vào để đưa kết khả thi giá trị tối ưu toán Nhìn chung, hai thuật giải giải tình toán, đạt yêu cầu tính toán đề Lê Văn Hợp – Cao học 25B – HTTT 38 Phân tích đánh giá thuật toán TÀI LIỆU THAM KHẢO Bài giảng Slide tài liệu GS.TS Đào Thanh Tĩnh cung cấp Bài giảng Thuật toán nâng cao – TS Nguyễn Thanh Bình – ĐH Đà Nẵng Giải thuật Lập trình – TS Lê Minh Hoàng – ĐHSPHN Cấu trúc Dữ liệu Giải thuật – TS Đỗ Xuân Lôi http://vi.wikipedia.org/wiki (theo từ khoá “phương pháp xấp xỉ”, “thuật toán xếp trộn” (HeapSort) Một số Website Lê Văn Hợp – Cao học 25B – HTTT 39 ... thuật toán Nếu ρ(n) nhỏ giải pháp xấp xỉ gần với giải pháp tối ưu Thuật toán xấp xỉ- 1 cho giải pháp tối ưu (nghĩa ρ(n)=1) Yêu cầu thuật toán xấp xỉ: Một thuật toán xấp xỉ phải thoả mãn yêu cầu sau... lam … Ở phương pháp có ưu nhược điểm khác Tuy nhiên tất phương án tốt chưa phải phương án tối ưu Lê Văn Hợp – Cao học 25B – HTTT Phân tích đánh giá thuật toán I PHƯƠNG PHÁP XẤP XỈ Thuật toán cho.. .Phân tích đánh giá thuật toán Mục lục LỜI NÓI ĐẦU Phân tích đánh giá thuật toán nhân tố quan trọng xác định hiệu hệ thống giải toán tin học đặt Có nhiều toán (thuật toán) đưa tốt