1. Trang chủ
  2. » Giáo án - Bài giảng

Tiểu luận môn phân tích và đánh giá thuật toán thuật toán chi để trị và ứng dụng vào bài toán sắp xếp

16 597 3

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 211 KB

Nội dung

MỤC LỤC MỤC LỤC .1 CHƯƠNG 1: THUẬT TOÁN CHIA ĐỂ TRỊ .2 (Divide to Conquer) 1.1/ Đặt vấn đề: 1.1.2) Sơ đồ chung: 1.2/ Thuật toán: 1.2.1) Ý tưởng: 1.2.2) Các bước giải: .3 1.2.3 Sơ đồ thuật toán chia để trị: CHƯƠNG 2: ỨNG DỤNG CỦA THUẬT TOÁN CHIA ĐỂ TRỊ GIẢI BÀI TOÁN SẮP XẾP 2.1/ Phát biểu toán: c Đánh giá thuật toán: .6 d Chương trình xếp dãy Mergesort: e Ví dụ toán xếp thực tế: .9 2.3.2 Quicksort .9 e Ví dụ toán xếp thực tế: 15 CHƯƠNG 1: THUẬT TOÁN CHIA ĐỂ TRỊ (Divide to Conquer) 1.1/ Đặt vấn đề: Trong khoa học máy tính, chia để trị mô hình thiết kế thuật toán quan trọng dựa đệ quy với nhiều phân nhánh Thuật toán chia để trị hoạt động cách chia toán thành nhiều toán nhỏ thuộc thể loại, lặp lại nhiều lần, toán thu đủ đơn giản để giải trực tiếp Sau lời giải toán nhỏ tổng hợp lại thành lời giải cho toán ban đầu a Hình 1: Mô hình phương pháp chia để trị Tên gọi "chia để trị" áp dụng cho thuật toán quy toán ban đầu toán nhỏ hơn, chẳng hạn xếp danh sách theo thứ tự không tăng không giảm Những thuật toán lập trình hiệu thuật toán chia để trị thông thường: đặc biệt, thuật toán dùng đệ quy đuôi chuyển chúng thành vòng lặp thay đệ quy 1.1.1) Khái niệm: Chia để trị phương pháp thiết kế giải thuật bao gồm thao tác: Chia: Chia toán cần giải thành loạt toán độc lập Trị: Đòi hỏi việc giải toán thu Tổng hợp: Thực việc xây dựng lời giải toán đặt từ lời giải toán 1.1.2) Sơ đồ chung: Sơ đồ chung thuật toán chia để trị (Divide and Conquer) gồm thành phần: - Chia (Divide): Chia toán cần giải S thành toán S1, S2, S3, - Trị (Conquer): Giải toán cách đệ quy - Tổng hợp (Combine): Tổng hợp lời giải toán S1, S2, S3, thành lời giải toán S Để phân tích độ phức tạp thuật toán sử dụng công thứ đệ quy Vấn đề đặt cần giải toán độc lập cách nào? Đó vấn đề trung tâm toán 1.2/ Thuật toán: 1.2.1) Ý tưởng: Chia toán thành nhiều toán nhỏ thuộc thể loại, lặp lại nhiều lần, toán thu đủ đơn giản để giải trực tiếp Sau lời giải toán nhỏ tổng hợp lại thành lời giải cho toán ban đầu 1.2.2) Các bước giải: Giả sử có thuật toán α để giải toán kích thước liệu vào n với thời gian bị chặn cn2 (c: số) Xét thuật giải β để giải toán cách: - Bước 1: Chia toán cần giải thành toán với kích thước n/2 - Bước 2: Giải toán thuật toán α - Bước 3: Tổng hợp lời giải toán để thu lời giải toán Đánh giá thuật toán: Tính đắn thuật toán β Giả sử bước đòi hỏi thời gian dn(d: số) Gọi: T α(n) = thời gian thuật toán α T β(n) = thời gian thuật toán β Ta có: T α(n) = cn2 (theo giả thuyết) T β(n) = 3.T α(n/2) + dn = ¾.cn2 + dn Nếu: dn < c n2/4 hay n > d/c thuật toán β nhanh thuật toán α Do 4.d/c số nên với n đủ lớn ta có n > d/c Điều cho thấy việc sử dụng thuật toán β để giải toán đặt cách chia thành toán có kích thước ngày nhỏ đến thu toán kích thước n0 < 4.d/c thu hiệu cao 1.2.3 Sơ đồ thuật toán chia để trị: procedure Divide_and_Conquer(n); { if n ≤ n0 then Giải toán cách trực tiếp; else { Chia toán thành r toán có kích thước n/k; for (mỗi toán r toán con) Divide_and_Conquer(n/k); Tổng hợp lời giải r toán để thu lời giải toán; end; end; CHƯƠNG 2: ỨNG DỤNG CỦA THUẬT TOÁN CHIA ĐỂ TRỊ GIẢI BÀI TOÁN SẮP XẾP 2.1/ Phát biểu toán: Cho T[1 n] mảng n phần tử Vấn đề đặt xếp phần tử theo thứ tự dãy không tăng không giảm Đầu vào: T[1 n] mảng n phần tử Đầu ra: xếp phần tử theo thứ tự không giảm 2.2/ Phương pháp thiết kế: Áp dụng thuật toán “chia để trị” để giải toán xếp 2.3/ Ứng dụng: Chúng ta giải vấn đề phương pháp selection sort hay insertion sort heapsort Như biết thời gian dùng selection sort hay insertion sort để xếp mảng T hai trường hợp: xấu trung bình vào cỡ n Còn heapsort vào khoảng nlogn Có số giải thuật đặc biệt cho toán theo mô hình chia để trị mergesort quicksort, nghiên cứu hai giải thuật 2.3 Merge sort a Ý tưởng: Chia để trị tiếp cận tới toán việc tách mảng T thành hai phần mà kích thước chúng sai khác tốt, xếp phần cách gọi đệ qui sau trộn chúng lại (chú ý trì tính thứ tự) Để làm điều cần giải thuật hiệu cho việc trộn hai mảng U V thành mảng T mà kích thước mảng T tổng kích thước hai mảng U V Array Split Sub Array Sub Array Split SubArr ay Split SubArr ay SubArr ay Sort Sort Sort Sort Stored SubArra y Stored SubArra y SubArr ay Stored SubArra y Stored SubArra y Combine Combine Stored SubArray Stored SubArray Combine Store Array Hình vẽ 2: Quy trình xếp phương pháp chia để trị Vấn đề thực tốt ta thêm vào ô nhớ có sẵn cuối mảng U V giá trị đứng canh (giá trị lớn tất giá trị U V) b Giải thuật: Procedure merge(U[1 m+1],V[1 n+1],Ta[1 m+n]); (*Trộn mảng U[1 m+1] V[1 n+1] thành mảng T[1 m+n]); U[m+1],V[n+1] dùng để chứa giá trị cầm canh*) { i:=1;j:=1; U[m+1]:= ∞ ; V[n+1]:= ∞ ; For (k=1;k

Ngày đăng: 03/10/2017, 00:45

HÌNH ẢNH LIÊN QUAN

Trong khoa học máy tính, chia đểtrị là một mô hình thiết kế thuật toán quan trọng dựa trên đệ quy với nhiều phân nhánh - Tiểu luận môn phân tích và đánh giá thuật toán thuật toán chi để trị và ứng dụng vào bài toán sắp xếp
rong khoa học máy tính, chia đểtrị là một mô hình thiết kế thuật toán quan trọng dựa trên đệ quy với nhiều phân nhánh (Trang 2)
Hình vẽ 2: Quy trình sắp xếp bằng phương pháp chia đểtrị - Tiểu luận môn phân tích và đánh giá thuật toán thuật toán chi để trị và ứng dụng vào bài toán sắp xếp
Hình v ẽ 2: Quy trình sắp xếp bằng phương pháp chia đểtrị (Trang 5)
Hình vẽ sau cho thấy sự làm việc của pivot và quicksort. - Tiểu luận môn phân tích và đánh giá thuật toán thuật toán chi để trị và ứng dụng vào bài toán sắp xếp
Hình v ẽ sau cho thấy sự làm việc của pivot và quicksort (Trang 11)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w