Bài giảng Nhập môn Lập trình: Chương 2 trình bày các nội dung chính sau: Thuật toán, Các bước giải quyết vấn đề/bài toán bằng máy tính, khái niệm về thuật toán, các tiêu chuẩn của thuật toán, các phương pháp biểu diễn thuật toán, lập bảng trên giấy để theo dõi hoạt động của một thuật toán, độ phức tạp thuật toán. Mời các bạn cùng tham khảo để nắm nội dung chi tiết.
IT001 - Nhập mơn Lập Trình BÀI 02 – THUẬT TỐN CĐR buổi học • Sau học xong buổi học, sinh viên có khả năng: • Hiểu khái niệm toán, thuật toán, tiêu chuẩn thuật toán, phương pháp biểu diễn thuật tốn • Áp dụng lưu đồ (sơ đồ khối) hay mã giả để mơ tả số thuật tốn đơn giản; • Diễn tả q trình thực thuật tốn liệu cụ thể Nội dung Khái niệm vấn đề/bài toán Các bước giải vấn đề/bài tốn máy tính Khái niệm thuật toán Sự cần thiết thuật toán Các tiêu chuẩn thuật toán Các phương pháp biểu diễn thuật tốn Một số ví dụ thuật toán Lập bảng giấy để theo dõi hoạt động thuật toán Độ phức tạp thuật toán Khái niệm vấn đề/bài tốn • “Bài tốn” hay “Vấn đề” • • • Vấn đề có nghĩa rộng tốn Bài tốn loại vấn đề mà để giải phải liên quan nhiều đến tính tốn: tốn vật lý, hóa học, xây dựng, kinh tế… Hai loại vấn đề • • Theorema: vấn đề cần khẳng định tính sai Problema: vấn đề cần tìm giải pháp để đạt mục tiêu xác định từ điều kiện ban đầu Khái niệm vấn đề/bài tốn • Biểu diễn vấn đề-bài tốn • • • • A→B A: Giả thiết, điều kiện ban đầu B: Kết luận, mục tiêu cần đạt Giải vấn đề-bài toan • • Từ A dùng số hữu hạn bước suy luận có lý hành động thích hợp để đạt B Trong Tin học, A đầu vào, B đầu Các bước giải vấn đề/bài tốn máy tính • Máy tính khơng thể dùng để giải vấn đề liên quan đến hành động vật lý biểu thị cảm xúc • Máy tính làm mà bảo phải làm Máy tính khơng thơng minh, khơng thể tự phân tích vấn đề đưa giải pháp • Lập trình viên người phân tích vấn đề, tạo dẫn để giải vấn đề (chương trình), máy tính thực dẫn • Phương án giải tốn gọi thuật tốn/giải thuật tính tốn Khái niệm thuật tốn • Thuật tốn - Algorithm • Là tập hợp (dãy) hữu hạn thị (hành động) định nghĩa rõ ràng nhằm giải tốn cụ thể • Thuật toán để giải toán dãy hữu hạn thao tác xếp theo trình tự xác định cho sau thực dãy thao tác đó, từ Input tốn, ta nhận Output cần tìm Sự cần thiết thuật tốn • Tại sử dụng máy tính để xử lý liệu? • Nhanh Nhiều Giải toán mà người khơng thể hồn thành Làm đạt mục tiêu đó? Nhờ vào tiến kỹ thuật: tăng cấu hình máy chi phí cao Nhờ vào thuật tốn hiệu quả: thơng minh chi phí thấp “Một máy tính siêu hạng khơng thể cứu vãn thuật tốn tồi!” Các tiêu chuẩn thuật tốn • • Tính xác/đúng: • Q trình tính tốn hay thao tác máy tính thực xác • Khi kết thúc, giải thuật phải cung cấp kết đắn Tính phổ dụng/tổng qt: • • Có thể áp dụng cho lớp tốn có đầu vào tương tự Tính kết thúc/hữu hạn: • Thuật toán phải dừng sau số bước hữu hạn Các tiêu chuẩn thuật tốn • Tính rõ ràng/hiệu quả: • • Các câu lệnh minh bạch xếp theo thứ tự định Tính khách quan/xác định: • Được viết nhiều người máy tính kết phải • Trong điều kiện hai xử lý thực hiện, thuật toán phải cho kết giống 10 6.c) Dùng mã giả • VD: Giải phương trình ax+b=0 Đầu vào: a, b thuộc R Đầu ra: nghiệm phương trình ax + b = If a = Then Begin If b = Then Xuất “Phương trình vơ số nghiệm” Else Xuất “Phương trình vơ nghiệm” End Else Xuất “Phương trình có nghiệm x = -b/a” 18 Một số ví dụ thuật tốn • Ví dụ 1: Vẽ lưu đồ thuật tốn Kiểm tra tính chẵn lẻ số ngun • Ví dụ 2: Vẽ lưu đồ thuật tốn Tính tổng số ngun dương lẻ từ đến n • Ví dụ 3: Vẽ lưu đồ thuật tốn Tìm nghiệm phương trình bậc hai ẩn • Ví dụ 4: Vẽ lưu đồ thuật toán Liệt kê tất ước số số nguyên dương n 19 7.a) Ví dụ 2: Kiểm tra tính chẳn lẻ Bắt đầu Đọc n Đ S c 2=0 Đ Xuất “n lẻ” Xuất “n chẳn” Kết thúc 20 7.b) Ví dụ 2: Tổng số nguyên dương lẻ 1n • Cách 1: i=i+1 Bắt đầu Đọc n S=0 i=1 i≤n S S=S+i i 2=0 S Đ Xuất “S” Đ i=i+1 Kết thúc 21 7.b) Ví dụ 2: Tổng số nguyên dương lẻ 1n • Cách 2: i=i+2 Bắt đầu Đọc n S=0 i=1 S i≤n Đ S=S+i Xuất “S” i=i+2 Kết thúc 22 7.c) Ví dụ 3: Giải phương trình bậc • Giải pt: ax2+bx+c=0 Bắt đầu Đọc a,b,c S a=0 Delta=b*b-4*a*c Delta < Đ Đ S Delta = GPT: bx+c=0 S x1=(-b-sqrt(Delta))/(2a) x1=(-b+sqrt(Delta))/(2a) Đ x = -b/(2a) Xuất nghiệm kép x Xuất “VSN” Xuất Pt có nghiệm x1,cx2 Kết thúc 23 7.c) Ví dụ 3: Giải phương trình bậc • GPT: bx+c=0 Đ S b=0 Đ S Tính x = -c/b c=0 Xuất “VSN” Xuất “VN” Xuất x Kết thúc 24 7.d) Ví dụ 4: Liệt kê ước số n Bắt đầu Đọc n i=1 S i≤n Đ Xuất i i=i+1 Đ ni=0 S Kết thúc 25 Lập bảng giấy để theo dõi hoạt động thuật tốn • Chuẩn bị liệu kiểm thử: liệu nhập kết mong đợi • Chạy thử, ghi nhận kết quả, đánh giá sai 26 Bài tập Giải phương trình bậc ax+b=0 Kiểm tra số nguyên n số ngun tố khơng? Tính giá trị biểu thức: S = 1+2+…+n Nhập vào số nguyên dương n Tính tổng chữ số số Tìm số lớn số 27 28 Độ phức tạp thuật tốn Tính hiệu giải thuật Để giải tốn có nhiều giải thuật khác Cần lựa chọn giải thuật tốt theo hai tiêu chuẩn: • Đơn giản, dễ hiểu, dễ lâp trình • Thời gian thực nhanh, dùng tài nguyên máy tính Tiêu chuẩn tính hiệu giải thuật Đánh giá độ phức tạp giải thuật đánh giá thời gian thực giải thuật 29 Độ phức tạp thuật toán Đánh giá thời gian thực giải thuật Thời gian thực giải thuật phụ thuộc: Ngôn ngữ lập trình, chương trình dịch, hệ điều hành, phần cứng máy,… Mặt khác phải lập trình đo thời gian thực giải thuật Cần có cách đánh giá khác cho: • Khơng phụ thuộc máy, ngơn ngữ lập trình, chương trình dịch • Khơng cần triển khai chương trình thực giải thuật • Chỉ dựa vào phân tích thân giải thuật Tổng số phép toán sơ cấp cần thiết để thực giải thuật cách làm đáp ứng yêu cầu 30 Độ phức tạp thuật tốn • Đánh giá giá thuật toán theo hướng tiệm xấp xỉ tiệm cận qua khái niệm O() • Ưu điểm: Ít phụ thuộc mơi trường phần cứng • Nhược điểm: Phức tạp • Các trường hợp độ phức tạp quan tâm: • Trường hợp tốt (phân tích xác) • Trường hợp xấu (phân tích xác) • Trường hợp trung bình (mang tích dự đốn) Độ phức tạp thuật tốn • Sự Phân Lớp Theo Độ Phức Tạp Của Thuật Tốn • Sử dụng ký hiệu BigO • • • • • • • • Hằng số: O(c) logN : O(logN) N : O(N) NlogN : O(NlogN) : O(N2) N2 : O(N3) N3 : O(2N) 2N N! :O(N!) Độ phức tạp tăng dần ... 2. 1.1 Phương trình vơ số nghiệm 2. 1 .2 Kết thúc thuật toán 2. 2 Ngược lại 2. 2.1 Phương trình vơ nghiệm 2. 2 .2 Kết thúc thuật tốn Ngược lại 3.1 Phương trình có nghiệm 3 .2 Giá trị nghiệm x = -b/a 3.3 Kết... Kết thúc 21 7.b) Ví dụ 2: Tổng số nguyên dương lẻ 1n • Cách 2: i=i +2 Bắt đầu Đọc n S=0 i=1 S i≤n Đ S=S+i Xuất “S” i=i +2 Kết thúc 22 7.c) Ví dụ 3: Giải phương trình bậc • Giải pt: ax2+bx+c=0... giá sai 26 Bài tập Giải phương trình bậc ax+b=0 Kiểm tra số nguyên n số nguyên tố khơng? Tính giá trị biểu thức: S = 1 +2+ …+n Nhập vào số nguyên dương n Tính tổng chữ số số Tìm số lớn số 27 28 Độ