Nối tiếp phần 1 bộ bài giảng Tin học đại cương mời các bạn cùng tìm hiểu phần 2 (Chương 1) với các nội dung chính như: Giải quyết bài toán bằng máy tính: Khái niệm về bài toán; quá trình giải quyết bài toán bằng máy tính; các phương pháp giải quyết bài toán bằng máy tính; phân loại bài toán;...
IT1110 Tin học đại cương Phần II Giải quyết bài tốn Nguyễn Bá Ngọc Ơn tập nội dung phần I Phần I: TIN HỌC CĂN BẢN Thơng tin Biểu diễn dữ liệu trong máy tính Máy tính và mạng máy tính Hệ điều hành và các hệ thống ứng dụng Nội dung phần II Chương 1: Giải quyết bài tốn bằng máy tính Khái niệm về bài tốn Q trình giải quyết bài tốn bằng máy tính Các phương pháp giải quyết bài tốn bằng máy tính Phân loại bài tốn Chương 2: Thuật tốn Định nghĩa thuật tốn Biểu diễn thuật tốn Một số thuật tốn thơng dụng Thuật tốn đệ quy Thuật giải heuristic Nội dung phần II Chương 1: Giải quyết bài tốn bằng máy tính Khái niệm về bài tốn Q trình giải quyết bài tốn bằng máy tính Các phương pháp giải quyết bài tốn bằng máy tính Phân loại bài tốn Chương 2: Thuật tốn Định nghĩa thuật tốn Biểu diễn thuật tốn Một số thuật tốn thơng dụng Thuật toán đệ quy Thuật giải heuristic 1.1. Khái niệm về vấn đề và bài toán Vấn đề rộng hơn bài toán? Pitago chia vấn đề ra: Theorema là vấn đề cần được khẳng định đúngsai Problema là vấn đề cần tìm giải pháp để đạt được một mục tiêu xác định từ những điều kiện ban đầu Diễn đạt bằng sơ đồ: A B A là giả thiết, điều kiện ban đầu B là kết luận, mục tiêu cần đạt là suy luận, giải pháp cần xác định 1.2. Các bước giải quyết bài tốn bằng máy tính Bước 1: Xác định vấn đềbài tốn Bước 2: Lựa chọn phương pháp giải Bước 3: Xây dựng thuật tốn hoặc thuật giải Bước 4: Cài đặt chương trình Bước 5: Hiệu chỉnh chương trình Bước 6: Thực hiện chương trình 1.3. Các phương pháp giải quyết vấn đề bằng máy tính Giải quyết vấn đề theo hướng xác định trực tiếp lời giải xác định trực tiếp lời giải qua thủ tục tính tốn hoặc thủ tục bao gồm một số hữu hạn các thao tác sơ cấp Giải quyết vấn đề theo hướng tìm kiếm lời giải nguyên lý "thử và sai" các phương pháp liệt kê hay vét cạn thử ngẫu nhiên quay lui chia để trị 1.4. Phân loại bài tốn Bài tốn đa thức Bài tốn khơng đa thức NP Problems Nội dung phần II Chương 1: Giải quyết bài tốn bằng máy tính Khái niệm về bài tốn Q trình giải quyết bài tốn bằng máy tính Các phương pháp giải quyết bài tốn bằng máy tính Phân loại bài tốn Chương 2: Thuật tốn Định nghĩa thuật tốn Biểu diễn thuật tốn Một số thuật tốn thơng dụng Thuật tốn đệ quy Thuật giải heuristic 2.1. Định nghĩa thuật tốn Là một khái niệm cơ sở của tốn học và tin học Bao gồm một dãy hữu hạn các lệnh/chỉ thị rõ ràng và có thể thi hành được để hướng dẫn thực hiện một hành động nhằm đạt được mục tiêu đề ra Thuật tốn là sự thể hiện của một phương pháp để giải quyết một vấn đề 10 Ngơn ngữ lưu đồ (2) Nút điều kiện: là một hình thoi có ghi điều kiện cần kiểm tra, thường có 1 cung đi vào và 2 cung đi ra (tương ứng với 2 trường hợp đúng/sai) Đúng a0 x1 = (bsqrt(Δ))/(2*a) x2 = (b+sqrt(Δ))/(2*a) Xuất: phương trình có 2 nghiệm x1, x2 sai Δ=0 sai x=b/(2a) Xuất: phương trình có nghiệm kép x Kết thúc Xuấtphương trình vơ nghiệm 17 Mã giả Sử dụng mệnh đề có cấu trúc chuẩn hóa và vẫn dùng ngơn ngữ tự nhiên Sử dụng các ký hiệu tốn học, các biến, cấu trúc kiểu thủ tục Hành động gán: i i+1 Tiện lợi, đơn giản, vẫn dễ hiểu 18 Mã giả (2) Các cấu trúc thường gặp: Cấu trúc chọn: if (điều kiện) then (hành động) end if if (điều kiện) then (hành động 1) else (hành động 2) end if Cấu trúc lặp while (điều kiện) do (hành động) end while repeat (hành động) until (điều kiện) for (biến)=(giá trị đầu) to (giá trị cuối) do (hành động) end for for (biến)=(giá trị cuối) downto (giá trị đầu) do (hành động) end for Cấu trúc nhảy goto nhãn x; 19 Ví dụ: thuật tốn giải phương trình bậc 2 Nhập: các hệ số a, b, c Xuất: kết luận về nghiệm của phương trình bậc hai Thuật tốn: if a = 0 then Xuất: Khơng phải phương trình bậc hai, Dừng end if delta b*b4*a*c if delta > 0 then x1 (bsqrt(Δ))/(2*a) x2 (b+sqrt(Δ))/(2*a) Xuất: x1 và x2, Dừng else if delta = 0 then x12 b/(2*a), Xuất: nghiệm kép x12 else Xuất: phương trình vơ nghiệm end if 20 2.3. Một số thuật tốn thơng dụng Thuật tốn kiểm tra số ngun tố Thuật tốn tìm USCLN, BSCNN của 2 số ngun Thuật tốn tìm phần tử lớn nhất trong một dãy Thuật tốn sắp xếp Thuật tốn tìm kiếm 21 Tìm phần tử lớn nhất trong một dãy hữu hạn số Nhập: dãy số a[1], a[2], a[3],… a[n] Xuất: max là giá trị lớn nhất trong dãy số đã cho Thuật toán: max a[1] for i = 2 to n do if max 0 Định nghĩa dãy số Fibonacci: 1, 1, 2, 3, 5, 8, 13, f1 = 1, f2 = 1, fn = fn1 + fn2 23 Thuật tốn đệ quy (2) Thuật tốn đệ quy tính giai thừa của 1 số tự nhiên: Input: số tự nhiên n Output: F(n) bằng n! Thuật giải: 1. if n=0 then F 1 2. if n>0 then F F(n1)*n 3. Output F 24 Thuật tốn đệ quy (3) Thuật tốn đệ quy tính số hạng thứ n của dãy số Fibonacci: Input: số tự nhiên n Output: F(n) bằng số hạng thứ n của dãy Thuật giải: 1. if n=1 or n=2 then F 1 2. if n>2 then F F(n1)+F(n2) 3. Output F 25 Thuật toán đệ quy (4) Đặc điểm của thuật toán đệ quy: Có 1 trường hợp cơ sở/trường hợp dừng Có phần đệ quy bên trong thuật tốn (nó gọi đến chính nó) Có sự biến đổi tiến tới trường hợp cơ sở 26 Bài tập Viết thuật tốn tìm USCLN của hai số tự nhiên Viết thuật tốn tìm BSCNN của hai số tự nhiên Viết thuật tốn tìm phần tử lớn nhất trong một dãy số hữu hạn Viết thuật tốn sắp xếp Viết thuật tốn tìm kiếm 27 2.5. Thuật giải heuristic Thường tìm được lời giải tốt (những chưa chắc đã tốt nhất) Dễ dàng và nhanh chóng hơn so với giải thuật tối ưu Thể hiện một cách hành động khá tự nhiên, gần gũi với suy nghĩ và hành động của con người 28 Thuật giải heuristic (2) Các ngun lý Ngun lý vét cạn thơng minh: trong bài tốn tìm kiếm khi khơng gian tìm kiếm lớn => giới hạn khơng gian tìm kiếm hoặc thực hiện dò tìm đặc biệt dựa vào đặc thù của bài tốn để nhanh chóng tìm ra mục tiêu Ngun lý tham lam: lấy tiêu chuẩn tối ưu tồn cục làm tiêu chuẩn chọn lựa hành động cục bộ của từng bước trong q trình tìm kiếm lời giải Ngun lý thứ tự: thực hiện hành động theo thứ tự hợp lý của khơng gian khảo sát nhằm nhanh chóng đạt được một lời giải tốt. 29 30 ... x1 (bsqrt(Δ))/ (2* a) x2 (b+sqrt(Δ))/ (2* a) Xuất: x1 và x2, Dừng else if delta = 0 then x 12 b/ (2* a), Xuất: nghiệm kép x 12 else Xuất: phương trình vơ nghiệm end if 20 2. 3. Một số thuật tốn thơng dụng... 1.4. Phân loại bài toán Bài tốn đa thức Bài tốn khơng đa thức NP Problems Nội dung phần II Chương 1: Giải quyết bài tốn bằng máy tính Khái niệm về bài tốn Q trình giải quyết bài tốn bằng máy tính... phương trình bậc 2 Bắt đầu Nhập a, b, c sai Xuất: : Khơng phải phương trình bậc a đúng Δ = b2 4ac Δ>0 x1 = (bsqrt(Δ))/ (2* a) x2 = (b+sqrt(Δ))/ (2* a) Xuất: phương trình có 2 nghiệm x1, x2 sai Δ=0