Tải về bản chuẩn giáo án chuyên đề học tập Khoa học máy tính 11 bộ sách mới kết nối tri thức Bài 10: Thực hành giải toán bằng kĩ thuật chia để trị. Giáo án soạn chi tiết, hướng dẫn học sinh hoạt động để tìm tòi, khám phá ra kiến thức mới, vận dụng chúng vào việc giải quyết các vấn đề của học tập và của thực tiễn cuộc sống. Mời thầy cô kéo xuống tham khảo
Rõ nét về file powerpoint trình chiếu. => Xem thêm
Ngày soạn:…/…/…
Ngày dạy:…/…/…
Sau bài học này, HS sẽ:
Năng lực chung:
Năng lực tin học:
III. TIẾN TRÌNH DẠY HỌC
- Đặt vấn đề nhận biết một dãy đã sắp xếp tăng dần hay giảm dần hay chưa sẽ dẫn đến bài toán tìm cặp nghịch đảo.
Bước 1: GV chuyển giao nhiệm vụ học tập
- GV đặt vấn đề: Khi làm việc với danh sách/mảng, nhiều trường hợp đòi hỏi cần kiểm tra các danh sách mảng đã được sắp thứ tự để áp dụng thuật toán phù hợp.
- GV đặt câu hỏi yêu cầu HS thảo luận: Cho một dãy số, theo em làm thế nào để xác định dãy số đã được sắp xếp theo thứ tự tăng dần hoặc giảm dần?
Bước 2: HS thực hiện nhiệm vụ học tập
- HS lắng nghe, suy nghĩ và đưa ra câu trả lời.
Bước 3: Báo cáo kết quả hoạt động và thảo luận
- GV hướng dẫn HS trả lời câu hỏi.
Gợi ý:
Dãy số đã được sắp xếp tăng dần nếu không có cặp nghịch đảo nào, ngược lại dãy số sẽ sắp xếp giảm dần nếu nó có n(n-1)/2 cặp nghịch đảo. Do vậy bài toán đếm cặp nghịch đảo cũng là một cách dùng để nhận biết một dãy số đã sắp xếp tăng dần hoặc giảm dần hay chưa.
Bước 4: Đánh giá kết quả, thực hiện nhiệm vụ học tập
- GV nhận xét, đánh giá, tuyên dương câu trả lời của HS.
- GV dẫn dắt vào nội dung bài mới: Hôm nay, chúng ta sẽ vận dụng những kiến thức đã học về giải toán bằng kĩ thuật chia để trị. - Bài 10. Thực hành giải toán bằng kĩ thuật chia để trị.
Hoạt động: Thực hành
HOẠT ĐỘNG CỦA GV VÀ HS |
DỰ KIẾN SẢN PHẨM |
Bước 1: GV chuyển giao nhiệm vụ học tập - GV giới thiệu bài toán: Đếm số cặp nghịch đảo (inversion) của dãy số. Cho một dãy số A bất kì. Hãy đếm số cặp nghịch đảo của dãy số đó. Một cặp phần tử A[i] và A[j] được gọi là nghịch đảo nếu i < j và A[i] > A[j]. Ví dụ dãy A = [4, 5, 2, 10, 4] sẽ có 4 cặp nghịch đảo là: (4,2), (5,2), (5,4), (10,4). - GV nhắc lại, đây là bài toán HS đã được học ở Bài 26 của SGK Tin học 11 – Định hướng Khoa học máy tính. - GV nhắc lại lời giải bài toán đã được học và cùng HS thực hiện lời giải. - GV phân tích lời giải đã biết thì thời gian chạy của chương trình là O(n2). - GV giới thiệu cách thiết kế mới của bài toán theo kĩ thuật chia để trị và ý tưởng lời giải theo cách làm của thuật toán sắp xếp trộn đã học ở Bài 9. - GV yêu cầu HS thảo luận để hiểu được ý tưởng và cách làm của bài toán và tiến hành cài đặt chương trình. - GV kết luận về ưu điểm của thuật toán này chỉ chạy với thời gian O(nlogn), nhanh hơn so với cách làm đã biết. Bước 2: HS thực hiện nhiệm vụ học tập - HS chia nhóm, thảo luận thực hiện theo các bước SGK. - GV hướng dẫn, theo dõi, hỗ trợ HS khi cần. Bước 3: Báo cáo kết quả hoạt động và thảo luận - GV mời đại diện một số nhóm trình bày kết quả Nhiệm vụ. - HS xung phong thực hiện các nhiệm vụ và giải thích. - GV mời HS nhóm khác nhận xét, bổ sung. Bước 4: Đánh giá kết quả, thực hiện nhiệm vụ học tập - GV nhận xét, tổng kết, chuyển sang nội dung luyện tập. |
Thực hành Nhiệm vụ Cách 1. Phương pháp duyệt đơn giản Ý tưởng: - Duyệt lần lượt từng phần tử của dãy số. - Với mỗi phần tử đang xét A[i], thực hiện so sánh với tất cả các phần tử đứng sau nó A[j], nếu A[i] > A[j] ta sẽ tăng số cặp nghịch đảo lên 1 đơn vị. Chương trình 1 Thuật toán trên sử dụng hai vòng for lồng nhau tại dòng 4 và 5, do đó thời gian chạy là O(n2). Cách 2. Sử dụng phương pháp chia để trị dựa trên thuật toán sắp xếp trộn mergeSort Ý tưởng: Thực hiện thuật toán sắp xếp trộn trên dãy đã cho, trong quá trình trộn sẽ đồng thời tiến hành đếm số các cặp phần tử nghịch đảo. Các bước chính thực hiện giải bài toán này như sau: - Chia dãy thành hai phần bằng nhau cho đến khi mỗi dãy chỉ còn 1 phần tử. - Khi tiến hành hàm trộn hai dãy sẽ đồng thời đếm số các cặp nghịch đảo của hai dãy này. Kết quả vẫn tạo được dãy trộn như đã mô tả trong thuật toán sắp xếp trộn, vừa đếm được số nghịch đảo. - Gọi đệ quy đếm số cặp nghịch đảo cho hai nửa bên trái và bên phải, tính tổng số nghịch đảo khi trộn hai dãy. Kết quả sẽ thu được tổng số cặp nghịch đảo cần tìm. Chương trình chính như sau: Chương trình sau sẽ tiến hành trộn hai nửa dãy A từ left đến mid và từ mid + 1 đến right, đồng thời đếm được số các cặp nghịch đảo dạng (i,j) Lệnh gọi trong chương trình chính: |
Bước 1: GV chuyển giao nhiệm vụ học tập
- GV yêu cầu HS thảo luận nhóm đôi, hoàn thành bài tập:
Nâng cấp chương trình của nhiệm vụ 1 với yêu cầu bổ sung: Cần đưa ra kết quả là số lượng các cặp nghịch đảo và toàn bộ dãy các cặp chỉ số nghịch đảo đã tìm thấy. Ví dụ với A = [4, 5, 2, 10, 4] thì chương trình sẽ đưa ra giá trị 4 và dãy [(4, 2), (5, 2), (5, 4), (1, 4)].
Bước 2: HS thực hiện nhiệm vụ học tập
- HS thảo luận, viết chương trình giải bài toán.
- GV hướng dẫn, theo dõi, hỗ trợ HS nếu cần thiết.
Bước 3: Báo cáo kết quả hoạt động và thảo luận
- GV đại diện của 1 nhóm lên bảng thực hiện trên máy và chạy thử chương trình.
- HS khác quan sát, nhận xét, sửa bài (nếu có).
Kết quả:
Hàm merge(A,left,mid,right) sẽ trả về dãy các cặp nghịch đảo khi tiến hành "trộn" tại chỗ hai phần của cùng dãy A. Phần thay đổi chương trình nằm ở dòng lệnh 13.
Hàm chính getInvCount(A,left,right) sẽ trả về kết quả là dãy các phần tử nghịch đảo của dãy A trong đoạn chỉ số [left, right].
Đoạn chương trình chính có thể như sau:
Chú ý: Với yêu cầu mới này thì hàm merge() sẽ có thời gian chạy là O(n2), do đó công thức tính thời gian của bài toán sẽ là:
T(n) = 2T(n/2) + O(n2)
Từ công thức trên có thể tính được T(n) = O(n2).
Vậy bài toán tìm tất cả các cặp phần tử nghịch đảo làm theo kĩ thuật chia để trị không có thời gian tốt hơn là cách làm thông thường.
Bước 4: Đánh giá kết quả, thực hiện nhiệm vụ học tập
- GV nhận xét, tuyên dương.
--------------- Còn tiếp ---------------
Tải giáo án chuyên đề Khoa học máy tính 11 KNTT, giáo án chuyên đề học tập Khoa học máy tính 11 Kết nối Bài 10: Thực hành giải toán bằng kĩ, soạn giáo án chuyên đề Khoa học máy tính kết nối Bài 10: Thực hành giải toán bằng kĩ