Bài giảng Các vấn đề cơ sở của khoa học máy tính - Chương 2: Giải thuật trình bày các nội dung: Định nghĩa giải thuật, ví dụ về giải thuật, đặc tả giải thuật, phân tích giải thuật, giải thuật là công nghệ, mô hình hình thức tính toán. Mời các bạn cùng tham khảo nội dung chi tiết.
Chương 2: GIẢI THUẬT Nội Dung Định nghĩa giải thuật Ví dụ giải thuật Đặc tả giải thuật Phân tích giải thuật Giải thuật cơng nghệ Mơ hình hình thức tính toán Các Vấn Đề Cơ Sở KHMT ThS GVC Tơ Oai Hùng • • • • • Định Nghĩa Giải Thuật Định nghĩa giải thuật: Giải thuật cách thức để giải tập vấn đề Thuật ngữ “giải thuật” áp dụng cho cách thức để giải vấn đề cụ thể Cho ví dụ, bước để thay phanh xe gọi giải thuật Ví dụ: Tìm ước số chung lớn Trong toán học, giải thuật tiếng hữu dụng giải thuật Euclid để tìm ước số chung lớn (GCD) hai số nguyên Ông đưa giải thuật vào khoảng 300 năm trước cơng ngun Khơng có giải thuật Euclid, tìm Các Vấn Đề Cơ Sở KHMT ThS GVC Tơ Oai Hùng Ví Dụ Về Giải Thuật • • GCD(372, 84) nào? Phải phân tích hai số nguyên thành thừa số nguyên tố tìm thừa số chung lớn Nếu số nguyên lớn, việc phân tích thành thừa số trở nên khó khăn tốn nhiều thời gian Euclid tìm giải thuật cách có hệ thống nhanh chóng giảm kích thước vấn đề, cách thay giá trị ban đầu hai số nguyên với giá trị nhỏ hai số Lúc này, GCD hai số giá trị số cịn lại Sau giải thuật Euclid để tìm GCD Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng Ví Dụ Về Giải Thuật • hai số ngun A B: Repeat: Nếu B = 0, GCD(A, B) = A Ngược lại: Thay R A modulo B Thay A B Thay B R Cho ví dụ, để tìm GCD 372 84: - Tìm GCD(84, 36) 372 % 84 = 36 - Tìm GCD(36, 12) 84 % 36 = 12 - Tìm GCD(12, 0) 36 % 12 = - Vậy GCD(372, 84) = 12 Các Vấn Đề Cơ Sở KHMT ThS GVC Tơ Oai Hùng Ví Dụ Về Giải Thuật • • Như vậy, giải thuật chuỗi phép toán thao tác tập giá trị nhập sinh kết khoảng thời gian hữu hạn Trong ví dụ trên, tập giá trị nhập số nguyên Kết ước số chung lớn hai số Có nhiều cách để giải lớp vấn đề Câu hỏi đặt giải thuật tốt nhất? Thông thường, nhà khoa học máy tính sử dụng kỹ thuật để phân tích, đánh giá so sánh hiệu giải thuật Các Vấn Đề Cơ Sở KHMT ThS GVC Tơ Oai Hùng • • • Đặc Tả Giải Thuật Đặc tả giải thuật (representing algorithm): Trong ngành khoa học máy tính, giải thuật thường đặc tả mã giả (pseudocode) Mã giả đủ ngơn ngữ lập trình thể tác vụ mà máy tính phải thực giải thuật Mã giả độc lập với ngơn ngữ lập trình Nó thể chi tiết cú pháp làm cho người lập trình dễ dàng đặc tả thao tác cốt lõi giải thuật Khơng có mẫu chuẩn cho mã giả Các nhà khoa học máy tính sử dụng mã giả riêng để đặc tả giải thuật Ví dụ sau kiểu mã giả đặc tả giải thuật GCD: Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng Đặc Tả Giải Thuật GCD(a, b) - Tên hàm đối số While b != - Trong b khác { - Bắt đầu thân vòng lặp r ← a mod b - Gán r = a modulo b a←b - Gán a = giá trị ban đầu b b←r - Gán b = r } - Kết thúc thân vòng lặp return a - Khi b = 0, kết trả a • Để minh hoạ hiệu khác giải thuật, thảo luận đa dạng giải thuật mà nhà khoa học máy tính đưa để giải vấn đề phổ biến tính tốn Các Vấn Đề Cơ Sở KHMT ThS GVC Tơ Oai Hùng • • Đặc Tả Giải Thuật Tìm kiếm (sequential search): Giả sử có danh sách sinh viên lớp học, yêu cầu tìm tên sinh viên Debbie Drawe Giải thuật tìm kiếm đơn giản so sánh tên danh sách với tên cần tìm Quá trình tìm kiếm kết thúc tên tìm thấy giải thuật tìm hết tất tên danh sách Sau mã giả giải thuật tìm kiếm tuần tự: Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng Đặc Tả Giải Thuật Sequential_Search(listNames, name) length ← length of listNames matchFound ← false index ← while matchFound = false AND index