1. Trang chủ
  2. » Luận Văn - Báo Cáo

(Sáng kiến kinh nghiệm) một số kinh nghiệm nâng cao hiệu quả ôn thi học sinh giỏi thông qua các bài toán đệ quy, khử đệ quy và đệ quy

48 19 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

Định dạng
Số trang 48
Dung lượng 412,39 KB

Nội dung

Một số kinh nghiệm giải toán phơng pháp đệ quy «n thi HSG MỤC LỤC A PHẦN MỞ ĐẦU I Lý chọn đề tài: II Mục đích nghiên cứu: .3 III Đối tượng phạm vi nghiên cứu: IV Nhiệm vụ nghiên cứu: V Phương pháp nghiên cứu: .4 B PHẦN NỘI DUNG I Cơ sở lý luận đề tài: Các khái niệm: a) Khái niệm Đệ quy: .5 b) Đặc điểm chương trình đệ quy: c) Phân loại đệ quy: Gồm loại: .6 Nguyên tắc hoạt động giải thuật đệ quy: a) Khái niệm stack: b) Nguyên tắc hoạt động giải thuật đệ quy ứng dụng Stack: .7 c) Ưu điểm nhược điểm giải thuật đệ quy: Đệ quy quay lui: a) Khái niệm đệ quy quay lui: b) Giải thuật tổng quát đệ quy quay lui: c) Nét đặc trưng phương pháp đệ quy quay lui: 10 d) Ưu nhược điểm: .11 Phương pháp khử đệ quy: .11 Sự khác đệ quy lặp: 12 II GIẢI PHÁP NÂNG CAO HIỆU QUẢ ÔN LUYỆN THI HSG THÔNG QUA CÁC BÀI TẬP VÍ DỤ ĐỆ QUY, ĐỆ QUY QUAY LUI VÀ KHỬ ĐỆ QUY 13 Các tập đệ quy không đệ quy: 13 Các tập đệ quy đệ quy quay lui: 14 Kết đạt được: 19 C KẾT LUẬN VÀ KIẾN NGHỊ 20 GV: Trần Ngọc Dơng Một số kinh nghiệm giải toán phơng pháp đệ quy ôn thi HSG A PHẦN MỞ ĐẦU I Lý chọn đề tài: Như biết, việc đào tạo bồi dưỡng học sinh giỏi thật cơng việc khó khăn, địi hỏi nhiều cơng sức giáo viên học sinh Trong năm gần đây, kỳ thi chọn học sinh giỏi mơn văn hóa cấp tỉnh, đội tuyển học sinh giỏi trường THPT Nông Cống đạt nhiều thành tích cao, cụ thể xếp hạng năm học từ 2015 trở trước đứng thứ 40 tỉnh Trong năm học 2016-2017 vượt lên thứ 28 năm học 2017-2018 giữ nguyên thứ hạng Điều góp phần công sức lớn lao đội ngũ thầy trực tiếp giảng dạy, vươn lên khó khăn từ em học sinh góp phần vào kết chung nhà trường, có đóng góp thành tích mơn Tin học Vì thân cố gắng phấn đấu để bắt nhịp với đội tuyển môn nhà trường Tuy nhiên, sau nhiều năm đào tạo, nhận thấy thực trạng công tác ôn thi học sinh giỏi môn Tin học bộc lộ khó khăn thuận lợi sau: + Thuận lợi:           - Được quan tâm, động viên Ban giám hiệu nhà trường Sự đồng lòng bậc phụ huynh học sinh đội tuyển động viên dành thời gian để em ôn luyện - Sự đúc kết kinh nghiệm giảng dạy, trau dồi kiến thức thân trình giảng dạy - Học sinh có ý thức học tập, say mê mơn học nặng tư duy, năm học 2017-2018 có em đội tuyển Tin học thi mơn: em thi mơn Hóa em thi mơn Tốn + Khó khăn:           - Tìm kiếm xây dựng nguồn nhân lực khó khăn, điều kiện mà năm học 2017-2018 khối học sinh 12 không tham gia dự thi, điều làm cho lực lượng học sinh có chất lượng khối 11 khó thi Tin học (vì em học mơn tự nhiên thi mơn khác) - Học sinh đứng trước lựa chọn học chuyên sâu để thi học sinh giỏi học để thi ĐH-CĐ, dẫn đến việc thi môn trái với môn thi ĐH-CĐ không nằm lựa chọn em - Một số học sinh tham gia học bồi dưỡng chưa thật cố gắng nên kết thi học sinh giỏi chưa cao - Bản thân chưa đủ điều kiện, thời gian để tự bồi dưỡng, nghiên cứu nhằm nâng cao chất lượng dạy học, áp lực cơng việc ơn luyện khơng h nh GV: Trần Ngọc Dơng Một số kinh nghiệm giải toán phơng pháp đệ quy ôn thi HSG          - Cơ sở vật chất, trang thiết bị, tài liệu dạy học phục vụ cho công tác bồi dưỡng HSG nhiều thiếu thốn, hư hỏng nhiều - Đặc biệt khối kiến thức thi học sinh giỏi rộng, em ơn luyện từ làm quen với ngơn ngữ lập trình thi khoảng 2-3 tháng           Trước thuận lợi khó khăn qua nhiều năm tham gia ôn luyện thi học sinh giỏi rút nhiều học kinh nghiệm, có việc giúp học sinh đạt kết cao thi khó, cuối đề thi Những dạng thường dùng giải thuật đệ quy để giải Như ta biết, phép lặp kỹ thuật dùng để giải toán cách thực liên tiếp số câu lệnh vịng lặp điều kiện thỏa mãn Một kỹ thuật lập trình sử dụng để thay cho phép lặp kỹ thuật đệ quy Mặt khác, thực tế có nhiều tốn địi hỏi lặp lặp lại cách phức tạp Và đệ quy cung cấp cho ta chế giải toán phức tạp cách đơn giản Hơn nữa, đệ quy cịn thích hợp để giải tốn có chất đệ quy nhiều toán chưa có lời giải phi đệ quy Từ mục đích nhằm nâng cao kết ơn luyện thi học sinh giỏi, đồng thời giải khó khăn q trình ơn luyện tơi chọn đề tài “Một số kinh nghiệm nâng cao hiệu ôn thi học sinh giỏi thơng qua tốn đệ quy, khử đệ quy đệ quy quay lui” làm đề tài sáng kiến kinh nghiệm II Mục đích nghiên cứu: - Nhằm nâng cao hiệu ôn luyện thi học sinh giỏi - Gây hứng thú học sinh tham gia thi học sinh giỏi môn tin học thông qua việc sinh test cho tập để chấm điểm, phân tích liệu xử lý - Khắc phục khó khăn giải tốn khó đề thi - Nâng cao lực thân đối tượng có sử dụng phương pháp đệ quy để giải tập III Đối tượng phạm vi nghiên cứu: Đối tượng: Đối tượng nghiên cứu đề tài tìm hiểu lý thuyết đệ quy, xây dựng phương pháp giải đệ quy thông qua tập từ đơn giản đến phức tạp Phạm vi: - Thực giải toán phương pháp đệ quy IV Nhiệm v nghiờn cu: GV: Trần Ngọc Dơng Một số kinh nghiệm giải toán phơng pháp đệ quy «n thi HSG - Nghiên cứu sở lý luận lý thuyết đệ quy, tìm hiểu ứng dụng đệ quy - Nghiên cứu phân tích đặc điểm, ưu - nhược điểm sử dụng giải toán phương pháp đệ quy - Nghiên cứu thực tiễn dạy học trình hướng dẫn học sinh giải toán đệ quy V Phương pháp nghiên cứu: Lý thuyết - Tham khảo tài liệu sách, báo, mạng Internet có liên quan trực tiếp đến đề tài Thực tiễn Trong trình dạy học ôn luyện thi học sinh giỏi thực bước sau: + Tìm hiểu lý thuyết, toán ứng dụng phương pháp đệ quy + Xây dựng toán đơn giản giải phương pháp đệ quy để học sinh tiếp cận bước dạng toán áp dụng + Thực giải tốn khó đề thi HSG tỉnh năm đề thi tỉnh khác + Tạo TEST cho tập từ dễ đến khó nhằm tạo hứng thú học tập cho học sinh, đồng thời đánh giá độ phức tạp thuật toán, đánh giá lực phân tích thuật tốn để viết chương trình tối ưu GV: TrÇn Ngọc Dơng Một số kinh nghiệm giải toán phơng pháp đệ quy ôn thi HSG B PHN NỘI DUNG I Cơ sở lý luận đề tài: Các khái niệm: a) Khái niệm Đệ quy:           Nếu thuật toán toán A thực thuật tốn tốn A’ có dạng giống A, thuật tốn đệ quy (A’ nhỏ A) Hay nói cách khác là: Từ tốn A chia nhỏ tốn thành tốn kiểu so với toán gốc ban đầu, chia nhỏ gặp đến tốn mà xử lý (trường hợp suy biến) thao tác dừng           Như trình lập trình, việc xây dựng chương trình (thủ tục/hàm) sử dụng phương pháp đệ quy hiểu sau: Chương trình đệ quy chương trình mà có lời gọi tới chương trình + Các tốn dùng đệ quy: Bài toán dễ dàng giải số trường hợp riêng ứng với giá trị đặc biệt tham số Ta gọi trường hợp suy biến Trong trường hợp tổng qt, tốn quy toán dạng giá trị tham số bị thay đổi Và sau số hữu hạn bước biến đổi Ðệ Quy dẫn đến trường hợp suy biến Ví dụ: Định nghĩa giai thừa n!: + Kết với test n = 5: 0! = 5! = x 4! Nếu n>0 n!=n*(n-1)! = x (4 x 3!) = x (4 x (3 x 2!)) + Code mô tả sau: = x (4 x (3 x (2 x 1!))) Function gt(n: Word): Longint; = x (4 x (3 x (2 x (1 x 0!)))) Trường hợp Begin suy biến If n = then gt : =1 = x (4 x (3 x (2 x 1))) Else gt := n*gt(n - 1); = 120 End; Các toán khác: Định nghĩa số tự nhiên: số tự nhiên n số tự nhiên n-1 số tự nhiên Định nghĩa dãy Fibonacci f(n): 1, Nếu n = 1; 1, Nếu n = 2; F(n-1) + f(n-2) Nếu n > GV: Trần Ngọc Dơng Một số kinh nghiệm giải toán phơng pháp đệ quy ôn thi HSG Từ ví dụ nhận thấy chúng có chung cấu trúc dạng hàm gọi hàm khác dạng mơ hình phân cấp Tuy nhiên số toán, việc dùng hàm gọi hữu dụng Có thể định nghĩa hàm đệ quy hàm gọi đến trực tiếp hay gián tiếp thơng qua hàm khác Vấn đề đệ quy vấn đề phức tạp, gây khó hiểu cho người học, đặc biệt học sinh học lập trình có tư thuật tốn chưa sâu Do đề tài giới thiệu, phân tích, mơ tốn đệ quy từ đơn giản đến phức tạp để em dễ dàng tiếp cận Trước tiên ta xem xét khái niệm đệ quy, sau kiểm tra vài chương trình có chứa hàm đệ quy Cách tiến hành giải tốn đệ quy nhìn chung có điểm chung sau Trước tiên gọi hàm đệ quy để giải toán, hàm đệ quy thực biết cách giải toán trường hợp đơn giản (hay gọi trường hợp sở) Nếu hàm đệ quy gọi trường hợp sở, hàm cần đơn giản trả lại kết Nếu hàm gọi trường hợp phức tạp hơn, hàm đệ quy chia công việc cần giải thành hai phần Một phần hàm biết cách giải nào, cịn phần khơng biết cách giải nhiên để gọi có khả đệ quy, phần sau phải giống với toán ban đầu đơn giản hay nhỏ tốn ban đầu Bởi toán giống với toán ban đầu nên hàm thực gọi để giải cơng việc đơn giản - lời gọi đệ quy hay gọi bước đệ quy Ðể đảm bảo việc đệ quy có kết thúc, lần gọi đệ quy tốn phải đảm bảo đơn giản bước đệ quy thực tiếp toán đơn giản dần, đơn giản tới mức trở thành trường hợp sở Có thể nhận thấy hàm đệ quy xử lý trường hợp sở để trả lại kết tính cho hàm mức phức tạp hơn, đến lượt hàm lại tính trả lại kết cho hàm phức tạp lời gọi hàm ban đầu b) Đặc điểm chương trình đệ quy:           - Trong chương trình đệ quy có lời gọi đến chương trình           - Mỗi lần gọi lại chương trình kích thước tốn thu nhỏ trước           - Có trường hợp đặc biệt: trường hợp suy biến Đây trường hợp giúp kết thúc việc chia nhỏ chương trình để từ truy hồi công thức lấy kết c) Phân loại đệ quy: Gồm loại: Đệ quy trực tiếp Đệ quy giỏn tip GV: Trần Ngọc Dơng Một số kinh nghiệm giải toán phơng pháp đệ quy «n thi HSG + Đệ quy trực tiếp: Là loại đệ quy mà đối tượng mô tả trực tiếp qua nó: Ví dụ 1: A mơ tả qua A, B, C… Trong B, C khơng chứa A Ví dụ 2: Mô tả đệ quy gia phả: Gia phả người bao gồm người gia phả người ch gia phả người mẹ Ví dụ 3: Mơ tả đệ quy thi chọn hoa hậu: - Chọn hoa hậu khu vực - Chọn hoa hậu hoa hậu + Đệ quy gián tiếp: Là loại đệ quy mà đối tượng mơ tả gián tiếp qua nó: Ví dụ: A mơ tả qua B, C, D Trong đó: B mơ tả qua A E, cịn C D không chứa A Nguyên tắc hoạt động giải thuật đệ quy: Trong trình thực lời gọi đệ quy, tham số, biến cục hay địa lưu tạm thời nhớ Các giá trị lấy để giải xảy trường hợp suy biến, giá trị vào sau lấy Chính trình lưu xử lý liệu thực theo mơ hình stack Hình ảnh minh họa hoạt động stack a) Khái niệm stack: Stack (ngăn xếp) danh sách mà việc thêm xóa phần tử diễn đầu danh sách Stack thiết kế theo nguyên lý Last-In-First-Out (LIFO), nghĩa là vào sau, trước Phần tử thêm vào sau phần tử lấy Ví dụ: - Xếp đĩa CD chồng lên nhau, đĩa CD cuối đưa vào đĩa CD lấy + Đặc điểm Stack Mọi phần tử Stack phải kiểu liệu kiểu liệu nào, kể struct hay object Một Stack gồm có phần đáy (bottom) và phần đỉnh (top) Phn t nm GV: Trần Ngọc Dơng Một số kinh nghiệm giải toán phơng pháp đệ quy «n thi HSG đỉnh Stack gọi là Top Item Mọi thao tác thêm, xóa phần tử diễn đỉnh Stack b) Nguyên tắc hoạt động giải thuật đệ quy ứng dụng Stack: - Khi thực giải thuật đệ quy bước giải thuật đệ quy thực - Khi gặp lời gọi đệ quy trước thực lời gọi đệ quy, đoạn mã lệnh chưa thực xong với đối tượng liệu liên quan thời điểm lưu vào stack - Đến lúc khơng thể thực lời gọi đệ quy (trường hợp suy biến) đối tượng lưu stack lấy để xử lý Ví dụ: Giải thuật đệ quy cho tốn tính N! Giả sử N = 3, quy trình thực sau: - Thực lời gọi hàm: giaithua := gt(3); máy tính ghi nhớ là: gt(3) := * gt(2); tính gt(2) - Tiếp tục máy lại ghi nhớ: gt(2):= 2*gt(1); tính gt(1) - Theo định nghĩa hàm gt(1):= 1; máy quay ngược lại: gt(2):= * 1; cho kết - Tiếp tục: gt(3) := * 2; cho kết Như kết cuối trả Ta có: 3! = Mặc dù ứng dụng giải toán phương pháp đệ quy kể toán học lẫn ứng dụng thực tiễn tồn số ưu – nhược điểm, cụ thể sau: c) Ưu điểm nhược điểm giải thuật đệ quy: + Ưu điểm: - Công cụ ứng dụng tốt với tốn có chất đệ quy, thể tư rõ ràng chặt chẽ - Ngắn gọn có khả định nghĩa tập hợp lớn đối tượng số câu lệnh hữu hạn - Giải thuật đệ quy thực nhiều tốn mà giải thuật khơng đệ quy khơng thể thực - Chương trình có chứa giải thuật đệ quy trở nên ngắn gọn, dễ hiểu, nêu bật chất vấn đề toán + Nhược điểm: - Chương trình có sử dụng phương pháp đệ quy tốn nhiều nhớ không dung đệ quy lần gọi đệ quy lại cần thêm vùng nhớ vùng nhớ cũ trỡ cha c gii phúng GV: Trần Ngọc Dơng Một số kinh nghiệm giải toán phơng pháp ®Ư quy «n thi HSG - Tốc độ thực chương trình chậm khơng dụng đệ quy - Do đệ quy lưu trữ liệu trung gian vào Stack nên lưu nhiều liệu lớn Stack gây tượng tràn Stack Đệ quy quay lui: a) Khái niệm đệ quy quay lui: Quay lui (Backtracking) phương pháp tìm kiếm lời giải cho toán mà nghiệm hay tập cấu hìn thỏa mãn đồng thời tính chất P Q, đó: + P: Là cách xác định cấu hình + Q: Tính dừng tốn Hay định nghĩa cách khác là: Thuật toán quay lui dùng để giải tốn liệt kê cấu hình Mỗi cấu hình xây dựng cách xây dựng phần tử, phần tử chọn cách thử tất khả Ví dụ 1: Giả sử cấu hình liệt kê có dạng a[1 n], thuật tốn quay lui thực qua bước 1) Xét tất giá trị a[1] nhận, thử a[1] nhận giá trị Với giá trị thử gán cho a[1] ta sẽ: 2) Xét tất giá trị a[2] nhận, thử cho a[2] nhận giá trị Với giá trị thử gán cho a[2] lại xét tiếp khả chọn a[3] tiếp tục bước: n) Xét tất giá trị a[n] nhận, thử cho a[n] nhận giá trị đó, thơng báo cấu hình tìm (a[1], a[2], , a[n]) Ví dụ 2: Liệt kê tất hoán vị n số tự nhiên nguyên dương theo thứ tự tăng dần từ điển: N = 3: gồm hoán vị: 123, 132, 213, 231, 312, 321 b) Giải thuật tổng quát đệ quy quay lui: Procedure TRY(i: integer); Var k: integer; Begin For k:=1 to n Begin      Chọn bước th k GV: Trần Ngọc Dơng Một số kinh nghiệm giải toán phơng pháp đệ quy ôn thi HSG                               If THEN                                      Begin                                             Ghi nhận bước                                              If i max then begin max := dem; vmax := sh; end; end; procedure thong_bao; var t,i,j : integer; begin assign(f,fo);rewrite(f); writeln(f,'so vung lien thong la: ',sh); for t := to sh begin write(f, 'vung lien thong thu ', t,' : '); for i := to n for j := to m GV: Trần Ngọc Dơng 34 Một số kinh nghiệm giải toán phơng pháp đệ quy ôn thi HSG if b[i,j] = t then write(f,'(',i,',',j,')',' '); writeln(f); end; writeln(f,'so vung lien thong lon nhat la: '); for i:=1 to n for j:=1 to m if b[i,j] = vmax then write(f,'(',i,',',j,')',' '); end; BEGIN nhap; for r:=1 to n for s:=1 to m if b[r,s] = then begin dem:=1; inc(sh); lt(r,s); end; thong_bao; close(f); END BÀI 7: Biểu thức ZERO Cho số tự nhiên N ≤ Giữa số từ đến N thêm vào dấu + - cho kết thu Hãy viết chương trình tìm tất khả Dữ liệu vào: Lấy từ file văn ZERO.INP với dòng ghi số N Dữ liệu ra: Ghi vào file văn có tên ZERO.OUT có cấu trúc sau: - Dịng đầu ghi số lượng kết tìm - Các dòng sau dòng ghi kết tìm Ví dụ: Hướng dẫn giải GV: TrÇn Ngọc Dơng 35 Một số kinh nghiệm giải toán phơng pháp đệ quy ôn thi HSG p dng thuật toán đệ quy quay lui để giải toán này, ta dùng thủ tục đệ quy Try(i) Giả sử ta điền dấu’+’ ’-’ vào số từ đến i, cần điền dấu i i + Ta chọn ba khả năng: điền dấu ’+’, điền dấu ’-’, không điền dấu Khi chọn ba khả trên, ta tiếp tục lựa chọn dấu để điền vào i + i + cách gọi đệ quy Try(i+1) Ta duyệt tất khả để tìm tất nghiệm toán, toán không bị thiếu nghiệm Nếu i = N ta kiểm tra xem cách điền có thoả mãn kết hay không Để kiểm tra ta dùng thủ tục Test chương trình Nếu tổng cách điền nghiệm tốn, ta ghi nhận Nếu i < N tiếp tục gọi Try(i+1) Trong chương trình ta dùng biến dem để đếm cách điền thoả mãn, mảng M kiểu string ghi nhận cách điền dấu thoả mãn u cầu tốn Chương trình: Type MangStr = array[1 15] of string; Const Fi ='ZERO.INP'; Fo ='ZERO.OUT'; Dau : array[1 3] of string[1] = ('-','+',''); S : array[1 9] of char =('1','2','3','4','5','6','7','8','9'); ChuSo = ['1' '9']; Var N,k,dem: byte; D : array[2 9] of string[1]; F : Text; St : String; M : MangStr; Procedure Write_out; Var i : byte; Begin Assign(F,Fo); Rewrite(F); Writeln(F,dem); For i:= to dem writeln(F,M[i],' = 0'); Close(F); Halt; End; Procedure Read_inp; Begin Assign(F,Fi); Reset(F); Read(F,N); Close(F); If N < then write_out; End; Function DocSo(S : String): longint; Var M : longint; t : byte; Begin M:= 0; t:= 0; If S[k] in ['+','-'] then GV: Trần Ngọc Dơng 36 Một số kinh nghiệm giải toán phơng pháp ®Ư quy «n thi HSG begin t:= k; Inc(k); end; While (k=best then begin best:=val; bestconfig:=x; end; end; procedure try(i:integer); var j:integer; begin for j:= to if sum+j*a[i]1 then begin inc(socach); write(f,a[1]); for j:=2 to k write(f,'+',a[j]:2); writeln(f); end; End; BEGIN assign(f,fi); reset(f); readln(f,q); close(f); socach:=0; r:=0; assign(f,fo); rewrite(f); tach(q,r); writeln(f,socach); close(f); END BÀI 11: Đặt phép tính Cho số tự nhiên n Hãy đặt dấu + – vào chữ số 1, 2, 3, 4, 5, 6, 7, 8, viết theo thứ tự cho để tạo biểu thức có giá trị n Vớ d cho n =122 thỡ GV: Trần Ngọc Dơng 43 Một số kinh nghiệm giải toán phơng pháp ®Ư quy «n thi HSG kết nhận là: 12 + 34 - - + 78 + 9, Nếu khơng tìm dãy ghi Input: Vào từ file văn PHEPTINH.INP số nguyên dương N (N

Ngày đăng: 21/06/2021, 09:06

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

TÀI LIỆU LIÊN QUAN

w