Bài 4 BÀITOÁNVÀTHUẬTTOÁN (tt) I. MỤC TIÊU: Kiến thức: – Hiểu cách biểu diễn thuậttoán bằng sơ đồ khối và bằng liệt kê các bước. – Hiểu một số thuậttoán thông dụng. Kĩ năng: – Biết xây dựng thuậttoán của một số bàitoán đơn giản. Thái độ: – Luyện khả năng tư duy lôgic khi giải quyết một vấn đề nào đó. II. CHUẨN BỊ: Giáo viên: – Giáo án + bảng vẽ sơ đồ khối – Tổ chức hoạt động nhóm. Học sinh: SGK, vở ghi. Đọc bài trước. III. HOẠT ĐỘNG DẠY - HỌC: 1. Ổn định tổ chức: Kiểm tra sĩ số lớp. 2. Kiểm tra bài cũ: Hỏi: Nêu ý tưởng thuậttoán sắp xếp bằng tráo đổi? Đáp: Ý tưởng: Với mỗi cặp số hạng đứng liền kề trong dãy, nếu số trước lớn hơn số sau thì ta đổi chỗ chúng cho nhau. Việc đó được lặp lại, cho đến khi không có sự đổi chỗ nào xảy ra nữa 3. Bài mới Hoạt động 1: Hướng dẫn tim thuật toán giải bàitoán Nội dung Hoạt động của Giáo viên Hoạt động của Học sinh III. Một số ví dụ: (tt) 3. Ví dụ 3: Bàitoán tìm kiếm Cho dãy A gồm N số nguyên khác nhau: a 1 , a 2 , …, a N và một số nguyên k. Cần biết có hay không chỉ số i ( 1 ≤ i ≤ N) mà a i = k. Nếu có hãy cho biết chỉ số đó. a) Thuậttoán tìm kiếm tuần tự (sequential search) Xác định bàitoán Đặt vấn đề: Tìm kiếm là một việc thường xảy ra trong cuộc sống. Cho dãy A gồm: 5, 7, 1, 4, 2, 9, 8, 11, 25, 51. Tìm i với a i = 2 ? Tổ chức các nhóm thảo luận i = 5 Các nhóm thảo luận, - Input: Dãy A gồm N số nguyên khác nhau a 1 , a 2 , …, a N và số nguyên k; - Output: Chỉ số i mà a i = k hoặc thông báo không có số hạng nào của dãy A có giá trị bằng k. Ý tưởng: - Tìm kiếm tuần tự là lần lượt từ số hạng thứ nhất, ta so sánh giá trị số hạng đang xét với khoá cho đến khi hoặc gặp một số hạng bằng khoá hoặc dãy đã được xét hết và không có giá trị nào bằng khoá. Trong trường hợp thứ hai dãy A không có số hạng nào bằng khoá. Thuật toán: H. Hãy xác định bài toán? GV hướng dẫn HS tìm thuật toán giải bài toán. đưa ra ý kiến Đ. + Input: N, a 1 , a 2 , …, a N , k + Output: i hoặc thông báo không có i Cho các nhóm trình bày ý tưởng. * Cách liệt kê: - B1: Nhập N, các số hạng a 1 , a 2 , …, a N và khoá k; - B2: i 1; - B3: Nếu a i = k thì thông báo chỉ số i, kết thúc; - B4: i i + 1; - B5: Nếu i >N thì thông báo dãy A không có số hạng nào có giá trị bằng k, rồi kết thúc. - B6: Quay lại bước 3. GV hướng dẫn HS trình bày thuậttoán tìm kiếm bằng cách liệt kê. i là biến chỉ số và nhận giá trị nguyên lần lượt từ 1 đến N+1. Các nhóm thảo luận và đưa ra thuật toán. Hoạt động 2: Diễn tả thuậttoán tìm kiếm bằng sơ đồ khối * Sơ đồ khối: Hoạt động 3: Mô phỏng việc thực hiện thuậttoán Mô phỏng việc thực hiện thuậttoán với: + N = 10, k = 2 k = 2 vµ N = 10 A 5 7 1 4 2 9 8 11 25 51 i 1 2 3 4 5 - - - - - Víi i = 5 th× a 5 = 2. Hoạt động 4: Hướng dẫn tìm thuật toán giải bàitoán Nội dung Hoạt động của Giáo viên Hoạt động của Học sinh b) Thuậttoán tìm kiếm nhị phân (Binary Search) Xác định bàitoán - Input: Dãy A là dãy tăng gồm N số nguyên khác nhau a 1 , a 2 , …, a N và một số nguyên k - Output: Chỉ số i mà a i = k Nhấn mạnh dãy A là một dãy tăng. H. So sánh 2 bàitoán tìm kiếm trong 2 thuật toán? Đ. Dãy A ở đây là dãy tăng hoặc thông báo không có số hạng nào của dãy A có giá trị bằng k. Ý tưởng: Sử dụng tính chất dãy A là dãy tăng, ta tìm cách thu hẹp nhanh phạm vị tìm kiếm sau mỗi lần so sánh khoá với số hạng được chọn, ta chọn số hạng a Giữa ở " giữa dãy" để so sánh với k, trong đó Giưa = 1 2 N . Khi đó: - Nếu a Giưa = k thì Giưa là chỉ số cần tìm. - Nếu a Giưa > k thì do dãy A là dãy đã sắp xếp nên việc tìm kiếm tiếp theo chỉ xét trên dãy a 1 , a 2 , …, a Giưa-1 . - Nếu a Giưa < k thì thực hiện tìm kiếm trên dãy a Giưa+1 , GV hướng dẫn HS tìm thuật toán giải bài toán. Minh hoạ qua việc tra từ điển Cho các nhóm thảo luận việc tra từ điển. Từ đó rút ra thuật toán. Các nhóm trình bày cách làm a Giưa+2 , …, a n . Quá trình trên sẽ được lặp lại một số lần cho đến khi hoặc đã tìm thấy khoá k trong dãy A hoặc phạm vi tìm kiếm bằng rỗng. Thuật toán: * Cách liệt kê: - B1: Nhập N, các số hạng a 1 , a 2 , …, a N và khoá k - B2: Dau 1,Cuoi N; - B3: Giưa = 2 Dau Cuoi ; - B4: Nếu a Giưa = k thì thông báo chỉ số Giưa, rồi kết thúc; - B5: Nếu a Giưa > k thì đặt Cuoi = Giưa - 1, rồi chuyển đến bước 7; - B6: Dau Giưa +1; - B7: Nếu Dau > cuoi thì thông báo dãy A không có số hạng nào có giá trị bằng k, kết thúc; - B8: Quay lại bước 3. Hoạt động 5: Mô tả thuậttoán bằng sơ đồ khối * Sơ đồ khối Hoạt động 6: Mô phỏng việc thực hiện thuậttoán Mô phỏng việc thực hiện thuậttoán với N = 10,k= 21 k = 21, N =10 i 1 2 3 4 5 6 7 8 9 1 0 A 2 4 5 6 9 2 2 3 3 3 1 2 0 1 3 Da u 1 6 6 Cu oi 1 0 1 0 7 Giu a 5 8 6 a Giu a 9 3 0 2 1 Lư ợt 1 2 3 Lượt th ba thì a Giua = k. Vị trí cần tìm là i = Giua = 6. Hoạt động 7: Củng cố các kiến thức đã học GV cho HS nhận xét điểm khác biệt cơ bản của 2 thuậttoán Các nhóm thảo luận và trình bày 4. BÀI TẬP VỀ NHÀ: – Mô phỏng việc thực hiện thuậttoán với dãy số khác. – Bài 3, 7 SGK. *Rút kinh nghiệm: . Bài 4 BÀI TOÁN VÀ THUẬT TOÁN (tt) I. MỤC TIÊU: Kiến thức: – Hiểu cách biểu diễn thuật toán bằng sơ đồ khối và bằng liệt kê các bước. – Hiểu một số thuật toán thông dụng xảy ra nữa 3. Bài mới Hoạt động 1: Hướng dẫn tim thuật toán giải bài toán Nội dung Hoạt động của Giáo viên Hoạt động của Học sinh III. Một số ví dụ: (tt) 3. Ví dụ 3: Bài toán tìm kiếm. động 4: Hướng dẫn tìm thuật toán giải bài toán Nội dung Hoạt động của Giáo viên Hoạt động của Học sinh b) Thuật toán tìm kiếm nhị phân (Binary Search) Xác định bài toán - Input: Dãy A