TAILIEUCHUNG - Bài giảng Phân tích và thiết kế giải thuật: Chương 2 - PGS.TS. Dương Tuấn Anh

Bài giảng chương 2 cung cấp cho người học những kiến thức về các chiến lược chia để trị. Trong chương này người học sẽ tìm hiểu một số nội dung chính sau đây: 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. . | 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 .

TỪ KHÓA LIÊN QUAN
TAILIEUCHUNG - Chia sẻ tài liệu không giới hạn
Địa chỉ : 444 Hoang Hoa Tham, Hanoi, Viet Nam
Website : tailieuchung.com
Email : tailieuchung20@gmail.com
Tailieuchung.com là thư viện tài liệu trực tuyến, nơi chia sẽ trao đổi hàng triệu tài liệu như luận văn đồ án, sách, giáo trình, đề thi.
Chúng tôi không chịu trách nhiệm liên quan đến các vấn đề bản quyền nội dung tài liệu được thành viên tự nguyện đăng tải lên, nếu phát hiện thấy tài liệu xấu hoặc tài liệu có bản quyền xin hãy email cho chúng tôi.
Đã 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.