SKKN CHỌN cấu TRÚC dữ LIỆU CHO bài TOÁN QUY HOẠCH ĐỘNG

30 494 0
SKKN CHỌN cấu TRÚC dữ LIỆU CHO bài TOÁN QUY HOẠCH ĐỘNG

Đ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

SỞ GIÁO DỤC VÀ ĐÀO TẠO ĐỒNG NAI Đơn vị Trường THPT chuyên Lương Thế Vinh Mã số: SÁNG KIẾN KINH NGHIỆM CHỌN CẤU TRÚC DỮ LIỆU CHO BÀI TOÁN QUY HOẠCH ĐỘNG Người thực hiện: LÊ QUANG VINH Lĩnh vực nghiên cứu: - Quản lý giáo dục  - Phương pháp dạy học môn: TIN HỌC  - Lĩnh vực khác:  Có đính kèm: Các sản phẩm in SKKN  Mô hình  Đĩa CD (DVD)  Phim ảnh Năm học: 2014 - 2015  Hiện vật khác SƠ LƯỢC LÝ LỊCH KHOA HỌC –––––––––––––––––– I THÔNG TIN CHUNG VỀ CÁ NHÂN Họ tên: LÊ QUANG VINH Ngày tháng năm sinh: 19/12/1985 Nam, nữ: Nam Địa chỉ: Phòng V3, KTX trường THPT chuyên Lương Thế Vinh Điện thoại: (NR); ĐTDĐ: 0167 803 8755 (CQ)/ Fax: E-mail: lequangvinh1912@gmail.com Chức vụ: Tổ trưởng Nhiệm vụ giao: giảng dạy Đơn vị công tác: trường THPT chuyên Lương Thế Vinh II TRÌNH ĐỘ ĐÀO TẠO - Học vị (hoặc trình độ chuyên môn, nghiệp vụ) cao nhất: Thạc sĩ - Năm nhận bằng: 2012 - Chuyên ngành đào tạo: Công nghệ thông tin III KINH NGHIỆM KHOA HỌC - Lĩnh vực chuyên môn có kinh nghiệm: Giảng dạy Tin học Số năm có kinh nghiệm: - Các sáng kiến kinh nghiệm có năm gần đây: o Lý thuyết tập đồ thị - Phần khung (năm 2011) o Website bồi dưỡng khiếu tin học (năm 2012) o Đưa tập website VNOI vào giảng dạy Tin học chuyên (năm 2013) o Định hướng đề kì thi học sinh giỏi môn Tin học (năm 2014) Tên SKKN : CHỌN CẤU TRÚC DỮ LIỆU CHO BÀI TOÁN QUY HOẠCH ĐỘNG I LÝ DO CHỌN ĐỀ TÀI Trong kì thi học sinh giỏi cấp tỉnh, cấp quốc gia nay, dạng toán Quy hoạch động ngày phổ biến, chiếm đa số thi Bài toán Quy hoạch động đề cập toán giải phương pháp Quy hoạch động Tư tưởng phương pháp tính kết toán thông qua kết toán theo công thức truy hồi Việc lưu trữ kết toán cách tối ưu nhiệm vụ phương pháp Học sinh làm quen dạng thường gặp khó khăn chọn cấu trúc liệu để lưu trữ Sáng kiến kinh nghiệm “Chọn cấu trúc liệu cho toán Quy hoạch động” giới thiệu số tập Quy hoạch động phân loại theo cấu trúc liệu sử dụng Giúp cho học sinh dễ dàng nhận biết dạng có thêm “kinh nghiệm” để chọn cấu trúc liệu Sáng kiến kinh nghiệm nhằm mục đích:  Bồi dưỡng học sinh lớp chuyên Tin  Bồi dưỡng đội tuyển thi học sinh giỏi  Giới thiệu, trao đổi với giáo viên đồng nghiệp dạng toán Quy hoạch động cách tiếp cận theo hướng cấu trúc liệu II CƠ SỞ LÝ LUẬN VÀ THỰC TIỄN Hiện có số tài liệu trình bày chuyên đề Quy hoạch động như:  Sách giáo khoa chuyên Tin [1, 97 - 107]: trình bày số ví dụ đặc trưng tập rèn luyện Chưa có phân loại theo tiêu chí định  Giải thuật lập trình [2, 155 - 189]: trình bày giống Sách giáo khoa chuyên Tin  Tài liệu bồi dưỡng khiếu Tin học khối THPT [4, 85 – 109]: trình bày nhiều ví dụ toán Quy hoạch động, có lời giải, chương trình cài đặt cụ thể Tuy nhiên, chưa có phân loại tập  Kho tập website spoj.com [5]: tổng hợp tập tất dạng bài, thích hợp để học sinh luyện tập Các tập Quy hoạch động website chưa phân loại Trong trình giảng dạy lớp chuyên Tin, tác giả nhận thấy đa số học sinh làm quen với dạng này, sau tìm công thức truy hồi, thường gặp khó khăn việc cài đặt, mà chủ yếu chọn cấu trúc liệu để lưu trữ toán Cần có phân loại chi tiết toán Quy hoạch động Tác giả chọn tiêu chí phân loại theo cấu trúc liệu để giúp học sinh có thêm “kinh nghiệm” để chọn cấu trúc liệu cho toán III TỔ CHỨC THỰC HIỆN CÁC GIẢI PHÁP Tổ chức thực 1) Tìm hiểu nội dung chương trình tin học chuyên sâu, nội dung chuyên đề Quy hoạch động tài liệu “Chương trình chuyên sâu THPT chuyên – môn Tin học” Bộ Giáo Dục Đào Tạo phát hành năm 2009  Theo tài liệu này, chuyên đề Quy hoạch động giảng dạy 15 tiết khối 11, sau học xong yêu cầu học sinh phải làm toán quen thuộc như: - Bài toán dãy đơn điệu tăng dài nhất; Bài toán xâu chung dài nhất; Bài toán biến đổi xâu; Bài toán túi; Bài toán lũy thừa số; Bài toán nhân ma trận; Bài toán chia đa giác thành tam giác; …  Để phù hợp với thực tế giảng dạy trường, tác giả chia chuyên đề thành phần: phần dạy khối 10 phần nâng cao dạy khối 11 Các ví dụ trình bày đề tài chủ yếu dành cho học sinh lớp 10 làm quen với toán Quy hoạch động 2) Tham khảo tài liệu, giáo án, dự tiết dạy chuyên đề Quy hoạch động đồng nghiệp  Sau tham khảo tài liệu, dự số tiết dạy đồng nghiệp Tác giả nhận thấy phần lớn trình bày vấn đề từ dễ đến khó, từ ví dụ cụ thể đến tập vận dụng Cách trình bày có nhiều ưu điểm, học sinh nắm bắt vấn đề dễ dàng Các ví dụ đề tài trình bày theo cách trên, bổ sung thêm phần phân loại toán 3) Tham khảo đề thi học sinh giỏi Tin học cấp tỉnh, cấp quốc gia, Olympic 30.4  Như trình bày trên, toán Quy hoạch động chiếm đa số thi học sinh giỏi Trong đề tài có sử dụng số tập Quy hoạch động trích từ đề thi 4) Sưu tầm, xây dựng, phân loại tập theo hướng Cấu trúc liệu sử dụng  Sau nghiên cứu cách giải tập tham khảo từ đề thi, tài liệu, website, tác giả tiến hành phân loại theo tiêu chí cấu trúc liệu sử dụng 5) Giảng dạy thử nghiệm chuyên đề Quy hoạch động cho lớp 10 Tin Theo dõi khả tiếp thu học sinh Lấy ý kiến học sinh tích cực hạn chế việc phân loại tập Chuyên đề Quy hoạch động dạy (buổi) x (tiết) = 20 (tiết), theo phân bố sau Buổi Nội dung Tên Làm quen với  Nguyên lí tối ưu, đặc trưng toán có toán Quy hoạch động thể giải thuật toán QHĐ, đặc trưng thuật toán QHĐ  Sự giống khác thuật toán QHĐ Đệ quy  Cách nhận biết toán cụ thể giải QHĐ hay không Dạng 1: dùng biến  Các tập dạng đơn để lưu trữ lời giải cho toán QHĐ Dạng 2: dùng mảng  Các tập dạng chiều để lưu trữ lời giải cho toán QHĐ Dạng 3: dùng mảng  Các toán dạng chiều để lưu trữ lời giải cho toán QHĐ Ôn tập, kiểm tra  Để kiểm tra cuối chuyên đề 5) Tổng kết, sửa chữa, hoàn thiện đề tài Sau giảng dạy chuyên đề Quy hoạch động cho lớp 10 Tin, tác giả tiến hành lấy ý kiến đồng nghiệp, học sinh để rút kinh nghiệm Tiến hành sửa chữa hoàn thiện đề tài Nội dung đề tài Cấu trúc liệu sử dụng toán Quy hoạch động đa dạng Từ cấu trúc liệu có sẵn như: biến, mảng chiều, mảng chiều, … kiểu liệu nâng cao tự xây dựng như: stack, queue, tree, heap, … Vì giới hạn thời gian, để học sinh làm quen dễ dàng tiếp thu, đề tài giới hạn tập sử dụng cấu trúc liệu Các dạng nâng cao tiếp tục bổ sung thời gian tới 2.1 Dạng 1: Dùng biến đơn Trong công thức truy hồi để tìm lời giải toán chính, cần sử dụng số (hai, ba …) lời giải toán Ví dụ Bài FIBO Dãy Fibonacci Dãy fibonacci dãy vô hạn số nguyên dương 1, 1, 2, 3, 5, 8, … Yêu cầu: Cho n Hãy số hạng thứ n dãy Input: số nguyên dương n (n < 103) Output: số hạng thứ n dãy Fibonacci Input Output Giải Gọi Fn số hạng thứ n dãy số Để giải toán trên, thông thường ta phải tìm công thức tính Fn từ số n đầu vào Các nhà toán học nhiều thời gian để tìm công thức: (1) Việc tìm công thức tường minh khó, đòi hỏi nhiều công sức, thời gian phải có trình độ toán học cao cấp Tuy nhiên, ta lập công thức tính Fn theo dạng truy hồi sau:  fi =1 i≤2  fi = fi – + fi-2, i≥3 Công thức mô tả quy luật dãy số “số sau tổng hai số trước” mà học sinh tiểu học bình thường nghĩ Với công thức này, muốn tìm số hạng thứ n, ta phải tìm hai số hạng trước n, muốn tìm hai số hạng phía trước này, ta lại tiếp tục phải tìm số hạng phía trước Sau chương trình dùng biến để lưu lại toán fi1 fi2 Chương trình const fin='fibo.inp'; fon='fibo.out'; procedure solve; var fi1,fi2,t:QWORD; n,i:longint; begin readln(n); Fi1:=1;//fi-1 fi2:=1;//fi-2 For i:=3 to n begin T:=fi1; fi1:=fi1+fi2; fi2:=t; end; writeln(fi1); end; begin assign(input,fin);reset(input); assign(output,fon);rewrite(output); solve; close(input);close(output); end Bài NKTICK Xếp hàng mua vé Có N người hàng mua vé dự buổi hoà nhạc Ta đánh số họ từ đến N theo thứ tự đứng hàng Mỗi người cần mua vé, song người bán vé phép bán cho người tối đa hai vé Vì thế, số người rời hàng nhờ người đứng trước mua hộ vé Biết ti thời gian cần thiết để người i mua xong vé cho Nếu người i+1 rời khỏi hàng nhờ người i mua hộ vé thời gian để người thứ i mua vé cho hai người ri Input Output 18 25784 10 10 Yêu cầu: Xác định xem người cần rời khỏi hàng nhờ người đứng trước mua hộ vé để tổng thời gian phục vụ bán vé nhỏ 24 5784 50 50 50 Dữ liệu  Dòng chứa số N (1 ≤ N ≤ 60000)  Dòng thứ ghi N số nguyên dương t1, t2, , tN (1 ≤ ti ≤ 30000)  Dòng thứ ba ghi N-1 số nguyên dương r1, r2, , rN-1 (1 ≤ ri ≤ 30000) Kết quả: In tổng thời gian phục vụ nhỏ Giải Gọi f[i] tổng thời gian mua vé nhỏ tính từ người người i Ta có công thức truy hồi: fi=min(fi-1+ti, fi-2+ri-1) Chương trình sau dùng hai biến f1, f2 để lưu kết toán Chương trình const fin='nktick.inp';fon='nktick.out'; maxn=60000; var n,i:longint; t,r,f:array[1 maxn] of longint; f1,f2,tam:longint; function min(a,b:longint):longint; var x:longint; begin x:=a; if b f(i) = f(i-1) + f(i-2) với f(1) = f(2) = => f(N) kết toán Công thức truy hồi công thức dãy Fibonacy end; {truy vet} z:=t[n+1]; d:=0; repeat inc(d); kq[d]:=z; z:=t[z]; until z=0; writeln(d,' ',f[n+1]-1); //for i:=d downto writeln(kq[i],' '); end; begin assign(input,fin);reset(input); assign(output,fon);rewrite(output); read(n,P); for i:=1 to n read(c[i].a,c[i].b); xuli; close(input);close(output); end Bài tập vận dụng Bài ACTIVITY Bố trí phòng họp Có n họp đánh số từ đến n đăng ký làm việc phòng hội thảo Cuộc họp thứ t cần bắt đầu sau thời điểm si kết thúc thời điểm fi: Hỏi bố trí phòng hội thảo phục vụ nhiều họp, cho khoảng thời gian làm việc hai họp không giao Dữ liệu:  Dòng chứa số nguyên dương n 106  Dòng thứ i số n dòng chứa hai số nguyên si, fi  si fi  105 Input Output 79 68 13 06 37 Các số dòng Input file ghi cách dấu cách Kết quả: 14  Dòng ghi số k số họp chấp nhận phục vụ  k dòng liệt kê số hiệu họp chấp nhận theo thứ tự từ họp tới họp cuối , dòng ghi số hiệu họp Giải thích Hướng dẫn Sắp xếp họp tăng dần theo thời điểm kết thúc (b i) Thế họp i bố trí sau họp j j[...]... mức khá Cần bổ sung thêm các ví dụ và bài tập Một số bài tập có thể áp dụng nhiều cấu trúc dữ liệu khác nhau Cần so sánh ưu, khuyết điểm của các cấu trúc Đánh giá mức độ áp dụng: Khá V ĐỀ XUẤT, KHUYẾN NGHỊ KHẢ NĂNG ÁP DỤNG Từ hiệu quả thực tế thu được khi áp dụng đề tài trong năm học 2014 - 2015 cho thấy việc phân loại bài tập Quy hoạch động theo hướng cấu trúc dữ liệu giúp nâng cao chất lượng giảng... lập - Tự do - Hạnh phúc ––––––––––– –––––––––––––––––––––––– Biên Hòa, ngày tháng năm PHIẾU NHẬN XÉT, ĐÁNH GIÁ SÁNG KIẾN KINH NGHIỆM Năm học: 2014 - 2015 ––––––––––––––––– Tên SKKN: CHỌN CẤU TRÚC DỮ LIỆU CHO BÀI TOÁN QUY HOẠCH ĐỘNG Họ và tên tác giả: LÊ QUANG VINH Chức vụ: Tổ trưởng Đơn vị: trường THPT chuyên Lương Thế Vinh Lĩnh vực: (Đánh dấu X vào các ô tương ứng, ghi rõ tên bộ môn hoặc lĩnh vực khác)... =min(fi-1,fi-2)+ai-1 9 2.2 Dạng 2: dùng mảng Trong công thức truy hồi để tìm lời giải của bài toán chính, cần sử dụng tất cả lời giải của bài toán con Ví dụ Bài 1 LIQ Dãy con tăng dài nhất Cho dãy a1, a2, , an có n phần tử Dãy con của dãy a được tạo thành bằng các xóa một số phần tử trong dãy a và vẫn giữ nguyên các vị trí còn lại Ví dụ cho dãy a: 2 4 6 1 7  Dãy 2 1 7 là một dãy con của a (xóa 4 6)  Dãy 2 4 1... 7 cách cân: Yêu cầu: Đếm số cách cân vật đã cho Input: số n, m (n, m  100) Output: số cách cân vật 25 n 4 Kết quả m 2 7 Hướng dẫn Cho dãy a gồm n số tự nhiên a1, a2, ,an và số nguyên S, có bao nhiêu cách chọn ra một số phần tử trong dãy a và điền dấu cộng “+” hoặc “-“ vào trước mỗi phần tử đó để được một biểu thức số học cho giá trị là S? Mỗi phần tử được chọn nhiều nhất một lần F[i,t] = f[i-1,t-a[i]]... nhiều phần tử nhất của dãy Dữ liệu vào: gồm 2 dòng:  Dòng đầu là số nguyên dương n (n ≤ 103)  Dòng sau gồm N số, mỗi số là một số nguyên ai của dãy (-104 ≤ai ≤ 104, 1≤ i ≤ n) Input Output 10 6 5 2 3 4 9 10 5 6 7 3 234567 Dữ liệu ra: gồm 2 dòng  Dòng đầu là số lượng phần tử của dãy con  Dòng sau là các số thuộc dãy con Giải Fi là dãy con của dãy a1, a2, …, ai thỏa đề bài (tăng, dài nhất) và kết... close(input);close(output); end Bài tập vận dụng Bài 3 ACTIVITY Bố trí phòng họp Có n cuộc họp đánh số từ 1 đến n đăng ký làm việc tại một phòng hội thảo Cuộc họp thứ t cần được bắt đầu ngay sau thời điểm si và kết thúc tại thời điểm fi: Hỏi có thể bố trí phòng hội thảo phục vụ được nhiều nhất bao nhiêu cuộc họp, sao cho khoảng thời gian làm việc của hai cuộc họp bất kỳ là không giao nhau Dữ liệu:  Dòng đầu tiên... Ouput 5 100 12345 14 43466 50 20 30 50 20 Output(Chấm bài chỉ xuất dòng 1) 15  Dòng 1: tổng số tiền lớn nhất  Dòng 2: số thứ tự của khách hàng thuê Hướng dẫn Fi là tổng số tiền lớn nhất kết thúc tại khách hàng ai Công thức truy hồi: Fi=Max(Fj / 1 ≤ j < i và bj≤ai) + ci 2.3 Dạng 3: Dùng bảng (mảng 2 chiều) Hàm mục tiêu của bài toán là hàm 2 chiều Ví dụ Bài 1 BBAGCái túi Trong siêu thị có n đồ vật, vật... của số cách di chuyển quân tốt trắng đến ô (i – 1, j) (nếu i > 1) và đến ô (i, j – 1) (nếu j > 1) Vậy : F(i, j) = (f(i-1, j) + f(i, j – 1]) mod 109 Kết quả bài toán là f(N, N) Cơ sở : f(1, i) và f(i, 1) bằng 1 với i=1 N Bài 5 QBSQUARE Hình vuông 0 1 Cho một bảng kích thước MxN, được chia thành lưới ô vuông đơn vị M dòng N cột (1 ≤ M, N ≤ 1000) Trên các ô của bảng ghi số 0 hoặc 1 Các dòng của bảng được... dãy con này là dài nhất có thể thì Fi = max(Fj, j= 1 i-1, aj< ai) + 1 Nhìn vào công thức truy hồi ta thấy để tính được Fi, ta cần lời giải của tất cả các bài toán con f1, f2, …, fi – 1 Chương trình sau dùng mảng 1 chiều f[] để lưu lời giải của các bài toán con này 10 Chương trình const fin = 'test.inp'; fon = 'test.out'; maxn=10000;vc=maxlongint; var a,f,t:array[0 maxn] of longint; n:longint; procedure... thua, họ đã quy t định tìm cách nối các máy trên bàn bởi các đoạn dây nối sao cho mỗi máy được nối với ít nhất một máy khác Để tiến hành công việc này, họ đã đo khoảng cách giữa hai máy liên tiếp Bạn hãy giúp các học sinh này tìm cách nối mạng thoả mãn yêu cầu đặt ra sao cho tổng độ dài cáp nối phải sử dụng là ít nhất Dữ liệu  Dòng đầu tiên chứa số lượng máy N (1 ≤ N ≤ 25000)  Dòng thứ i trong số

Ngày đăng: 24/07/2016, 11:58

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan