BÀI TẬP LỚN MÔN HỌC PHÂN TÍCH ĐÁNH GIÁ THUẬT TOÁN pptx

7 774 5
BÀI TẬP LỚN MÔN HỌC PHÂN TÍCH ĐÁNH GIÁ THUẬT TOÁN pptx

Đang tải... (xem toàn văn)

Thông tin tài liệu

MỤC LỤC I. Bài toán (Đề 24) II. Phân tích bài toán III. Xây dựng giải thuật a. Tư tưởng giải thuật 5 b. Phương án thực hiện 5 IV. Đánh giá giải thuật xây dựng được 1 Hoµng Anh TuÊn - CH21CNTT Vinh BÀI TẬP LỚN MÔN HỌC PHÂN TÍCH ĐÁNH GIÁ THUẬT TOÁN I. Bài toán (Đề 24) Người ta may sẵn n cái áo với các kích thước vai V(1), V(2), …, V(n) cho n học sinh. Các học sinh này được đánh số từ 1 tới n và có kích thước vai là p(1), p(2), …, p(n). Nếu học sinh i được nhận áo j thì độ lệch vai cho trường hợp này sẽ là |V(i)-p(j)|. Một phương án phân phối áo cho các học sinh 1, 2, n được mô tả như một hoán vị π 1 , π 2 , , π n với hàm ý học sinh i nhận được áo π i . Độ lệch của phương án này được định nghĩa bằng max {|V(i) – p( π i )|, i=1,2, ,n} II. Phân tích bài toán Không mất tính tổng quát ta giả sử: − Các cỡ vai áo đôi một khác nhau − Các cỡ vai của học sinh đôi một khác nhau. Sắp xếp n cái áo theo chiều không giảm của kích cỡ vai, sắp xếp các học sinh theo chiều không giảm của kích cỡ vai. Sử dụng đồ thị với đường nét đậm biểu thị giá trị kích cỡ vai áo, đường nét mảnh biểu thị kích cỡ vai của học sinh. Ta có các trường hợp sau có thể xảy ra: − Trường hợp 1: Trường hợp 1 * Miv<Mip<Mav<Map * |Mip-Miv| > |Map-Mav| 2 Hoµng Anh TuÊn - CH21CNTT Vinh 1 n Ma v Mi p Mi v Size Ma p − Trường hợp 2: Trường hợp 2 * |Miv<Mip<Mav<Map| * |Mip-Miv| < |Map-Mav| − Trường hợp 3: Trường hợp 3 − Trường hợp 4: Trường hợp 4 − Trường hợp 5: Là trường hợp suy biến của các trường hợp trên. 3 Hoµng Anh TuÊn - CH21CNTT Vinh 1 n Ma p Ma v Mi p Mi v Size 1 n Ma v Ma p Mi p Mi v Size 1 n Ma p Ma v Mi v Mi p Size Trường hợp 5 Trong đó − Ma v : Là giá trị lớn nhất của vai áo − Mi v: Là giá trị nhỏ nhất của vai áo − Ma p : Là kích thước lớn nhất của vai học sinh − Mi p : Là kích thước nhỏ nhất của vai học sinh Nhận xét rằng trong khi đổi vai trò của áo và học sinh ta sẽ được các trường hợp tương tự. Từ các tình huống trên ta dự đoán một phương án phân phát áo cho học sinh như sau: − Sắp xếp n học sinh theo thứ tự không giảm của kích thước vai, đánh số từ 1 đến n theo thứ tự đó. (1) − Sắp xếp n cái áo theo thứ tự không giảm của kích thước vai, đánh số từ 1 đến n theo thứ tự đó. (2) − Lần lượt phát áo cho học sinh theo quy tắc: Học sinh thứ 1 được nhận áo thứ 1… Học sinh thứ n nhận áo thứ n. (3) Rõ ràng phương án phân phối áo như trên là thoả mãn yêu cầu đầu bài, với độ lệc có thể là |Mip-Miv| hoặc |Map-Mav| tuỳ từng trường hợp. Như vậy chúng ta có thể tìm ra một lời giải cho bài toán theo cách trên. Nhưng giải thuật này có những hạn chế là: − Một là: Việc sắp xếp học sinh và áo theo một trật tự nào đó là một vấn đề khó khăn và tốn kém (O(n 2 )). Giả sử ta phải phân phối khoảng 10000 chiếc áo cho 10000 học sinh. Thông thường để sắp xếp học sinh và áo như trên chúng ta thường dùng phương pháp sắp xếp chèn hoặc chọn. Khi đó, trường hợp xấu nhất ta phải dùng đến 4 Hoµng Anh TuÊn - CH21CNTT Vinh 1 n Ma p Ma v Mi v Mi p Size 10000(10000-1) phép duyệt qua các phần tử (Học sinh và áo) chưa kể thao tác chèn và phân phối áo cho học sinh. 49995000 phép duyệt. Giả sử mỗi phép duyệt mất ½ giây ta sẽ mất xấp xỉ 578 ngày (Hơn một năm rưỡi) cho 1 người thực hiện việc này. − Hai là: Một học sinh i không nhất thiết phải nhận được áo i mà có thể nhận một cái áo j bất kỳ nào đó miễn là độ lệch |V(j)-P(i)| không vượt quá độ lệch của phương án. Như vậy việc sắp xếp tất cả các phần tử áo vào học sinh sẽ là không cần thiết trong đa số các trường hợp của dữ liệu đầu vào. − Ba là: Phải sắp xếp cả hai dãy.  Từ những nhận xét trên chúng ta nghĩ đến việc phân nhóm học sinh, phân nhóm áo sao cho một học sinh bất kỳ trong nhóm học sinh có thể nhận bất kỳ một cái áo nào trong nhóm áo tương ứng mà độ lệch không vượt quá độ lệch của phương án. Trong đó các học sinh và áo trong các nhóm này không nhất thiết phải được sắp xếp. Với tư tưởng này, bài toán của chúng ta bây giờ sẽ trở thành: − Xác định độ lệch nhỏ nhất của các phương án thoả mãn đầu bài. Mà theo nhận xét trên, độ lệch này có thể là là |Mip-Miv| hoặc | Map-Mav|. Tương đương với việc tìm phần tử lớn nhất và nhỏ nhất cho mỗi dãy kích cỡ vai học sinh và dãy kích cỡ vai áo. − Xác định giá trị kích thước vai học sinh (vai áo) làm tiêu trí để phân nhóm. III. Xây dựng giải thuật a. Tư tưởng giải thuật Tìm cách phân các cái áo và học sinh vào cùng một nhóm sao cho học một học sinh bất kỳ trong nhóm có thể được phân phối bất kỳ một áo nào trong nhóm mà độ lệch không vượt quá độ lệch của d phương án. b. Phương án thực hiện Ở đây tôi chỉ đi phân tích và xây dựng giải thuật cho trường hợp 1 khi Mi v Mi p Ma v Ma p . Các trường hợp khác tương tự.  B1: Tìm các giá trị Ma v , Ma p , Mi v , Mi p . Trong đó 5 Hoµng Anh TuÊn - CH21CNTT Vinh * Ma v - Là giá trị lớn nhất của vai áo * Mi v - Là giá trị nhỏ nhất của vai áo * Ma p - Là kích thước lớn nhất của vai học sinh * Mi p - Là kích thước nhỏ nhất của vai học sinh − Tìm Ma v , Ma p , Mi v , Mi p . Giải thuật tìm cỡ lớn nhất và bé nhất này có độ phức tạp O(n). Thực tế có số phép duyệt là 2n. − Tập các phương án thoả mãn đầu bài sẽ có độ lệch là d=Map-Mav. − Ta sẽ đi tìm một phương án trong tập này.  B2: Phân nhóm. − Nhận thấy rằng việc phân nhóm phải thoả mãn yêu cầu sau: * Độ lệch giữa kích cỡ vai áo nhỏ nhất và kích cỡ vai học sinh lớn nhất trong nhóm (thực chất là 2 nhóm áo và học sinh có thể ghép đôi với nhau) không vượt quá d. * Độ lệch giữa kích cỡ vai học sinh nhỏ nhất và kích cỡ vai áo lớn nhất cũng không vượt quá d. * Số lượng cái áo và học sinh trong cùng nhóm phải bằng nhau − Nhóm thứ i sẽ chứa cái áo có kích cỡ bé Miv i (có thể được xác định nhờ bước xác định đoạn trước), chứa học sinh có cỡ vai lớn nhất là Map i = Miv i +d. Chứa học sinh có cỡ vai bé nhất Mip i (có thể được xác định nhờ bước xác định đoạn trước). Vấn đề ở đây là xác định kích cỡ lớn nhất Mav i của những cái áo trong đoạn này. Mav i có thể được xác định bằng cách duyệt hết các cái áo chưa được phân nhóm xem cỡ vai của cái áo nào gần với cỡ vai Map i nhất nhưng vẫn nhỏ hơn Map i thì đó chính là Mav i 6 Hoµng Anh TuÊn - CH21CNTT Vinh 1 n Ma v Mi p Mi v Size Ma p d d d i j IV. Đánh giá giải thuật xây dựng được Ta vẫn chỉ xét trường hợp 1 Mi v Mi p Ma v Ma p .  Với giải thuật xây dựng như trên ta có một số nhận xét sau − Với d=Map-Mav − Khi d=0 sẽ suy biến sang trường hợp 5 nhưng lúc này hai đường trùng nhau, tức là với mỗi học sinh ta đều tìm được một cái áo có cùng cỡ vai. (Vì ta đa giả thiết các cỡ vai áo đôi một khác nhau và cỡ vai của học sinh đôi một khác nhau). Giải thuật này không có lời giải. Ta phải thực hiện giải thuật như ở phần II hoặc giải thuật tương đương với số phép duyệt là (n-1)n (O(n 2 )). − Khi d=1. Giải thuật có lời giải nhưng với số phép duyệt là (n-1)n (O(n 2 )). − Khi d > 1. Giải thuật có lời giải với phép duyệt càng nhỏ khi d càng lớn. 7 Hoµng Anh TuÊn - CH21CNTT Vinh . CH21CNTT Vinh BÀI TẬP LỚN MÔN HỌC PHÂN TÍCH ĐÁNH GIÁ THUẬT TOÁN I. Bài toán (Đề 24) Người ta may sẵn n cái áo với các kích thước vai V(1), V(2), …, V(n) cho n học sinh. Các học sinh này được đánh số. MỤC LỤC I. Bài toán (Đề 24) II. Phân tích bài toán III. Xây dựng giải thuật a. Tư tưởng giải thuật 5 b. Phương án thực hiện 5 IV. Đánh giá giải thuật xây dựng được 1 Hoµng. 5 Trong đó − Ma v : Là giá trị lớn nhất của vai áo − Mi v: Là giá trị nhỏ nhất của vai áo − Ma p : Là kích thước lớn nhất của vai học sinh − Mi p : Là kích thước nhỏ nhất của vai học sinh Nhận xét

Ngày đăng: 02/08/2014, 02:20

Từ khóa liên quan

Mục lục

  • I. Bài toán (Đề 24)

  • II. Phân tích bài toán

  • III. Xây dựng giải thuật

  • IV. Đánh giá giải thuật xây dựng được

Tài liệu cùng người dùng

Tài liệu liên quan