Phân tích thiết kế giải thuật - Chương 2: Chiến lược chia để trị (Divide-and-conquer)

Là chiến lược thiết kế giải thuật nổi tiếng giải thuật chia-để-trị thường tiến hành theo các bước sau: Thể hiện của bài toán được chia làm những thể hiện nhỏ hơn. Những thể hiện nhỏ hơn này được giải quyết (thường là đệ quy, mặc dù đôi khi không cần đệ quy). | Chương 2 Chiến lược chia-để-trị (Divide-and-conquer) Nội dung Chiến lược chia để trị Quicksort Xếp thứ tự bằng phương pháp trộn Xếp thứ tự ngoại Cây tìm kiếm nhị phân Chiến lược chia-để-trị Là chiến lược thiết kế giải thuật nổi tiếng nhất. Các giải thuật chia-để-trị thường tiến hành theo các bước sau: Thể hiện của bài toán được chia làm những thể hiện nhỏ hơn. Những thể hiện nhỏ hơn này được giải quyết (thường là đệ quy, mặc dù đôi khi không cần đệ quy). Những lời giải đạt được từ những thể hiện nhỏ hơn phối hợp lại làm thành lời giải của bài toán ban đầu. Tìm kiếm bằng . chia đôi (binary search) là một thí dụ của chiến lược chia-để-trị. Sơ đồ sau mô tả một chiến lược chia-để-trị mà trong đó chia bài toán thành hai bài toán nhỏ hơn. Đây là trường hợp phổ biến nhất của chiến lược này. bài toán kích thước n bài toán con 1 kích thước n/2 bài toán con 2 kích thước n/2 lời giải cho bài toán con 1 lời giải cho bài toán con 2 lời giải cho bài toán ban đầu Chiến lược chia-để-trị . | Chương 2 Chiến lược chia-để-trị (Divide-and-conquer) Nội dung Chiến lược chia để trị Quicksort Xếp thứ tự bằng phương pháp trộn Xếp thứ tự ngoại Cây tìm kiếm nhị phân Chiến lược chia-để-trị Là chiến lược thiết kế giải thuật nổi tiếng nhất. Các giải thuật chia-để-trị thường tiến hành theo các bước sau: Thể hiện của bài toán được chia làm những thể hiện nhỏ hơn. Những thể hiện nhỏ hơn này được giải quyết (thường là đệ quy, mặc dù đôi khi không cần đệ quy). Những lời giải đạt được từ những thể hiện nhỏ hơn phối hợp lại làm thành lời giải của bài toán ban đầu. Tìm kiếm bằng . chia đôi (binary search) là một thí dụ của chiến lược chia-để-trị. Sơ đồ sau mô tả một chiến lược chia-để-trị mà trong đó chia bài toán thành hai bài toán nhỏ hơn. Đây là trường hợp phổ biến nhất của chiến lược này. bài toán kích thước n bài toán con 1 kích thước n/2 bài toán con 2 kích thước n/2 lời giải cho bài toán con 1 lời giải cho bài toán con 2 lời giải cho bài toán ban đầu Chiến lược chia-để-trị 2. Giải thuật Quick sort Giải thuật căn bản của Quick sort được phát minh năm 1960 bởi C. A. R. Hoare. Quicksort thể hiện tinh thần thiết kế giải thuật theo lối “Chia để trị” (divide-and-conquer). Quicksort được ưa chuộng vì nó không quá khó để hiện thực hóa. Quicksort chỉ đòi hỏi khoảng chừng NlgN thao tác căn bản để sắp thứ tự N phần tử. Nhược điểm của Quick sort gồm: - Nó là một giải thuật đệ quy - Nó cần khoảng N2 thao tác căn bản trong trường hợp xấu nhất - Nó dễ bị lỗi khi lập trình (fragile). Giải thuật căn bản của Quicksort Quicksort là một phương pháp xếp thứ tự theo kiểu “chia để trị”. Nó thực hiện bằng cách phân hoạch một tập tin thành hai phần và sắp thứ tự mỗi phần một cách độc lập với nhau. Giải thuật có cấu trúc như sau: procedure quicksort1(left,right:integer); var i: integer; begin if right > left then begin i:= partition(left,right); quicksort(left,i-1); quicksort(i+1,right); end; end; Phân hoạch Phần then chốt của Quicksort là thủ tục phân hoạch .

Không thể tạo bản xem trước, hãy bấm tải xuống
TÀI LIỆU LIÊN QUAN
TỪ KHÓA LIÊN QUAN
TÀI LIỆU MỚI ĐĂNG
162    74    1    29-04-2024
373    68    1    29-04-2024
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.