III. Một số ví dụ: (tt)
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.
• GV hướng dẫn HS trình bày thuật toá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.
Đ. + Input: N, a1, a2, …, aN, 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ác nhóm thảo luận và đưa ra thuật toán.
Hoạt động 2: Diễn tả thuật toá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ật toán
Mô phỏng việc thực hiện thuật toá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× a5 = 2.
Hoạt độ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 GV Hoạt động
của HS 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 là dãy tăng gồm N số nguyên khác nhau a1, a2, …, aN và một số nguyên k - Output: Chỉ số i mà ai = 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: 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 aGiữa ở " giữa dãy" để so sánh với k, trong đó Giưa = N2+1
. Khi đó: Khi đó:
- Nếu aGiưa = k thì Giưa là chỉ số cần tìm. - Nếu aGiư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 a1, a2, …, aGiưa-1 .
- Nếu aGiưa < k thì thực hiện tìm kiếm trên dãy aGiưa+1, aGiưa+2, …, an.
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 a1, a2, …, aN và khoá k - B2: Dau ¬ 1,Cuoi ¬ N;
- B3: Giưa = Dau Cuoi+2
;
- B4: Nếu aGiưa = k thì thông báo chỉ số Giưa, rồi kết thúc;
- B5: Nếu aGiưa > k thì đặt Cuoi = Giưa - 1, rồi chuyển đến bước 7; • Nhấn mạnh dãy A là một dãy tăng. H. So sánh 2 bài toán tìm kiếm trong 2 thuật toán? • 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. Đ. Dãy A ở đây là dãy tăng • Các nhóm trình bày cách làm
- 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ật toán bằng sơ đồ khối * Sơ đồ khối
Hoạt động 6: Mô phỏng việc thực hiện thuật toán
Mô phỏng việc thực hiện thuật toán với N = 10,k= 21 k = 21, N =10 i 1 2 3 4 5 6 7 8 9 10 A 2 4 5 6 9 21 22 30 31 33 Da u 1 6 6 Cu oi 10 10 7 Giu a 5 8 6 aGiua 9 30 21 Lỵt 1 2 3 lỵt th ba th× aGiua = k. Vy ch s 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ật toán
• Các nhóm thảo luận và trình bày
4. BÀI TẬP VỀ NHÀ:
– Tập mô phỏng việc thực hiện thuật toán trên với dãy số khác.
---
Ngày soạn:
Tiết PPCT: 14 + 15