1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(SKKN mới NHẤT) sử DỤNG QUY HOẠCH ĐỘNG đề NÂNG CAO NĂNG lực GIẢI QUYẾT một số vấn đề về dãy CON BẰNG NGÔN NGỮ lập TRÌNH c++

45 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Sử Dụng Quy Hoạch Động Đề Nâng Cao Năng Lực Giải Quyết Một Số Vấn Đề Về Dãy Con Bằng Ngôn Ngữ Lập Trình C++
Tác giả Hoàng Xuân Thắng, Nguyễn Đình Lợi
Trường học Trường THPT Lê Viết Thuật
Chuyên ngành Tin học
Thể loại sáng kiến kinh nghiệm
Năm xuất bản 2021-2022
Thành phố Nghệ An
Định dạng
Số trang 45
Dung lượng 350,09 KB

Nội dung

SỞ GIÁO DỤC VÀ ĐÀO TẠO NGHỆ AN =====  ===== ĐỀ CƯƠNG SÁNG KIẾN KINH NGHIỆM SỬ DỤNG QUY HOẠCH ĐỘNG ĐỀ NÂNG CAO NĂNG LỰC GIẢI QUYẾT MỘT SỐ VẤN ĐỀ VỀ DÃY CON BẰNG NGÔN NGỮ LẬP TRÌNH C++ THUỘC MƠN: TIN HỌC THÁNG 3/ 2022 TIEU LUAN MOI download : skknchat@gmail.com SỞ GIÁO DỤC VÀ ĐÀO TẠO NGHỆ AN =====  ===== ĐỀ CƯƠNG SÁNG KIẾN KINH NGHIỆM SỬ DỤNG QUY HOẠCH ĐỘNG ĐỀ NÂNG CAO NĂNG LỰC GIẢI QUYẾT MỘT SỐ VẤN ĐỀ VỀ DÃY CON BẰNG NGƠN NGỮ LẬP TRÌNH C++ THUỘC MƠN: TIN HỌC Nhóm tác giả : Hồng Xn Thắng - Trường THPT Lê Viết Thuật Nguyễn Đình Lợi Tổ mơn: Toán - Tin Năm thực hiện: 2021-2022 - Trường THPT Lê Viết Thuật TIEU LUAN MOI download : skknchat@gmail.com I PHẦN MỞ ĐẦU 1.1 Lý chọn đề tài Trong quá trình giảng dạy phát triển lực cho học sinh giỏi thường gặp rất nhiều bài toán về dãy Đây là dạng bài tập khó thường xuất các đề thi học sinh giỏi môn Tin học Rất nhiều học sinh gặp dạng tập dạng khó tìm cách giải tối ưu nên điểm khơng cao Ngun nhân nhiều đó có hai nguyên nhân bản là: chương trình cho kết output sai hoặc chương trình cho kết output với input có dữ liệu nhỏ với input có dữ liệu lớn chương trình chạy thời gian quy định 1giây/1test (mặc dù kết output đúng) Trên thực tế có số tài liệu đề cập đến tập dãy con, tài liệu đưa thuật toán chương trình giải số tập cụ thể làm ví dụ minh họa cho kỹ thuật lập trình nghiên cứu mà chưa khái quát dạng, chưa phân tích sâu cách tư duy, cách lựa chọn cài đặt chương trình tối ưu Các chương trình mà số tài liệu đưa khó hiểu phức tạp không phù hợp lực học sinh Trường THPT Lê Viết Thuật Khi nghiên cứu tài liệu này, không học sinh mà giáo chưa có kinh nghiệm khó khăn? Từ những lý trên, chọn nghiên cứu đề tài: ‘‘Sử dụng quy hoạch động đề nâng cao lực giải số vấn đề dãy ngôn ngữ lập trình C++’’ 1.2 Mục đích nghiên cứu Với mong muốn sử dụng quy hoạch động nâng cao lực giải số vấn đề dãy hiểu biết sâu sắc cách giải tập dạng này, dày công nghiên cứu, phân dạng tập dãy con, trăn trở để tìm nhiều cách làm khác nhau, đánh giá độ phức tạp, đo thời gian thực chương trình, để so sánh tìm chương trình tối ưu dễ hiểu chương trình đưa Từ nâng cao chất lượng bồi dưỡng học sinh giỏi môn Tin học 1.3 Đối tượng nghiên cứu Sáng kiến kinh nghiệm có đối tượng nghiên cứu là - Một số toán dãy liên tiếp - Một số tốn dãy khơng liên tiếp Được nghiên cứu nhiều cách làm, xét nhiều phương diện (trong nhấn mạnh phương pháp quy hoạch động) như: độ phức tạp, kết output, thời gian thực chương trình 1.4 Phương pháp nghiên cứu TIEU LUAN MOI download : skknchat@gmail.com Để trình bày sáng kiến kinh nghiệm này, đã sử dụng phối kết hợp nhiều phương pháp như: nghiên cứu tài liệu, thuyết trình, quan sát, điều tra bản, thực nghiệm so sánh, phân tích kết quả thực nghiệm, … phù hợp với mơn học tḥc lĩnh vực Tin học, Tốn học Trong phần chúng tơi xếp trình bày tập từ dễ đến khó, đồng thời thông qua tập cố gắng phân tích nhằm đưa số định hướng lời giải tốn để rèn luyện cho học sinh có kinh nghiệm, kỹ vận dụng số toán tương tự nhau, hướng tới phát triển lực cho học sinh II NỘI DUNG NGHIÊN CỨU 2.1 Cơ sở lý luận Nếu học sinh biết vận dụng phương pháp quy hoạch động vào việc giải tốn dãy nói riêng tập lập trình nói chung thì chất lượng học sinh giỏi nâng cao 2.2 Thực trạng trước nghiên cứu Các năm học trước trực tiếp giảng dạy cho đội tuyển học sinh giỏi cấp chuyên đề dãy con, nhiên việc dạy chuyên đề chủ yếu dựa kiến thức sách giáo khoa, tài liệu tham khảo chưa trọng nhiều đến việc nghiên cứu kiến thức Toán học để vận dụng giải toán Chính nên em chủ yếu biết giải tốn mà thầy, dạy mà khơng hiểu chất thật tốn, gặp tốn dạng có khác chút gặp phải nhiều khó khăn Kết thực trạng: Trên sở nhiều năm phân công dạy khối lớp 11, trường THPT Lê Viết Thuật, lưu lại kết học tập tiến học sinh năm học số lớp để có đối chiếu rút kinh nghiệm - Bảng số liệu kết đạt chưa thực đề tài: năm học 2019 - 2020 STT Lớp Sĩ số Giỏi Khá Trung bình Không đạt yêu cầu 11T1 35 3% 29% 57% 11% 11A1 40 13% 63% 25% 11A2 38 6% 50% 44% - Khi thực nghiệm qua đối tượng học sinh nêu trên, đa số em cịn lúng túng trước tốn lập trình Phần lớn em chưa hứng thú với tốn lập trình đặc biệt với ngơn ngữ pascal TIEU LUAN MOI download : skknchat@gmail.com Vì q trình giảng dạy chúng tơi đúc rút số kinh nghiệm để giúp học sinh tiếp cận nội dung dễ dàng hơn, tạo nhiều đam mê cho học sinh Để rèn lực kỹ lập trình cho học sinh khá, giỏi mơn Tin học, có nhiều cách mà giáo viên áp dụng đối tượng học sinh khác Thơng thường cho tốn tin học có dạng tương tự dạng mở rộng từ tốn sách giáo khoa, tốn mà em biết em xây dựng có hứng thú để xây dựng thuật tốn cho tốn đặt Vì giáo viên chọn tập từ mở rộng phát triển để rèn luyện kỹ lập trình cho học sinh Dĩ nhiên cách làm không với giáo viên cách chọn toán để học sinh vận dụng gây hưng thú cho học sinh lại điều đáng quan tâm Và hồn tồn thay ngơn ngữ lập trình pascal ngơn ngứ lập trình C++ ngơn ngữ lập trình Python để tạo thuận lợi cho em việc cài đặt chương trình 2.3 Các biện pháp sử dụng để giải vấn đề 2.3.1 Cơ sở lý thuyết Khi cần đến quy hoạch động? Đó câu hỏi khó trả lời Khơng có cơng thức cho tốn Tuy nhiên, có số tính chất tốn mà bạn nghĩ đến quy hoạch động Dưới hai tính chất bật số chúng: Bài tốn có tốn gối Bài tốn có cấu trúc tối ưu Thường tốn có đủ hai tính chất này, dùng quy hoạch động Một câu hỏi thú vị không dùng quy hoạch động có khơng? Câu trả lời có, bạn thi code kết khơng cao a Dãy liên tiếp Dãy liên tiếp dãy gồm phần tử liên tiếp thuộc dãy cho trước Ví dụ: Cho dãy A gồm số nguyên {5,3,4,-4} Dãy số {4}; {3,4}; {5,3,4}; {5,3,4,4}; … gọi dãy liên tiếp dãy A b Dãy khơng liên tiếp Dãy chọn không liên tiếp dãy thu sau xóa số phần tử (có thể khơng xóa phần tử nào) dãy cho trước giữ nguyên thứ tự phần tử cịn lại dãy Ví dụ: Cho dãy B gồm số nguyên {3,5,-8,7,24,4} Dãy số {3}; {3,5}; {-8,7}; {7,24,4}; {3,1,2,-6,9}; … gọi dãy chọn khơng liên tiếp dãy A c Mơ hình dãy TIEU LUAN MOI download : skknchat@gmail.com Cho dãy a1,a2, an Hãy tìm dãy tăng có nhiều phần tử dãy Đặc trưng: i) Các phần tử dãy kết xuất lần Vì phương pháp làm ta dùng vòng For duyệt qua phần tử dãy ii) Thứ tự phần tử chọn phải giữ nguyên so với dãy ban đầu Đặc trưng số toán khác tùy vào yêu cầu cụ thể 2.3.2 Độ phức tạp của thuật toán Giả sử ta có hai thuật toán P1 P2 với thời gian thực tương ứng T1(n) = 100n2  (với tỷ suất tăng n2) T2(n) = 5n3 (với tỷ suất tăng n3) Khi n > 20 T1 < T2 Sở dĩ tỷ suất tăng T1 nhỏ tỷ suất tăng T2 Như cách hợp lý ta xét tỷ suất tăng hàm thời gian thực chương trình thay xét thân thời gian thực Cho hàm T(n), T(n) gọi có độ phức tạp f(n) tồn  tại  các  C, N0 sao cho T(n) ≤ Cf(n) với n ≥ N0 (tức T(n) có tỷ suất tăng f(n)) kí hiệu  T(n) O(f(n)) (đọc “ô f(n)”) Các hàm thể độ phức tạp có dạng thường gặp sau: log2n, n, nlog2n, n , n , 2n, n!,  nn Trong cách viết, ta thường dùng logn thay cho log2n cho gọn Khi ta nói đến độ phức tạp thuật tốn ta nói đến hiệu thời gian thực chương trình nên xem việc xác định thời gian thực chương trình xác định độ phức tạp thuật toán 2.3.3 Phương pháp lựa chọn cài đặt chương trình tối ưu giải số dạng tập dãy Đối với dạng tập dãy đưa toán bản, từ tốn bản, trình bày từ cách giải (cả cách làm học sinh cách làm giáo viên định hướng cho học sinh làm) Với phương châm “ mưa dầm thấm lâu” không hướng dẫn học sinh cách làm tối ưu mà phát vấn dạng tập mà chúng tơi u cầu học sinh làm theo trình tự sau: Bước 1: Xác định toán Bước 2: Suy nghĩ tìm thuật tốn, viết chương trình, tính độ phức tạp (Có thể nhiều cách) Bước 3: Trao đổi cách làm với bạn để tìm hay dở Bước 4: Sử dụng phần mềm Themis-chấm tự động để chấm cách làm (với 10 test nhiều mà giáo viên xây dựng sẵn, test cấu hình điểm, thời gian chạy không giây) TIEU LUAN MOI download : skknchat@gmail.com Bước 5: Nhận xét tối ưu thuật toán Bước 6: Giáo viên định hướng cách làm tối ưu (nếu có) Bước 7: Sử dụng phần mềm Themis để chấm tất cách viết chương trình Bước 8: Dựa vào kết quả, lựa chọn chương trình có độ phức tạp nhỏ nhất, thời gian thực test nhỏ chương trình ngắn gọn dễ hiểu Bước 9: Lập trình giải tập tương tương với cách lựa chọn TIEU LUAN MOI download : skknchat@gmail.com 2.4 Các toán dãy liên tiếp Các dãy không chung phần tử dãy ban đầu nghĩa phần tử dãy ban đầu thuộc dãy thỏa mãn khơng thuộc dãy thỏa mãn khác Ví dụ: Dãy A gồm phần tử {2, 5, -9, -6, 0, -7, -5} Dãy {-9, -6}; {-7, -5} dãy liên tiếp không chung phần tử dãy A Lưu ý: Dạng tập áp dụng cho trường hợp phần tử đầu dãy trùng với phần tử cuối dãy Bài tập 1: (Bài toán bản)  Cho dãy A gồm N số nguyên (hoặc số thực) {a1, a2,…, aN} Dãy ai, ai+1,…, aj (1≤i≤j≤N) dãy tạo từ phần tử liên tiếp dãy A phần tử i kết thúc phần tử j Hãy tìm độ dài dãy con, số lượng dãy con, liệt kê số dãy con, liệt kê giá trị phần tử dãy thõa mãn điều kiện (Độ dài dãy số lượng phần tử dãy con) Để giải dạng tập ta sử dụng nhiều thuật tốn như: thuật toán vét cạn dãy duyệt qua phần tử dãy sử dụng phương pháp quy hoạch động Đối với dạng tập định hướng cho học sinh lựa chọn thuật toán duyệt qua phần tử dãy quy hoạch động  Mơ hình thuật tốn: Cách 1. Sử dụng phương pháp duyệt qua các phần tử của dãy: - Duyệt qua tất cả các phần tử của dãy nếu:             + Thỏa mãn điều kiện, tăng độ dài thêm 1, ngược lại: Nếu dãy xét cần lưu thì: lưu lại độ dài, chỉ số đầu của dãy, xác định lại độ dài, chỉ số đầu của dãy mới Nếu dãy xét không cần lưu thì: lưu lại độ dài, chỉ số đầu của dãy mới Cách 2. Sử dụng phương pháp quy hoạch động - Gọi L[i] độ dài dãy thỏa mãn điều kiện có phần tử cuối a[i], i=1 n - Gán giá trị độ dài dãy trường hợp đơn giản: L[0]=0; L[1]=1 - Tính L[i] nhờ giá trị tốn tính từ trước L[i-1], L[i-2], - Kết toán tổng hợp kết từ toán L[i] (i=1,2, ,n) Từ ta có tập 1.2 sau: Bài tập 1.2: Cho dãy A gồm N số nguyên {a1, a2,…, aN} Dãy ai, ai+1,…, aj(1≤i≤j≤N) dãy tạo từ phần tử liên tiếp dãy A phần tử i kết thúc phần tử j TIEU LUAN MOI download : skknchat@gmail.com Yêu cầu: Hãy tìm độ dài liệt kê giá trị phần tử dãy dài tạo thành cấp số cộng có cơng sai d Dữ liệu vào: File văn bản dayconcsc.inp gồm:           - Dòng đầu ghi giá trị N, d (2≤N≤108; 0≤d≤500 )           - Dòng sau gồm N số nguyên{a1, a2,…, aN} (-106≤ai≤106) mỗi số cách một dấu cách Dữ liệu ra: File văn bản dayconcsc.out gồm - Dòng đầu ghi độ dài dãy dài - Dòng tiếp theo ghi giá trị các phần tử dãy (Chú ý: Nếu khơng có dãy thỏa mãn ghi 0) Ví dụ: Dayconcsc.inp Dayconcsc.out 94 32 7 6 10 14 6 2 10 10 14 10 Cách 1: Khi gặp toán thông thường học sinh sử dụng phương pháp vét cạn dãy sau:   Mơ hình thuật toán: for (int i=1; i

Ngày đăng: 03/07/2022, 17:15

HÌNH ẢNH LIÊN QUAN

- Bảng số liệu kết quả đạt được khi chưa thực hiện đề tài: năm học 2019 - 2020 STT LớpSĩ sốGiỏiKháTrung bình Không đạt yêu cầu 111T1353%29%57%11% - (SKKN mới NHẤT) sử DỤNG QUY HOẠCH ĐỘNG đề NÂNG CAO NĂNG lực GIẢI QUYẾT một số vấn đề về dãy CON BẰNG NGÔN NGỮ lập TRÌNH c++
Bảng s ố liệu kết quả đạt được khi chưa thực hiện đề tài: năm học 2019 - 2020 STT LớpSĩ sốGiỏiKháTrung bình Không đạt yêu cầu 111T1353%29%57%11% (Trang 4)
So sánh kết quả từ 2 bảng trên và kết quả chấm điểm bài tập 1.2 bằng phần mềm Themis của 3 cách trên như sau  (mỗi test đúng và thời gian chạy không quá 1 giây được 1 điểm) - (SKKN mới NHẤT) sử DỤNG QUY HOẠCH ĐỘNG đề NÂNG CAO NĂNG lực GIẢI QUYẾT một số vấn đề về dãy CON BẰNG NGÔN NGỮ lập TRÌNH c++
o sánh kết quả từ 2 bảng trên và kết quả chấm điểm bài tập 1.2 bằng phần mềm Themis của 3 cách trên như sau (mỗi test đúng và thời gian chạy không quá 1 giây được 1 điểm) (Trang 13)
So sánh kết quả từ 2 bảng trên và kết quả chấm điểm bài toán 1.6 bằng phần mềm Themis của 2 cách trên như sau  (mỗi test đúng và thời gian chạy không quá 1 giây/ 1 test được 1 điểm) - (SKKN mới NHẤT) sử DỤNG QUY HOẠCH ĐỘNG đề NÂNG CAO NĂNG lực GIẢI QUYẾT một số vấn đề về dãy CON BẰNG NGÔN NGỮ lập TRÌNH c++
o sánh kết quả từ 2 bảng trên và kết quả chấm điểm bài toán 1.6 bằng phần mềm Themis của 2 cách trên như sau (mỗi test đúng và thời gian chạy không quá 1 giây/ 1 test được 1 điểm) (Trang 22)
Từ bảng trên và kết quả chấm điểm bài toán trên bằng phần mềm Themis: Ta dễ dàng nhận thấy cách làm này rất tối ưu, thời gian thực hiện chương trình ngắn - (SKKN mới NHẤT) sử DỤNG QUY HOẠCH ĐỘNG đề NÂNG CAO NĂNG lực GIẢI QUYẾT một số vấn đề về dãy CON BẰNG NGÔN NGỮ lập TRÌNH c++
b ảng trên và kết quả chấm điểm bài toán trên bằng phần mềm Themis: Ta dễ dàng nhận thấy cách làm này rất tối ưu, thời gian thực hiện chương trình ngắn (Trang 27)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w