Bài giảng chuyên đề Phân tích và thiết kế thuật toán: Chia để trị
lượt xem 9
download
Bài giảng chuyên đề Phân tích và thiết kế thuật toán - Chia để trị cung cấp cho người học các kiến thức: Ý tưởng chia để trị, lược đồ giản thuật, một số bài toán điển hình. Mời các bạn cùng tham khảo nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng chuyên đề Phân tích và thiết kế thuật toán: Chia để trị
- Chia để trị Bài giảng chuyên đề "Phân tích thiết kế thuật toán" Ngày 4 tháng 5 năm 2020 Chia để trị 1 / 20
- Nôi dung 1 Ý tưởng chia để trị 2 Lược đồ giải thuật 3 Một số bài toán điển hình Chia để trị 2 / 20
- Ý tưởng chia để trị Nội dung 1 Ý tưởng chia để trị 2 Lược đồ giải thuật 3 Một số bài toán điển hình Chia để trị 2 / 20
- Ý tưởng chia để trị Ý tưởng Phương pháp thiết kế dựa trên hai thao tác chính: Chia (Divide): phân rã bài toán ban đầu thành các bài toán con có kích thước nhỏ hơn, có cùng cách giải. Trị (Conquer ): giải từng bài toán con (theo cách tương tự bài toán đầu - đệ qui) rồi tổng hợp các lời giải để nhận kết quả của bài toán ban đầu. Việc “phân rã” được thực hiện trên miền dữ liệu (chia miền dữ liệu thành các miền nhỏ hơn tương đương với một bài toán con) Chia để trị 3 / 20
- Lược đồ giải thuật Mô hình - Lược đồ giải thuật Mô hình Xét bài toán trên miền dữ liệu R D&C(R) là hàm thể hiện cách giải bài toán trên miền dữ liệu R theo phương pháp chia để trị. Nếu R có thể phân rã thành n miền con: R = R1 ∪ R2 ∪ ... ∪ Rn Lược đồ giải thuật D&C(R) if (R = R0 ) Giải D&C(R0 ) else { Chia miền R thành R1 , R2 , ..., Rn for ( i = 1; i
- Một số bài toán điển hình Nội dung 1 Ý tưởng chia để trị 2 Lược đồ giải thuật 3 Một số bài toán điển hình Chia để trị 4 / 20
- Một số bài toán điển hình Bài toán tìm kiếm nhị phân trên mảng được sắp Bài toán 1 Cho mảng a có n phần tử được sắp theo thứ tự tăng dần và một giá trị x bất kỳ. Kiểm tra xem phần tử x có trong mảng hay không? Chia để trị 5 / 20
- Một số bài toán điển hình Bài toán tìm kiếm nhị phân trên mảng được sắp Bài toán 1 Cho mảng a có n phần tử được sắp theo thứ tự tăng dần và một giá trị x bất kỳ. Kiểm tra xem phần tử x có trong mảng hay không? Ý tưởng: Chia đôi mảng, mỗi lần so sánh phần tử giữa với x, nếu phần tử x nhỏ hơn thì xét nửa trái, ngược lại xét nửa phải Chia để trị 5 / 20
- Một số bài toán điển hình Bài toán tìm kiếm nhị phân trên mảng được sắp Lược đồ thuật toán BinarySearch(a, x, l, r) if (l == r) (x == al ) ? l: -1; else m = (m+l)/2; if (x = am ) return m; else if (x < am ) BinarySearch (a,x,l,m-1); else BinarySearch (a, x, m+1,r) Chia để trị 6 / 20
- Một số bài toán điển hình Bài toán sắp xếp mảng Bài toán 2 Cho mảng a có n phần tử. Hãy sắp xếp mảng theo thứ tự tăng dần (giảm dần). Chia để trị 7 / 20
- Một số bài toán điển hình Bài toán sắp xếp mảng Bài toán 2 Cho mảng a có n phần tử. Hãy sắp xếp mảng theo thứ tự tăng dần (giảm dần). Ý tưởng: Chọn ngẫu nhiên một phần tử chốt x. Chia mảng ban đầu thành hai mảng con: mảng con trái và mảng con phải Mảng con bên trái gồm các phần tử nhỏ hơn phần tử chốt Mảng con bên phải gồm các phần tử lớn hơn phần tử chốt. Sắp xếp mảng con trái, và mảng con phải Chia để trị 7 / 20
- Một số bài toán điển hình Bài toán sắp xếp mảng Ví dụ Chia để trị 8 / 20
- Một số bài toán điển hình Bài toán sắp xếp mảng Phân hoạch ngay trên mảng Duyệt mảng từ bên trái (theo chỉ số i) trong khi còn ai < x. Duyệt mảng từ bên phải (theo chỉ số j) trong khi còn aj > x. Đổi chỗ ai và aj nếu hai phía chưa vượt qua nhau...tiếp tục quá trình duyệt và đổi chỗ như trên nếu i ≤ j Chia để trị 9 / 20
- Một số bài toán điển hình Bài toán sắp xếp mảng QuickSort(a, l, r) i = l; j = r; x = a[(l+r)/2]; while (i x) j–-; if (i
- Một số bài toán điển hình Bài toán sắp xếp Ví dụ- step by step Chia để trị 11 / 20
- Một số bài toán điển hình Bài toán MinMax Bài toán 3 Cho mảng a có n phần tử. Tìm giá trị lớn nhất (max ), giá trị nhỏ nhất (min) trong đoạn al ...ar của mảng. Chia để trị 12 / 20
- Một số bài toán điển hình Bài toán MinMax Bài toán 3 Cho mảng a có n phần tử. Tìm giá trị lớn nhất (max ), giá trị nhỏ nhất (min) trong đoạn al ...ar của mảng. Ý tưởng: Tại mỗi bước chia đôi đoạn cần tìm rồi tìm min, max của từng đoạn. Sau đó, tổng hợp lại kết quả; Nếu đọan chỉ có 1 phần tử thì min = max và bằng phần tử đó. Chia để trị 12 / 20
- Một số bài toán điển hình Bài toán MinMax min(a, l, r) if (l==r) return a[l]; else min1 = min (a, l, (l+r)/2); min2 = min (a, (l+r)/2 + 1, r); return (min1 < min2)?min1: min2; Chia để trị 13 / 20
- Một số bài toán điển hình Bài toán nhân ma trận vuông Thuật toán nhân ma trận vuông thông thường C11 C12 A11 A12 B11 B12 = × C21 C22 A21 A22 B21 B22 trong đó: C11 = A11 B11 + A12 B21 C12 = A11 B12 + A12 B22 C21 = A21 B11 + A22 B21 C22 = A21 B12 + A22 B22 Chia để trị 14 / 20
- Một số bài toán điển hình Bài toán nhân ma trận vuông Thuật toán nhân ma trận Strassen C11 = P5 + P4 − P2 + P6 C12 = P1 + P2 C21 = P3 + P4 C22 = P1 + P5 − P3 − P7 trong đó: P1 = A11 (B12 − B22 ) P2 = (A11 + A12 )B22 P3 = (A21 + A22)B11 P4 = (A22 )(B21 − B11 ) P5 = (A11 + A22 )(B11 + B22 ) P6 = (A12 − A22 )(B21 + B22 ) P7 = (A11 − A21 )(B11 + B12 ) Chia để trị 15 / 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình phân tích thiết kế hệ thống part 1
15 p | 763 | 264
-
BÀI GIẢNG ỨNG DỤNG SAS PHÂN TÍCH SỐ LIỆU THÍ NGHIỆM
83 p | 1268 | 153
-
Bài giảng: Fieldbus Foundation™ Khắc phục sự cố mạng tuyến
33 p | 437 | 105
-
Bài giảng môn Phần cứng máy tính: Bài 2 - Bo mạch chủ, Mainboard
95 p | 204 | 55
-
Bài giảng UML part 1
13 p | 178 | 52
-
Bài giảng công nghệ phần mềm - Chương 7
6 p | 159 | 27
-
Bài giảng Phân tích thiết kế hướng đối tượng: Biểu đồ hoạt động (Activity diagrams) - Trương Ninh Thuận
10 p | 139 | 12
-
Bài giảng Nguyên lý ngôn ngữ lập trình - Chương 2: Một trình biên dịch đơn giản
37 p | 64 | 11
-
Bài giảng Kỹ thuật số (Digital Engineering) (Chương 3: Các mạch tổ hợp) - Cao Thị Thu Hương
183 p | 90 | 10
-
Bài giảng Phân tích thiết kế giải thuật: Chương 1 - Trịnh Huy Hoàng
72 p | 117 | 8
-
Bài giảng Phân tích thiết kế hệ thống thông tin - Chương 3.2: Thiết kế dữ liệu (Tiếp)
18 p | 74 | 6
-
“Skype in the classroom” - những chuyến thám hiểm vượt biên giới với chi phí không đồng
13 p | 32 | 5
-
Bài giảng Chương trình dịch: Bài 4 - Trương Xuân Nam
55 p | 79 | 4
-
Bài giảng Phân tích Web: Phần 2 - ThS. Nguyễn Ngọc Anh
80 p | 37 | 4
-
Bài giảng Xây dựng chương trình dịch: Bài 10 - Phân tích ngữ nghĩa
52 p | 13 | 4
-
Bài giảng Xây dựng chương trình dịch: Bài 10 - Nguyễn Thị Thu Hương
9 p | 59 | 3
-
Bài giảng Chuyên đề công nghệ XML và ứng dụng: Phần 2 - Trường ĐH Công nghiệp Quảng Ninh
51 p | 20 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn