1. Trang chủ
  2. » Giáo án - Bài giảng

Vận dụng phương pháp sinh để giải một số bài toán liệt kê tổ hợp theo thứ tự từ điển

19 41 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 19
Dung lượng 443 KB

Nội dung

* Tên báo cáo giải pháp: “Vận dụng phương pháp sinh để giải số toán liệt kê tổ hợp theo thứ tự từ điển” * Lĩnh vực: Chuyên mơn III Mục đích u cầu giải pháp: Thực trạng ban đầu trước áp dụng giải pháp Trong thời đại ngày nay, giới diễn q trình tin học hóa nhiều lĩnh vực hoạt động xã hội Tin học phát triển nhanh vũ bão trở thành ngành khoa học đóng vai trị quan trọng khơng thể thiếu phát triển xã hội Trong năm gần đây, em học sinh từ cấp tiểu học phổ thông trang bị hiểu biết ban đầu máy tính, biết lợi ích máy tính đời sống học tập.Việc học sinh tiếp cận với tin học tạo tảng sở ban đầu để định hướng cho em có sở thích khiếu nghiên cứu khoa học theo ngành khoa học công nghệ cao Môn tin học giúp học sinh bước đầu làm quen với phương pháp giải vấn đề theo quy trình cơng nghệ kỹ sử dụng máy tính phục vụ học tập sống Tin học có ý nghĩa to lớn phát triển trí tuệ, tư thuật tốn, góp phần hình thành học vấn phổ thơng cho học sinh Qua thực tế giảng dạy môn Tin học trường THPT An Phú, công tác bồi dưỡng học sinh giỏi, thân suy nghĩ làm để em tiếp cận cách tốt nhất, dễ hiểu với thuật tốn Chính tơi ln trọng đến việc phân tích hướng dẫn giải thuật để em vận dụng giải toán theo phương pháp hiệu Sự cần thiết phải áp dụng giải pháp Nhiều quốc gia ý thức tầm quan trọng tin học có đầu tư lớn vào lĩnh vực đặc biệt lĩnh vực giáo dục nhằm đào tạo đội ngũ tri thức trẻ có tảng tin học vững vàng nhằm đáp ứng nhu cầu ngày cao xã hội Việc đưa tin học vào giảng dạy trường từ cấp Tiểu Học đến THPT nhằm mục đích phổ cập kiến thức Tin học, ngồi cịn giúp học sinh có khả phân tích, tổng hợp, trừu tượng hóa, khái quát hóa vấn đề, đặc biệt phát triển khả tư Muốn việc dạy đại trà, hướng nghiệp dạy nghề cần tạo điều kiện cho học sinh có khiếu tin học phát triển khả lập trình để giải tốt tốn Để phát huy tài tin học thông qua ôn luyện đội tuyển học sinh giỏi, đòi hỏi người dạy phải tiếp cận với nhiều dạng tốn khó nắm vững phương pháp giải tốn Bài tốn tin học thường đa dạng phức tạp, tốn có nhiều phương pháp giải khác Để lựa chọn phương pháp thích hợp cho tốn, phân chia toán thành dạng toán tổng quan phương pháp giải phù hợp Bài toán liệt kê lớp tốn khó, có nhiều phương pháp giải lớp toán cách giải hiệu phù hợp sử dụng Phương pháp sinh Chính nên chọn đề tài: “Vận dụng phương pháp sinh để giải số toán liệt kê tổ hợp theo thứ tự từ điển” ôn luyện học sinh giỏi môn Tin học Nội dung giải pháp 3.1 Tiến trình thực Thơng thường, để giải tốn theo phương pháp bất kì, tơi thường hướng dẫn học sinh tiếp cận theo quy trình sau: Đọc phân tích đề Viết chương trình Thiết kế thuật tốn Kiểm thử 3.2 Thời gian thực hiện: Giải pháp áp dụng trình bồi dưỡng học sinh giỏi từ năm 20172018 đến 3.3 Biện pháp tổ chức Trong trình giải tập, để giải toán dạng liệt kê tổ hợp theo thứ tự từ điển Phương pháp sinh phải thỏa mãn hai điều kiện sau: - Từ yêu cầu đề bài, ta phải xác định cấu hình cấu hình cuối cùng; - Từ cấu hình có, chưa phải cấu hình cuối ta phải xây dựng thuật tốn để sinh cấu hình Phương pháp sinh mơ tả sau: * Một số ký hiệu dùng lưu đồ thuật tốn: Trong đề tài này, tơi xin trình ba dạng tốn sử dụng Phương pháp sinh để xử lí: Ví dụ: Dạng 1: Liệt kê dãy nhị phân có độ dài n NHIPHAN.INP NHIPHAN.OUT 000 Input: nhập từ file văn 001 NHIPHAN.INP chứa số nguyên dương n (3 0) thì: + A[i]:=1;// Vị trí vừa tìm + Gán phần tử từ vị trí i+1 sau Until i = 0; Thuật tốn chi tiết: Sai Đúng Đúng Sai Chương trình tham khảo const fi= ‘NHIPHAN.INP'; fo= ‘NHIPHAN.OUT'; var n: integer; A: array[1 30] of integer; procedure Nhap; begin read(n); end; procedure xuli; var i,j: integer; begin //Sinh cấu hình đầu for i:=1 to n A[i]:=0; repeat //Xuất cấu hình for i:=1 to n write(A[i]); writeln; //Tìm vị trí A[i] =0 i:=n; while (i>0) and (A[i]=1) dec(i); //Nếu chưa cấu hình cuối sinh cấu hình //tiếp theo if i>0 then begin A[i]:=1; for j:=i+1 to n A[j]:=0; end; until i=0; end; begin assign(input, fi); reset(input); assign(output, fo); rewrite(output); nhap; xuli; close(input); close(output); end Dạng 2: Liệt kê tổ hợp chập k n phần tử Input: file văn TOHOP.INP chứa hai số nguyên dương n, k (1 < k < n < 30) cách dấu cách Output: file văn TOHOP.OUT tập k phần tử tập {1, 2, …, n}, tập dịng Ví dụ: TOHOP.INP TOHOP.OUT 53 123 124 125 134 135 145 234 235 345 Ta dễ dàng xác định cấu hình cấu hình cuối cùng: + Cấu hình đầu: {1, 2, …,k} + Cấu hình cuối: {n-k+1, n-k+2, …,n}.Giá trị lớn phần tử thứ i là: n-k+i (  i : 0) and (A[i]= n-k+i) dec(i); if i>0 then begin A[i]:=A[i]+1; for j:=i+1 to n A[j]:= A[j-1]+1; end; until i=0; end; begin assign(input, fi); reset(input); assign(output, fo); rewrite(output); nhap; xuli; close(input);close(output); end Ví dụ: HV.INP Input: file văn HV.INP chứa số nguyên dương n < 12 Dạng 3: Liệt kê hoán vị n phần tử HV.OUT 123 132 213 231 312 321 Output: file văn HV.OUT hoán vị dãy (1, 2, , n), hốn vị dịng Ở dạng toán này, ta dễ dàng xác định cấu hình cấu hình cuối nó: - Cấu hình đầu: {1, 2, …,n} - Cấu hình cuối: {n, n-1, n-2,…, n} Nhận xét: ta có dãy A đại diện cho tập con, A cấu hình kết thúc có nghĩa tất phần tử A phải có giá trị giảm dần, khơng ta phải sinh dãy A thỏa mãn vừa đủ lớn dãy cũ theo nghĩa khơng có tập A* (A* hoán vị tập A) chen chúng thứ tự từ điển Giả sử hoán vị A = (3, 2, 6, 5, 4, 1), xét phần tử cuối cùng, ta thấy chúng xếp giảm dần, điều có nghĩa cho dù ta có hốn vị phần tử nào, ta hoán vị bé hoán vị Như ta phải xét đến x2 = 2, thay giá trị khác Ta thay giá trị nào? hoán vị nhỏ hơn, khơng thể có A = (phần tử sau không chọn vào giá trị mà phần tử trước chọn) Còn lại giá trị 4, 5, Vì cần hốn vị vừa đủ lớn nên ta chọn A = Còn giá trị (A3, A4, A5, A6) lấy tập {6, 5, 2, 1} Cũng tính vừa đủ lớn nên ta tìm biểu diễn nhỏ số gán cho A3, A4, A5, A6 tức (1, 2, 5, 6) Vậy hoán vị (3, 4, 1, 2, 5, 6), nghĩa là: Giá trị tăng dần Cấu hình A 2 Ta cấu hình kế tiếp: 5 có - Tại vị trí A2 khơng hợp quy luật tăng dần tính từ sau trước nên cần đổi: tìm từ vị trí cuối trước, gặp phần tử vừa lớn A đổi chỗ với A2, ta tìm A5 Vậy cần đổi chỗ A2 A5 Ta được: 5 - Để đảm bảo thứ tự từ điển, phần tử từ A đến A6 phải tăng dần cần phải đảo ngược giá trị phần tử (Vì đoạn từ A3 đến A6 giảm dần) x 123456346521 y - Vị trí phần tử cần đảo vị trí từ đến (gọi vị trí x, y) Ta cần đổi chỗ Ax Ay với x tăng dần, y giảm dần trình kết thúc x>=y Đổi chổ A3, A6 Đổi chổ A4, A5 4 x y 3 x 6 5 6 y Phương pháp sinh mơ tả sau: Sinh cấu hình đầu {Gán A[i]:=i với i tăng từ đến n} Repeat Xuất cấu hình {Xuất A[i] với i tăng từ đến n} Tìm từ cuối trước- vị trí A[i] khơng thỏa tính chất tăng dần Nếu chưa hết dãy (i > 0) thì: + Tìm từ cuối dãy trước – vị trí A[k] >A[i] đổi chỗ A[k] A[i] + Đảo ngược đoạn cuối từ vị trí i+1 đến n Until i = 0; Thuật tốn chi tiết: Sai Sai Sai Chương trình tham khảo const fi='HV.INP; fo='HV.OUT'; Var n: integer; A: array[1 20] of integer; procedure nhap; begin read(n); end; procedure doicho(var x, y: integer); var tam: integer; begin tam:=x; x:=y; y:=tam; end; procedure xuli; var i, k, x, y: integer; begin for i:=1 to n A[i]:=i; repeat for i:=1 to n write(A[i]); writeln; i:=n-1; while (i>0) and (A[i]>A[i+1]) dec(i); if i>0 then begin k:=n; while A[k] 0) thì: + Tìm từ cuối dãy trước – vị trí k, cho S[k] >S[i] đổi chỗ S[k] S[i] + Đảo ngược đoạn cuối xâu S từ vị trí i+1 đến n (length(s)) Until i = 0; Bài tập 4: Cho số nguyên dương n (n1; - Tìm từ sau trước gặp phần tử A[i]>1 (i=2), giảm A[2] đơn vị, A[2] = - = 3; - Tổng= k – i + 1= – + = 8; - chia tối đa phần tử có giá trị A[2]: thương = tổng div A[i]  div = Gán giá trị phần tử A[3], A[4] = Phần dư gán cho phần tử A[5] ( A[5] = 2); - Cập nhật lại k Phương pháp sinh mơ tả sau: A[1]:=n; Repeat Giảm A[i] đơn vị Nếu chưa phải cấu hình cuối (i>0) + Tổng := k – i +1; Thương := k div A[i]; Dư := thương mod A[i]; + Gán phần tử phía sau A[i] có giá trị với A[i] (A[i+j] := A[i], với j:1thương) + Cập nhật lại k: k := i + thương + Nếu phần dư (Dư > 0) gán phần dư cho phần tử A[k+1]  K:=k+1  A[k]:=Dư Until i = 0; Bài tập 5: Một cửa hàng nhỏ có N loại bánh khác nhau, loại bánh có số lượng lớn Có người mua hàng cần mua k bánh Giả sử người quan tâm đến loại bánh mà không quan tâm tới bánh cụ thể thứ tự chọn chúng Hãy liệt kê cách khác mà khách hàng lựa chọn để mua bánh Input: file văn MHANG.INP gồm dòng ghi hai số nguyên dương N K Giữ hai số cách khoảng cách Ví dụ: MHANG.INP MHANG.OUT 23 111 112 Output: file văn MHANG.OUT 122 gồm nhiều dòng, dòng phương 222 án mua hàng khách hàng Hướng dẫn: - Cấu hình đầu: {1, 1, ,1} - Chọn k bánh loại - Cấu hình cuối: {n, n, , n}- Chọn k bánh loại n - Sinh cấu hình kế tiếp: xét ví dụ n =3 k = Ta có cấu hình: {1, 1, 1, 1, 1} {1, 1, 2, 2, 3} {1, 1, 1, 1, 2} {1, 1, 2, 3, 3} {1, 1, 1, 1, 3} 10 {1, 1, 3, 3, 3} 15 15 {1, 3, 3, 3, 3} 16 {2, 2, 2, 2, 2} 17 {2, 2, 2, 2, 3} {1, 1, 1, 2, 2} 11 {1, 2, 2, 2, 2} {1, 1, 1, 2, 3} 12 {1, 2, 2, 2, 3} 13 {1, 2, 2, 3, 3} 14 {1, 2, 3, 3, 3} {1, 1, 1, 3, 3} {1, 1, 2, 2, 2} 18 19 20 21 {2, 2, 2, 3, 3} {2, 2, 3, 3, 3} {2, 3, 3, 3, 3} {3, 3, 3, 3, 3} Phương pháp sinh mơ tả sau: Sinh cấu hình đầu {Các phần tử – lấy k bánh loại 1} Repeat Xuất cấu hình Tìm từ sau trước, vị trí A[i]n Nếu chưa phải cấu hình cuối (i>0) + Tăng A[i] lên đơn vị + Các phần tử sau A[i] A[i]( A[j] := A[i] với (j: i+1  k)) Until i = 0; Trên đây, số dạng toán dùng phương pháp sinh để xử lý Tuy nhiên, phương pháp lập trình có ưu nhược điểm riêng Phương pháp sinh có ưu điểm trường hợp liệt kê toàn số lượng nhỏ cấu hình, liệu lớn hạn chế trình duyệt IV Hiệu giải pháp Giải pháp giúp học sinh tiếp cận với kỹ thuật lập trình mới, rèn luyện học sinh kỹ lập trình, xử lí tốn, phát huy tính tích cực, sáng tạo học sinh Áp dụng giải pháp “Vận dụng Phương pháp sinh giải số toán liệt kê tổ hợp theo thứ tự từ điển” góp phần khơng nhỏ vào hiệu quả, chất lượng bồi dưỡng học sinh giỏi đơn vị năm gần Một số kết đạt từ vận dụng giải pháp (năm học 2017-2018): Học sinh giỏi cấp tỉnh 2018 Được dự thi học sinh giỏi cấp Quốc gia 2019 Tin học trẻ 2018 16 Tin học trẻ 2019 01 giải nhì, 01 giải ba 01 giải ba, 01 giải khuyến khích 01 học sinh 02 giải ba V Mức độ ảnh hưởng: Giải pháp góp phần mang lại hiệu định công tác bồi dưỡng học sinh giỏi đơn vị áp dụng số đơn vị khác VI Kết luận Những học kinh nghiệm Quá trình tuyển chọn, bồi dưỡng học sinh giỏi mơn Tin học q trình giáo dục nâng cao, biến học sinh có tiềm thành học sinh có khả năng, học sinh chưa bộc lộ niềm say mê, hứng thú với môn tin học thành học sinh say mê, hứng thú với mơn Tin học Trong q trình vai trị người giáo viên quan trọng Quan trọng từ khâu tuyển chọn, dẫn dắt, truyền dạy, uốn nắn đến việc khích lệ cố gắng, tích cực khả tự học, tự sáng tạo học sinh Phẩm chất, uy tín, lực người giáo viên có ảnh hưởng trực tiếp, quan trọng, chí có tính định trình học tập rèn luyện học sinh Do vậy, giáo viên phải tự đào tạo, tự cố gắng hoàn thiện phẩm chất lực chuyên môn; tâm huyết với công việc, yêu thương học trò giúp đỡ đồng nghiệp Giáo viên không truyền dạy kiến thức mà cao là, dạy cho học sinh cách tìm kiến thức, chân lý từ giảng Đặc biệt lĩnh vực thay đổi phát triển liên tục Giáo viên phải cập nhật kiến thức kịp thời đáp ứng yêu cầu phát triển môn học đặc thù Cùng với truyền dạy kiến thức, người giáo viên phải truyền cảm hứng say mê, yêu mến môn học cho học sinh, đặc biệt học sinh giỏi Khơng có niềm say mê, dù có kiến thức sáng tạo khó đạt kết tốt, khó đạt đỉnh cao học tập thi cử, đặc biệt lĩnh vực CNTT Những kiến nghị, đề xuất Ban giám hiệu nhà trường phụ huynh học sinh cần tạo điều kiện tốt cho đội ngủ học sinh giỏi trường Giáo viên bồi dưỡng cần quản lí kiểm tra việc học tập học sinh cách nghiêm túc Trên vài kinh nghiệm nhỏ tơi q trình bồi dưỡng học sinh giỏi, mong góp ý đồng nghiệp để đề tài nhân rộng đạt kết cao Tôi cam đoan nội dung báo cáo thật Xin chân thành cảm ơn Xác nhận đơn vị áp dụng giải pháp Người viết giải pháp 17 Nguyễn Phi Hùng 18 TÀI LIỆU THAM KHẢO Sách Giáo Khoa Tin Học 11 – Hồ Sĩ Đàm (Chủ biên) Tài Liệu Sách Giáo Khoa Chuyên Tin Học Quyển 1, – Hồ Sĩ Đàm (Chủ biên) 150 Bài Tập Tốn Tin – Lê Minh Hồng Giải Thuật & Lập Trình – Lê Minh Hồng Wedsite: http://ntucoder.net 19 .. .Bài toán liệt kê lớp tốn khó, có nhiều phương pháp giải lớp tốn cách giải hiệu phù hợp sử dụng Phương pháp sinh Chính nên tơi chọn đề tài: ? ?Vận dụng phương pháp sinh để giải số toán liệt kê tổ. .. dụng Phương pháp sinh giải số toán liệt kê tổ hợp theo thứ tự từ điển? ?? góp phần không nhỏ vào hiệu quả, chất lượng bồi dưỡng học sinh giỏi đơn vị năm gần Một số kết đạt từ vận dụng giải pháp (năm... thuật toán Kiểm thử 3.2 Thời gian thực hiện: Giải pháp áp dụng trình bồi dưỡng học sinh giỏi từ năm 20172018 đến 3.3 Biện pháp tổ chức Trong trình giải tập, để giải toán dạng liệt kê tổ hợp theo thứ

Ngày đăng: 04/01/2022, 06:12

HÌNH ẢNH LIÊN QUAN

- Từ yêu cầu của đề bài, ta phải xác định được cấu hình đầu tiên và cấu hình cuối cùng; - Vận dụng phương pháp sinh để giải một số bài toán liệt kê tổ hợp theo thứ tự từ điển
y êu cầu của đề bài, ta phải xác định được cấu hình đầu tiên và cấu hình cuối cùng; (Trang 2)
Sinh cấu hình đầu {Gán A[i]:=0 với i tăng từ 1 đến n} Repeat - Vận dụng phương pháp sinh để giải một số bài toán liệt kê tổ hợp theo thứ tự từ điển
inh cấu hình đầu {Gán A[i]:=0 với i tăng từ 1 đến n} Repeat (Trang 4)
//Sinh cấu hình đầu - Vận dụng phương pháp sinh để giải một số bài toán liệt kê tổ hợp theo thứ tự từ điển
inh cấu hình đầu (Trang 5)
//Xuất cấu hình hiện tại - Vận dụng phương pháp sinh để giải một số bài toán liệt kê tổ hợp theo thứ tự từ điển
u ất cấu hình hiện tại (Trang 5)
Ở dạng toán này, ta dễ dàng xác định cấu hình đầu tiên và cấu hình cuối cùng của nó: - Vận dụng phương pháp sinh để giải một số bài toán liệt kê tổ hợp theo thứ tự từ điển
d ạng toán này, ta dễ dàng xác định cấu hình đầu tiên và cấu hình cuối cùng của nó: (Trang 8)
- Cấu hình đầu: {1, 2, 3 …,n} - Cấu hình cuối: {n, n-1, n-2,…, n} - Vận dụng phương pháp sinh để giải một số bài toán liệt kê tổ hợp theo thứ tự từ điển
u hình đầu: {1, 2, 3 …,n} - Cấu hình cuối: {n, n-1, n-2,…, n} (Trang 8)
Sinh cấu hình đầu {Gán A[i]:=i với i tăng từ 1 đến n} Repeat - Vận dụng phương pháp sinh để giải một số bài toán liệt kê tổ hợp theo thứ tự từ điển
inh cấu hình đầu {Gán A[i]:=i với i tăng từ 1 đến n} Repeat (Trang 9)
- Sinh cấu hình kế tiếp: Tìm từ cuối dãy về trước, gặp phần tử bằng 1 ta chuyển về 0. Vậy các cấu sẽ sinh ra trong trường hợp này là: 1111, 1110, 1100, 1000, 0000 (đảm bảo tính chất không có số “01” nào xuất hiện) - Vận dụng phương pháp sinh để giải một số bài toán liệt kê tổ hợp theo thứ tự từ điển
inh cấu hình kế tiếp: Tìm từ cuối dãy về trước, gặp phần tử bằng 1 ta chuyển về 0. Vậy các cấu sẽ sinh ra trong trường hợp này là: 1111, 1110, 1100, 1000, 0000 (đảm bảo tính chất không có số “01” nào xuất hiện) (Trang 11)
cấu hình tương ứng: 11110101; 11101101; 11011101; 10111101; 01111101; 11101011;   11011011;   10111011;  01111011;   11010111;   10110111;  01110111; 10101111; 01101111; 01011111 - Vận dụng phương pháp sinh để giải một số bài toán liệt kê tổ hợp theo thứ tự từ điển
c ấu hình tương ứng: 11110101; 11101101; 11011101; 10111101; 01111101; 11101011; 11011011; 10111011; 01111011; 11010111; 10110111; 01110111; 10101111; 01101111; 01011111 (Trang 12)
Cấu hình hiện tại - Vận dụng phương pháp sinh để giải một số bài toán liệt kê tổ hợp theo thứ tự từ điển
u hình hiện tại (Trang 14)
Giả sử ta đang ở cấu hình 14.{3, 3, 1, 1}. Cấu hình kế tiếp 15. {3, 2, 2, 1} được xác định như sau: Tìm từ sau ra trước, vị trí phần tử có giá trị lớn hơn 1 (vị trí thứ 2) - Vận dụng phương pháp sinh để giải một số bài toán liệt kê tổ hợp theo thứ tự từ điển
i ả sử ta đang ở cấu hình 14.{3, 3, 1, 1}. Cấu hình kế tiếp 15. {3, 2, 2, 1} được xác định như sau: Tìm từ sau ra trước, vị trí phần tử có giá trị lớn hơn 1 (vị trí thứ 2) (Trang 14)
- Cấu hình đầu: {1,1, ...,1 }- Chọn k cái bánh loại 1 - Cấu hình cuối: {n, n, ..., n}- Chọn k cái bánh loại n - Vận dụng phương pháp sinh để giải một số bài toán liệt kê tổ hợp theo thứ tự từ điển
u hình đầu: {1,1, ...,1 }- Chọn k cái bánh loại 1 - Cấu hình cuối: {n, n, ..., n}- Chọn k cái bánh loại n (Trang 15)

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

TÀI LIỆU LIÊN QUAN

w