
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 3 - Một số mô hình thuật toán
Thông tin tài liệu:
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 3 - Một số mô hình thuật toán 10/18/2021 Một số mô hình thuật toán Brute force, greedy, branch and bound, divide and conquer, dynamic programming10/15/2021 hiep.nguyenduy@hust.edu.vn 1Nội dung• Bài toán tối ưu hóa tổ hợp• Thuật toán vét cạn• Nhánh và cận• Thuật toán tham lam• Chia để trị• Quy hoạch động10/15/2021 hiep.nguyenduy@hust.edu.vn 2 1 10/18/2021 Bài toán tối ưu hóa • Bài toán tối ưu hóa • Tìm kiếm lời giải tốt nhất trong những lời giải khả thi • Nếu đầu vào là rời rạc Bài toán tối ưu tổ hợp • Bài toán tối ưu tổ hợp • Không gian tìm kiếm là hữu hạn hoặc vô hạn đếm được • Thỏa mãn tập ràng buộc C • Với mục đích tối ưu hàm mục tiêu, f(x) min (max) • Phương án giải • Có thể vét cạn hết không gian lời giải khả thi • Xây dựng từng bước lời giải • Giải gần đúng (xấp xỉ) 10/15/2021 hiep.nguyenduy@hust.edu.vn 3 Thuật toán vét cạn• Thuật toán vét cạn: brute-force search hoặc exhaustive search • Là một dạng của thuật toán dạng “sinh và test” – sinh ra phương án và kiểm tra lại xem có đáp ứng ràng buộc của bài toán • Đây là cách thiết kế thuật toán đơn giản nhất (chỉ cần nhìn vào phát biểu bài toán là tạo ra thuật toán được), dựa vào khả năng tính toán của máy tính • Hiệu quả của thuật toán không cao, nhất là khi kích thước đầu vào lớn • Một số bài toán phức tạp không thể giải bằng phương pháp vét cạn được (không gian tìm kiếm phương án có thể quá lớn, vượt khả năng tính toán của máy tính) • Có thể kết hợp thêm với một số kỹ thuật khác (heuristics methods) để giảm bớt không gian cần tìm kiếm lời giải • Dùng để giải các bài toán khi mà yêu cầu về thời gian chạy không phải là yếu tố đáng quan tâm (VD. chỉ cần tìm ra lời giải là được) 10/15/2021 hiep.nguyenduy@hust.edu.vn 4 2 10/18/2021 Thuật toán vét cạn • Thuật toán vét cạn • Trong thuật toán luôn có 2 pha là sinh lựa chọn và kiểm tra • Có thể sinh lựa chọn là 1 phương án đầy đủ, hoặc từng bước sinh 1 phần của phương án (VD. thuật toán back tracking) • Pha kiểm tra: • xem phương án sinh ra có thỏa mãn là một lời giải của bài toán hay không, • thường dựa ngay chính vào mô tả ban đầu • Hoặc dùng chính hàm đích cần đạt được của bài toán làm hàm kiểm tra • Bước kiểm tra đôi khi có thể gộp luôn vào quá trình sinh 10/15/2021 hiep.nguyenduy@hust.edu.vn 5 Thuật toán vét cạn• Bài toán 1. Dò mật khẩu *******• Mật khẩu • là chuỗi các ký tự (thường bao gồm ký tự đặc biệt và số) • Độ dài tối thiểu 6-8 ký tự • Mật khẩu càng dài, càng khó đoán nhưng cũng khó nhớ • Thông thường là dò bằng cách thử hết các khả năng, tuy nhiên có thể kết hợp với các từ điển các password hay dùng để cải thiện thời gian • Thường kết hợp song song chạy trên nhiều CPU 10/15/2021 hiep.nguyenduy@hust.edu.vn https://www.grc.com/haystack.htm 6 3 10/18/2021 selectionSort(A[0..n-1]) Thuật toán vét cạn { for i=n to 2 do min = 0• Bài toán 2. Thuật toán sắp xếp lựa chọn for j=0 to i-1 do • Lần lượt chọn phần tử lớn nhất trong dãy hiện tại, đổi if (A[j]>A[min]) min = j chỗ với phần tử ở cuối dãy SWAP(A[min], A[i ...
Tìm kiếm theo từ khóa liên quan:
Bài giảng Cấu trúc dữ liệu Cấu trúc dữ liệu và thuật toán Một số mô hình thuật toán Bài toán tối ưu hóa tổ hợp Thuật toán vét cạn Thuật toán tham lamTài liệu có liên quan:
-
Giải bài toán người du lịch qua phép dẫn về bài toán chu trình Hamilton
7 trang 447 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán trên C++
74 trang 398 0 0 -
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 7 - Nguyễn Khánh Phương
214 trang 167 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 1
152 trang 143 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Ngô Công Thắng
8 trang 72 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - ThS. Trịnh Quốc Sơn (ĐH Công nghệ Thông tin)
20 trang 57 0 0 -
Ứng dụng giải thuật di truyền trong xử lý bài toán định tuyến xe
6 trang 52 0 0 -
Thuật toán và Cấu trúc dữ liệu
302 trang 42 0 0 -
Giáo trình cấu trúc dữ liệu part 4
16 trang 38 0 0 -
514 trang 37 0 0
-
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 1 - Khái niệm cơ bản
19 trang 36 0 0 -
Giáo trình cấu trúc dữ liệu part 3
16 trang 36 0 0 -
Bài giảng Toán rời rạc: Tô màu đỉnh của đồ thị - Trần Vĩnh Đức
44 trang 35 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 2
115 trang 34 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật: Bài 14a - Hoàng Thị Điệp (2014)
35 trang 33 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán: Phần 1
142 trang 32 0 0 -
Lecture Data Structures: Lesson 38
71 trang 30 0 0 -
Đề thi Phân tích và thiết kế thuật toán
5 trang 29 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán: Phần 1 (In năm 2013)
189 trang 29 0 0 -
Lecture Data Structures: Lesson 41
18 trang 28 0 0