Chia để trị; Quy hoạch động; Tham lam; Nhánh cận; Các thuật toán trên đồthị; Các thuật toán trên Cây… Trong các lớp thuật toán trên tôi chọn đề tài“Ứng dụng phương pháp Nhánh cận trong d
Trang 12 Mục tiêu nghiên cứu 2
3 Đối tượng và phạm vi nghiên cứu 3
4 Phương pháp nghiên cứu 3
5 Bố cục của đề tài 4
6 Tổng quan tài liệu tham khảo 4
CHƯƠNG 1: PHƯƠNG PHÁP NHÁNH CẬN 5
1.1 KỸ THUẬT ĐỆ QUY 5
1.1.1 Thuật toán quay lui 5
1.1.2 Giải bài toán bằng cách sử dụng Đệ quy quay lui 6
1.2 PHƯƠNG PHÁP NHÁNH CẬN 11
1.2.1 Bài toán tối ưu tổ hợp 11
1.2.2 Cách giải một bài toán bằng phương pháp nhánh cận 13
CHƯƠNG 2: CHƯƠNG TRÌNH CHUYÊN SÂU MÔN TIN HỌC TRƯỜNG THPT CHUYÊN 16
2.1 CHƯƠNG TRÌNH CHUYÊN SÂU MÔN TIN HỌC KHỐI 10 16
2.1.1 Mục đích 16
2.1.2 Kế hoạch và nội dung dạy học 16
2.2 CHƯƠNG TRÌNH CHUYÊN SÂU MÔN TIN HỌC KHỐI 11 24
2.2.1 Mục đích 24
2.2.2 Kế hoạch và nội dung dạy học 25
2.3 CHƯƠNG TRÌNH CHUYÊN SÂU MÔN TIN HỌC KHỐI 12 36
2.3.1 Mục đích 36
2.3.2 Kế hoạch và nội dung dạy học 36
Trang 22.4.1 Tiến trình dạy và học trên lớp 42
2.4.2 Tiến trình tự học của học sinh 43
CHƯƠNG 3: SỬ DỤNG PHƯƠNG PHÁP NHÁNH CẬN GIẢI MỘT SỐ BÀI TOÁN TIÊU BIỂU 44
3.1 BÀI TOÁN NGƯỜI DU LỊCH 44
3.1.1 Phát biểu bài toán 44
3.1.2 Thuật toán 45
3.1.3 Độ phức tạp của thuật toán 61
3.1.4 Cài đặt thuật toán 64
3.2 BÀI TOÁN XẾP BA LÔ 64
3.2.1 Phát biểu bài toán 64
3.2.2 Thuật toán 65
3.2.3 Độ phức tạp của thuật toán 72
3.2.4 Cài đặt thuật toán 73
3.3 BÀI TOÁN ĐỒ THỊ CON ĐẦY ĐỦ CỰC ĐẠI 73
3.3.1 Phát biểu bài toán 73
3.3.2 Thuật toán 75
3.3.3 Độ phức tạp của thuật toán 78
3.3.4 Cài đặt thuật toán 78
KẾT LUẬN 79
TÀI LIỆU THAM KHẢO 80 QUYẾT ĐỊNH GIAO ĐỀ TÀI LUẬN VĂN THẠC SĨ (BẢN SAO).
Trang 3Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được
ai công bố trong bất kỳ công trình nào khác.
Tác giả
Trần Lương Vương
Trang 4MỞ ĐẦU
1 Tính cấp thiết của đề tài
Chương trình đào tạo và bồi dưỡng học sinh có năng khiếu Toán, Tinhọc bậc Trung học phổ thông đã được thực hiện trong nhiều năm qua Quanhững năm thực hiện nó như là một chu trình đặc biệt gắn với sự trưởng thành
và hoàn thiện một mô hình đào tạo đặc biệt Đó là đào tạo mũi nhọn, đào tạocác thế hệ học sinh có năng khiếu trong lĩnh vực Toán học, Tin học Lớp lớpcác thế hệ thầy và trò đã dũng cảm đi lên, tìm tòi và sáng tạo để tiếp cận vớithế giới hiện đại, cập nhật thông tin và nghiên cứu các phương pháp Gắn vớiviệc đổi mới phương pháp dạy và học của chương trình đào tạo chuyên,ngành Giáo dục và Đào tạo đang tích cực đổi mới phương pháp dạy và học đểđào tạo những thế hệ học sinh giỏi có kết quả cao trong các kỳ thi học sinhgiỏi cấp Quốc gia và giành được nhiều huy chương trong các kỳ thi Olympicquốc tế mà trong đó có kỳ thi Olympic Tin học
Có thể nói, giáo dục mũi nhọn phổ thông đã thu được những thành tựurực rỡ, được Nhà nước đầu tư có hiệu quả, xã hội thừa nhận và bạn bè quốc tếkhâm phục Các đội tuyển quốc gia tham dự các kỳ thi olympic quốc tế có bềdày thành tích mang tính ổn định và có tính kế thừa Đặc biệt, đội tuyển Tinhọc quốc gia tham dự thi Olympic quốc tế đã đạt được nhiều thành tích nỗibật Tuy ra đời muộn hơn hệ chuyên Toán nhưng hệ THPT chuyên Tin học đãsớm khẳng định vị thế của mình, đang trên đà hoàn thiện và phát triển đúnghướng
Để nâng cao chất lượng đào tạo mũi nhọn khối chuyên Tin học trườngTHPT Chuyên Quảng Bình các thầy cô giáo luôn luôn cố gắng đổi mớiphương pháp, xây dựng các chuyên đề dạy và học các thuật toán trong tin học
để nâng cao chất lượng cũng như hiệu quả giáo dục Để giải quyết tốt bài toánthì học sinh cần phải có một số kỹ thuật quan trọng trong việc tiếp cận bài
Trang 5Chia để trị; Quy hoạch động; Tham lam; Nhánh cận; Các thuật toán trên đồthị; Các thuật toán trên Cây… Trong các lớp thuật toán trên tôi chọn đề tài
“Ứng dụng phương pháp Nhánh cận trong dạy và học chuyên tin tại trườngTHPT Chuyên Quảng Bình”
Các bài toán trên thực tế có muôn hình muôn vẻ, không thể đưa ra mộtcách thức chung để tìm giải thuật cho mọi bài toán Chúng ta chỉ khảo sát mộtvài bài toán cụ thể và học cách nghĩ, cách tiếp cận vấn đề, cách thiết kế giảithật Từ đó rèn luyện kỹ năng linh hoạt khi giải các bài toán thực tế
2 Mục tiêu nghiên cứu
Với mục tiêu giáo dục là đào tạo nhân tài cho quê hương và đất nước chonên việc đổi mới phương pháp dạy và học của giáo viên và học sinh khốichuyên tin đang ngày càng được đẩy mạnh Đề tài “Ứng dụng phương phápNhánh cận trong dạy và học chuyên tin tại trường THPT Chuyên QuảngBình” được thực hiện nhằm nâng cao chất lượng và hiệu quả đào tạo Tạođiều kiện tốt nhất cho học sinh giành được các giải cao trong các kỳ thi họcsinh giỏi môn tin học cấp tỉnh, cấp quốc gia và hướng đến có giải trong kỳ thiolympic tin học quốc tế
Đổi mới phương pháp dạy và học của khối chuyên tin tại trường THPTChuyên Quảng Bình Từ đó, giáo viên và học sinh nắm được phương phápnhánh cận thông qua việc khảo sát một số bài toán cụ thể, tiêu biểu Học đượccách nghĩ, cách tiếp cận vấn đề, cách thiết kế giải thuật và rèn luyện kỹ nănglinh hoạt khi giải các bài toán Vận dụng được thuật toán nhánh cận vào giảimột số bài toán cụ thể để giáo viên và học sinh tiếp cận với phương phápnhánh cận một cách nhanh chóng và hiệu quả Nắm bắt được một số kỹ thuậtquan trọng trong việc tiếp cận bài toán, tìm và thiết kế thuật toán
Trang 63 Đối tượng và phạm vi nghiên cứu
Tìm hiểu phương pháp nhánh cận, mục tiêu và kế hoạch dạy học chươngtrình chuyên sâu môn tin học để thực hiện việc đổi mới phương pháp trongviệc dạy học thuật toán tại trường THPT Chuyên Quảng Bình Trên cơ sở đótiến phân tích và thiết kế thuật toán và cài đặt các bài toán tiểu biểu có thể giảiđược bằng phương pháp nhánh cận Các bài toán được cài đặt chương trìnhbằng ngôn ngữ lập trình Free Pascal để minh họa quá trình thực hiện thuậttoán
4 Phương pháp nghiên cứu
Bài toán đặt ra trong thực tế yêu cầu tìm ra một nghiệm thỏa mãn một sốđiều kiện nào đó và nghiệm đó là tốt nhất theo một chỉ tiêu cụ thể, đó là lớpbài toán tối ưu Nghiên cứu lời giải các lớp bài toán tối ưu thuộc về lĩnh vựcquy hoạch toán học
Tuy nhiên cũng cần phải nói rằng trong nhiều trường hợp chúng ta chưathể xây dựng một thuật toán nào thực sự hữu hiệu để giải bài toán tối ưu, màcho tới nay việc tìm nghiệm của chúng vẫn phải dựa trên mô hình liệt kê toàn
bộ các cấu hình có thể và đánh giá, tìm ra cấu hình tốt nhất Việc tìm cấu hìnhtheo cách này còn có tên gọi là vét cạn Chính nhờ kỹ thuật này cùng với sựphát triển của máy tính điện tử mà nhiều bài toán khó đã tìm thấy lời giải
Mô hình thuật toán quay lui là tìm kiếm trên một cây phân cấp Nếu giảthiết rằng mỗi nút nhánh của cây chỉ có 2 nút con thì cây có độ cao n sẽ có tới
2n nút lá, con số này lớn hơn rất nhiều lần so với kích thước dữ liệu đầu vào n.Chính vì vậy mà nếu như ta có thao tác thừa trong việc chọn xi thì sẽ phải trảgiá rất lớn về chi phí thực thi thuật toán bởi quá trình tìm kiếm lòng vòng vônghĩa trong các bước chọn kế tiếp xi + 1, xi + 2, … Khi đó, một vấn đề đặt ra làtrong quá trình liệt kê lời giải ta cần tận dụng những thông tin đã tìm được để
Trang 7kỹ thuật đánh giá nhánh cận trong tiến trình quay lui.
- Thu thập tài liệu: Tìm các cuốn sách, các tài liệu viết về nội dung giảitoán bằng phương pháp nhánh cận Các tài liệu viết về các ngôn ngữ lập trình.Các bài toán tiêu biểu có thể giải được bằng phương pháp nhánh cận Cácphần mềm ứng dụng mô phỏng thuật toán
- Nghiên cứu lý thuyết: Trên cơ sở các tài liệu thu thập được, tiến hànhđọc, phân loại và viết báo cáo
- Cài đặt chương trình: Cài đặt chương trình cho các thuật toán đã đượcxây dựng, thực hiện và kiểm tra chương trình Cài đặt ứng dụng mô phỏngcho các thuật toán
5 Bố cục của đề tài
Chương 1: Phương pháp nhánh cận
Nội dung của chương là trình bày thuật toán đệ quy Phát biểu bài toántối ưu tổ hợp và thuật toán giải bài toán tối ưu tổ hợp bằng phương phápnhánh cận
Chương 2: Chương trình chuyên sâu môn tin học trường THPT chuyên.Nội dung của chương là trình bày phân phối chương trình môn Tin họcdành cho học sinh chuyên tin ở trường THPT chuyên
Chương 3: Sử dụng phương pháp nhánh cận giải một số bài toán tiêubiểu
Nội dung của chương là phát biểu các bài toán, phân tích và thiết kếthuật toán, cài đặt chương trình cho các bài toán
6 Tổng quan tài liệu tham khảo
Khi triển khai nghiên cứu đề tài tôi đã tham khảo các tài liệu về toán rờirạc, lý thuyết đồ thị, cấu trúc dữ liệu và giải thuật, toán ứng dụng, các giảithuật nâng cao và ngôn ngữ lập trình Turbo Pascal
Trang 8CHƯƠNG 1PHƯƠNG PHÁP NHÁNH CẬN
1.1 KỸ THUẬT ĐỆ QUY
1.1.1 Thuật toán quay lui
Thuật toán quay lui dùng để giải bài toán liệt kê các cấu hình Thuật toánnày làm việc theo cách:
- Mỗi cấu hình được xây dựng bằng cách xây dựng từng phần tử
- Mỗi phần tử được chọn bằng cách thử tất cả các khả năng
Giả sử cấu hình hình cần liệt kê có dạng x1, x2, … xn, khi đó thuật toánquay lui sẽ xét tất cả các giá trị x1 có thể nhận, thử cho x1 nhận lần lượt cácgiá trị đó Với mỗi giá trị thử gán cho x1, thuật toán sẽ xét tất cả các giá trị x2
có thể nhận, lại thử cho x2 nhận lần lượt các giá trị đó Với mỗi giá trị thử gáncho x2 lại xét tiếp các khả năng chọn x3, cứ tiếp tục như vậy… Mỗi khi ta tìmđược đầy đủ một cấu hình thì liệt kê ngay cấu hình đó
Từ những phân tích trên ta xây dựng mô hình quay lui như sau:
//Thủ tục này thử cho x[i] nhận lần lượt các giá trị mà nó có thể nhận
«Ghi nhận việc cho x[i] nhận giá trị V (nếu cần)»;
if «x[i] là phần tử cuối cùng trong cấu hình» then
«Thông báo cấu hình tìm được»
Trang 9«Nếu cần, bỏ ghi nhận việc thử x[i] := v để thử giá trịkhác»;
end;
End;
1.1.2 Giải bài toán bằng cách sử dụng Đệ quy quay lui
Bài toán liệt kê các dãy nhị phân:
Biểu diễn dãy nhị phân độ dài N dưới dạng dãy x1…N
Yêu cầu: Viết chương trình liệt kê tất cả dãy nhị phân có độ dài bằng N.
Dữ liệu vào: Cho trong file văn bản NHIPHAN.INP, có cấu trúc như
sau:
- Dòng 1: Ghi số nguyên dương N (2 ≤ N ≤ 100).
Dữ liệu ra: Ghi ra file văn bản NHIPHAN.OUT theo cấu trúc sau:
- Trên mỗi dòng: Ghi một dãy nhị phân có độ dài N tìm được.
Ví dụ:
NHIPHAN.INP NHIPHAN.OUT
001010011100101110111
Trang 10Thuật toán:
Ta sẽ liệt kê các dãy này bằng cách thử dùng các giá trị {0, 1} gáncho xi Với mỗi giá trị gán cho xi lại thử các giá trị có thể gán cho xi+1, …Sau đây là chương trình liệt kê các dãy nhị phân với quy định khuôndạng Input/Output theo yêu cầu của bài toán
For j:='0' to '1' do //Xet cac gia tri j co the gan cho x[i]
Begin //Voi moi gia tri do
X[i]:=j; //Thu dat X[i]
Trang 11Writeln(f,x) //Neu i = N thi in ket qua ra file
Khi N = 3, các lời gọi đệ quy thực hiện thuật toán quay lui có thể
vẽ như cây trong Hình 1-1
Bài toán liệt kê các tập con có K phần tử:
Cho tập A gồm các phần tử {1, 2, …, N} theo thứ tự tăng dần
Trang 12Yêu cầu: Hãy viết chương trình liệt kê tất cả các tập con có k phần tử
theo thứ tự tăng dần là tập con của tập A
Dữ liệu vào: Cho trong file văn bản SUBSET.INP, có cấu trúc như sau:
- Dòng 1: Ghi hai số nguyên dương N và K (2 ≤ N ≤ 100, 1 ≤ K < N).
Dữ liệu ra: Ghi ra file văn bản SUBSET.OUT theo cấu trúc sau:
- Trên mỗi dòng: Ghi một tập con có độ dài k tìm được, các phần tử cách
sắp xếp các dãy này theo thứ tự từ điển ta nhận thấy:
- Tập con đầu tiên (cấu hình khởi tạo) là {1,2,…,k}.
- Tập con cuối cùng (cấu hình kết thúc) là {n - k + 1, n -k +2,…,n}
- Xét một tập con {x1…k} trong đó 1 ≤ x 1 < x 2 < …< x k ≤ n, ta có nhận xét rằng giới hạn trên (giá trị lớn nhất có thể nhận) của x k là n, của x k-1 là n - 1, của x k-2 là n - 2… Tổng quát: giới hạn trên của của x i là n - k + i.
Còn tất nhiên, giới hạn dưới (giá trị nhỏ nhất có thể nhận) của x i là x i -1 + 1.
Trang 13x i -1 + 1 ≤ x i ≤ n - k + i
(Giả thiết rằng có thêm một số x 0 = 0 khi xét công thức trên với i = 1)
Thuật toán quay lui sẽ xét tất cả các cách chọn x 1 từ 1 (= x 0 +1) đến n
-k + 1, với mỗi giá trị đó, xét tiếp tất cả các cách chọn x 2 từ x 1 +1 đến n - k +
2, … cứ như vậy khi chọn được đến x k thì ta có một cấu hình cần liệt kê.
Dưới dây là chương trình liệt kê các tập con k phần tử bằng thuật toán
quay lui với khuôn dạng dữ liệu vào ra theo yêu cầu của bài toán
Trang 141.2.1 Bài toán tối ưu tổ hợp
Trong rất nhiều vấn đề ứng dụng thực tế của tổ hợp, các cấu hình của tổhợp còn được gán cho một giá trị bằng số đánh giá giá trị sử dụng của cấuhình đối với mục đích sử dụng cụ thể nào đó
Trang 15chấp nhận được cấu hình có giá trị sử dụng tốt nhất Các bài toán như vậychúng ta sẽ gọi là bài toán tối ưu tổ hợp.
Dưới dạng tổng quát bài toán tối ưu tổ hợp có thể phát biểu như sau:Tìm cực tiểu (hay cực đại) của hàm f x min(max), với điều kiện
x D , trong đó D là tập hữu hạn các phần tử
Hàm f x được gọi là hàm mục tiêu của bài toán, mỗi phần tử x D
được gọi là một phương án còn tậpDgọi là tập các phương án của bài toán.Tập Dđược mô tả như là tập các cấu hình tổ hợp thỏa mãn một số tínhchất cho trước nào đó
Phương án x* D đem lại giá trị nhỏ nhất (lớn nhất) cho hàm mục tiêu
được gọi là phương án tối ưu, khi đó f* f x * được gọi là giá trị tối ưu củabài toán
Một trong những phương pháp hiển nhiên nhất để giải bài toán tối ưu tổhợp đặt ra là: Trên cơ sở các thuật toán liệt kê tổ hợp ta tiến hành duyệt từngphương án của bài toán, đối với mỗi phương án ta đều tính giá trị hàm mụctiêu tại nó, sau đó so sánh giá trị hàm mục tiêu tại tất cả các phương án đượcliệt kê để tìm ra phương án tối ưu Phương pháp xây dựng theo nguyên tắcnhư vậy có tên gọi là phương pháp duyệt toàn bộ Duyệt toàn bộ là khó có thểthực hiện được ngay cả trên những máy tính điện tử hiện đại nhất
Ví dụ để liệt kê hết 15! = 1307674368000 hoán vị trên máy tính điện tửvới tốc độ tính toán 1 tỷ phép tính một giây, nếu để liệt kê một hoán vị cầnphải làm 100 phép tính, thì ta cần một khoảng thời gian là 130767 giây, lớnhơn 36 giờ Vì vậy cần phải có những biện pháp nhằm hạn chế việc tìm kiếmthì mới có hy vọng giải được các bài toán tối ưu tổ hợp thực tế
Trang 16Tất nhiên để có thể đề ra những biện pháp như vậy cần phải nghiên cứu
kỹ tính chất của bài toán tối ưu tổ hợp cụ thể Trong một số trường hợp cụ thể
ta có thể xây dựng những thuật toán hiệu quả để giải bài toán đặt ra Tuynhiên phải nhấn mạnh rằng trong nhiều trường hợp (ví dụ bài toán người dulịch, bài toán cái túi, bài toán đồ thị con đầy đủ cực đại) chúng ta chưa thể xâydựng được phương pháp hữu hiệu nào khác ngoài phương pháp duyệt toàn bộ.Khi đó, một vấn đề đặt ra là trong quá trình liệt kê lời giải ta cần tận dụng cácthông tin đã tìm được để loại bỏ những phương án chắc chắn không phải tốiưu
Trong phần tiếp theo ta sẽ xét một sơ đồ tìm như vậy để giải các bài toántối ưu tổ hợp với tên gọi là thuật toán nhánh cận
1.2.2 Cách giải một bài toán bằng phương pháp nhánh cận
Ta sẽ mô tả tư tưởng của thuật toán trên mô hình bài toán tối ưu tổ hợptổng quát sau:
Phương pháp nhánh cận được mô tả như sau:
Từ miền D ta phân nhánh thành hai miền D1, D2, trên mỗi nhánh ta xây
dựng hàm g xác định trên các miền D1, D2 để tính giá trị cận dưới
Gọi 1 là cận dưới của nhánh D1, gọi 2 là cận dưới của nhánh D2
So sánh giá trị các cận dưới 1 và 2, Nếu 1 ≤ 2 thì bước tiếp theo sẽ
chọn nhánh D1 để tiếp tục, ngược lại thì chọn nhánh D2
Giả sử tại đây ta chọn nhánh D1 tiếp tục phát triển thuật toán, thì lúc này
ta cũng phân nhánh D1 thành hai nhánh D11 và D12 Tiếp tục dùng hàm g để tính cận dưới cho các nhánh D11 và D12 Tương tự ta gọi Gọi 11 là cận dưới
Trang 17trị cận dưới 11 và 12 để chọn nhánh cần phát triển trong bước tiếp theo Quátrình trên cứ lặp đi lặp lại cho đến khi không thể phân nhánh được nữa, lúcnày ta có phương án tối ưu tạm thời trong quá trình tìm nghiệm của bài toán
Gọi *
là nghiệm tối ưu tạm thời, lúc này thuật toán nhánh cận sẽ tiếp
tục với những nhánh còn lại sao cho giá trị của hàm g tại đó nhỏ hơn *
Thuật toán phân nhánh của phương pháp nhánh cận có thể minh họabằng sơ đồ sau:
(* Phát triển phương án bộ phận (a1, a2, …ak-1) theo thuật toán quay lui
có kiểm tra cận dưới trước khi tiếp tục phát triển phương án*)
D *
Trang 18<Cập nhật kỷ lục>
else
if g a a 1, , ,2 ak ≤ f then
Try(k+1)End;
Trang 19CHƯƠNG TRÌNH CHUYÊN SÂU MÔN TIN HỌC
TRƯỜNG THPT CHUYÊN2.1 CHƯƠNG TRÌNH CHUYÊN SÂU MÔN TIN HỌC KHỐI 10
- Trang bị kiến thức cơ bản về một số thuật toán, giải thuật
- Trang bị một số kiến thức cơ bản về ngôn ngữ lập trình
+ Mục tiêu về kĩ năng:
- Thực hiện được một số thuật toán cơ bản
- Vận dụng dụng được một số thuật toán cơ bản để giải một số bài toán
- Bước đầu sử dụng được ngôn ngữ lập trình để cài đặt được một số thuậttoán, biểu diễn dữ liệu
+ Mục tiêu về thái độ:
- Có tác phong suy nghĩ và làm việc hợp lý, khoa học và chính xác
- Tự giác, tích cực trong học tập
2.1.2 Kế hoạch và nội dung dạy học
Chương trình tin học lớp 10 chuyên tin gồm 123 tiết, trong đó có 70 tiếtdành cho nội dung cơ bản và 53 tiết dành cho nội dung chuyên sâu
- Nội dung cơ bản môn Tin học cho các trường THPT, được qui địnhtrong chương trình môn Tin học, lớp 10, ban hành kèm theo Quyết định số
Trang 2016/2006/QĐ-BGDĐT ngày 05 tháng 5 năm2006 của Bộ trưởng Bộ Giáo dục
1 Khái niệm chương trình
Trang 21 Với mỗi biến có kiểu dữ liệu trên, biếtcách nhận giá trị (từ bàn phím và dùnglệnh gán) và cách viết giá trị ra màn hình
Kĩ năng
Biết chọn kiểu dữ liệu thích hợp cho cácbiến cần khai báo
Biết dùng một số hàm chuẩn và thủ tụcchuẩn viết một số chương trình dùng cáckiểu dữ liệu trên
Trang 22TT Nội dung (20 tiết) Mức độ cần đạt
6 Tổ chức rẽ nhánh
Kiến thức
Hiểu được các câu lệnh này dùng để thểhiện các tình huống phải biện luận khi giảicác bài toán
Biết cách viết đúng các lệnh về mặt cúpháp
Kĩ năng
Sử dụng được các lệnh để viết các đoạnchương trình có biện luận cấu trúc rẽnhánh trong mô tả thuật toán của môt sốbài toán đơn giản
Viết được các lệnh rẽ nhánh khuyết, rẽnhánh đầy đủ và áp dụng để thể hiện đượcthuật toán của một số bài toán đơn giản
Trang 23Biết cách khai báo biến kiểu bản ghi.
Biết truy cập trực tiếp các trường và truycập bằng lệnh With Do
Kỹ năng
Sử dụng được loại biến bản ghi một cáchlinh hoạt
Trang 24TT Nội dung (20 tiết) Mức độ cần đạt
10 Kiểu tập hợp
Kiến thức
Biết cách khai báo dữ liệu kiểu tập hợpvới các hạn chế so với tập hợp dùngtrong Toán học
Biết các hàm chuẩn và thủ tục chuẩnđối với kiểu tập hợp
Kỹ năng
Sử dụng được kiểu tập hợp thể hiện một
số đối tượng trong một số bài toán
Biết các lệnh khai báo tệp định kiểu vàtệp văn bản
Kĩ năng
Biết các thao tác tệp, chủ yếu là tệpvăn bản
Trang 2512 Chương trình con
Kiến thức
Biết sự cần thiết của việc tổ chứcchương trình con khi viết chương trình-chia để trị
Biết sự phân loại chương trình con: thủ tục vàhàm
Biết cấu trúc một chương trình con
1 Khái niệm bài toán và
Biết các yếu tố để đánh giá một thuật toán tốt
Kỹ năng
Đánh giá được độ phức tạp của một sốthuật toán cơ bản
Trang 26TT Nội dung (33 tiết) Mức độ cần đạt
3
Một số thuật toán duyệt: tổ
hợp, dãy nhị phân, hoán
vị, phân chia số
Kiến thức
Biết các thuật toán duyệt tuần tự và duyệt
đệ quy các tổ hợp, dãy nhị phân, hoán vị,phân chia số
Biết một số thuật toán tiêu biểu: tìm kiếmnhị phân, luỹ thừa nhanh
Kỹ năng
Vận dụng được để giải một số bài toánkhác và cài đặt được trên máy tính
Trang 27Cài đặt được các cách biểu diễn đồ thị.
7 Bài toán tìm đường đi
Trang 28+ Mục tiêu về kiến thức:
- Mở rộng và nâng cao hệ thống chuẩn, cơ bản của môn Tin học lớp 11THPT
- Tiếp tục mở rộng và nâng cao các nội dung các chuyên đề đã có ở lớp
10 chuyên môn Tin học trường THPT chuyên
- Trang bị một số chiến lược xây dựng thuật toán: Quy hoạch động, Líthuyết trò chơi,
- Có ý thức xây dựng các thuật toán tốt cho các bài toán cụ thể
- Có ý thức rèn luyện kĩ năng lập trình chuyên nghiệp, giải các bài toánmột cách hiệu quả
2.2.2 Kế hoạch và nội dung dạy học
Chương trình tin học lớp 11 chuyên tin gồm 87,5 tiết, trong đó có 52,5tiết dành cho nội dung cơ bản và 35 tiết dành cho nội dung chuyên sâu
- Nội dung cơ bản môn Tin học cho các trường THPT, được qui định trong chương trình môn Tin học, lớp 11, ban hành kèm theo Quyết định số 16/2006/QĐ-BGDĐT ngày 05 tháng 5 năm2006 của Bộ trưởng Bộ Giáo dục
và Đào tạo
Trang 29động; Lý thuyết trò chơi; Duyệt toàn bộ nâng cao; Bài toán luồng cực đạitrong mạng và ứng dụng; Bài toán lập lịch.
+ Nội dung chuyên sâu chuyên đề Quy hoạch động:
1 Bài toán có thể giải bằng
thuật toán QHĐ
Kiến thức
Biết nguyên lí tối ưu, đặc trưng các bàitoán có thể giải bằng thuật toán QHĐ, đặctrưng chính của thuật toán QHĐ
Phân biệt sự giống và khác nhau căn bảngiữa thuật toán QHĐ và Đệ quy
Hiểu các khái niệm cơ bản: cở sở, bảng phương
án, công thức truy hồi, các truy vết để tìm nghiệm
Trang 30TT Nội dung (15 tiết) Mức độ cần đạt
- Bài toán xâu con chung dài
nhất;
- Bài toán biến đổi xâu;
- Bài toán cái túi;
- Bài toán lũy thừa một số;
- Bài toán nhân các ma trận;
- Bài toán chia đa giác thành
các tam giác;
Cài đặt được chương trình và thử nghiệmchương trình với các bộ dữ liệu khác nhau
+ Nội dung chuyên sâu chuyên đề Lý thuyết trò chơi:
1
Khái niệm bài toán trò
chơi Phân loại Một số bài
toán bài toán trò chơi kinh
điển
Kiến thức
Hiểu khái niệm về trò chơi đối kháng vàkhông đối kháng, đặc trưng của bài toán tròchơi, khái niệm chiến lược điều khiển, hàmmục tiêu
Biết các loại yêu cầu thường gặp đối vớibài toán trò chơi
Biết các bài toán trò chơi kinh điển: cờ ca
rô, trò chơi Nim, trò chơi trên băng giấy vàtrên bàn cờ, trò chơi nhận dạng cấu hình
Kỹ năng
Biết cách lập trình tìm nước đi hợp lệ,nước đi tối ưu cục bộ
2 Trò chơi trên đồ thị Kiến thức
Biết cách xây dựng mô hình toán học trên
Trang 31cơ sở lý thuyết đồ thị.
Phân biệt hai loại mô hình: dạng cây vàdạng có chu trình tương ứng với các trườnghợp tài nguyên hữu hạn và tài nguyên vôhạn;
Giới thiệu hàm Grandi và ứng dụng
Kỹ năng
Biết cách xây dựng mô hình toán học vàcách tổ chức dữ liệu cho một số bài toán tròchơi kinh điển
Tìm được tập đỉnh thắng, thua, hoà
Lập trình tổ chức chơi giữa người và máy,xây dựng được mô hình trí tuệ nhân tạođơn giản
Biết cách kiểm tra tính chuẩn mực của dữliệu vào
3 Kỹ thuật bảng phương án. Kiến thức
Giới thiệu khái niệm bảng phương án và
kỹ thuật dữ liệu hoá chiến lược điều khiể;xác định vai trò bảng phương án trong cácbài toán trò chơi nói riêng và trong các bàitoán điều khiển nói chung
Trình bày các loại bảng phương án vàcách khởi tạo, lưu trữ, khai thác ứng dụng;
Xác định quan hệ giữa bảng phương án
và quy hoạch động trong một số mô hìnhtrò chơi
Kỹ năng
Trang 32TT Nội dung (15 tiết) Mức độ cần đạt
Biết cách ứng dụng bảng phương án tronghai chế độ:
Biết cách ứng dụng bảng phương án giảiquyết một số bài toán có lô gíc phức tạp
4 Trò chơi và trí tuệ nhân
tạo
Kiến thức
Giới thiệu về suy diễn, biểu diễn các suydiễn, khái niệm lập trình lôgic và ứng dụngtrong các bài toán trò chơi
Giới thiệu một số phương pháp nâng caohiệu quả chương trình bằng kỹ thuật lậptrình nhiều giai đoạn
Kỹ năng
Biết cách dùng máy tính để hỗ trợ việcxây dựng một chương trình hiệu quả vàđơn giản
Trang 33TT Nội dung (5 tiết) Mức độ cần đạt
Hiểu được lược đồ tổng quát của mộtthuật toán quay lui
2
Một số bài toán thường gặp
được giải bằng duyệt toàn
- Bài toán xếp 8 quân hậu;
- Bài toán mã đi tuần
Kiến thức
Hiểu cách xác định các bước xây dựngvectơ ứng cử viên và kiểm tra để tìmnghiệm của mỗi bài toán cụ thể
Trang 34TT Nội dung (5 tiết) Mức độ cần đạt
1 Biểu diễn đồ thị, duyệt đồ
Cài đặt được các thuật toán BFS và DFS
2 Bài toán luồng cực đại
Hiểu các nội dung:
- Lát cắt và đường tăng luồng
- Định lý về luồng cực đại và lát cắthẹp nhất
Kĩ năng
Vận dụng được định lí trong các bài toán
cụ thể
4 Thuật toán Ford - Fulkerson
tìm luồng cực đại trong mạng
Kiến thức
Hiểu các nội dung:
- Mô tả thuật toán
- Về hiệu quả của thuật toán
Trang 35- Thuật toán cải biên của Edmond-Karp
Kĩ năng
Cài đặt tốt chương trình cho thuật toán
5 Một số bài toán luồng tổng
quát
Kiến thức
Hiểu các nội dung:
- Mạng với nhiều điểm phát và điểm thu
- Bài toán với khả năng thông qua củacác cung và các đỉnh
- Mạng trong đó khả năng thông quacủa mỗi cung bị chặn hai phía
Hiểu một số bài toán:
- Bài toán ghép cặp trên đồ thị hai phía
- Bài toán về hệ thống đại diện chung
- Bài toán lập lịch
Kĩ năng
Cài đặt được chương trình cho các thuậttoán giải các bài toán
+ Nội dung chuyên sâu chuyên đề Bài toán lập lịch:
1 Giới thiệu bài toán lập lịch
1.1 Các thành phần của bài
toán lập lịch
Kiến thức
Hiểu các khái niệm về:
Công việc: Trình tự thực hiện, Ngắt quãng,
Trang 36TT Nội dung (5 tiết) Mức độ cần đạt
Thời điểm sẵn sàng, Thời gian xử lý, Thờiđiểm hoàn thành, Thời gian trôi, Thời gianchờ đợi, Thời hạn hoàn thành, Thời gianlệch, Khoảng trễ, Độ trễ, Đúng hạn
Môi trường máy: Máy, Máy đơn, Máy song song, Xưởng công việc (Job Shop), Xưởng dây chuyền (Flow Shop), Xưởng
mở (Open Shop).
Hàm mục tiêu: Thời điểm hoàn thành lịch
(Makespan), Tổng (có trọng số) thời gian
xử lý (Total (Weighted) Completion Time),Thời gian trôi trung bình (có trọng số)((Weighted) Mean Flow Time), Thời gianchờ đợi trung bình (Mean Waiting Time),Khoảng trễ (Lateness), Độ trễ, Đúng hạn,Tiêu chuẩn tổng quát, Qui dẫn giữa các bàitoán lập lịch
1.2 Ký pháp Graham ||
Kiến thức
Hiểu biết các khái niệm:
- Trường mô tả môi trường máy
- Trường mô tả các ràng buộc vàthuộc tính của công việc
- Trường mô tả tiêu chuẩn tối ưu
2 Một số phương pháp giải
cơ bản
2.1 Giải thuật tham lam Kiến thức
Hiểu biết các thuật toán:
Trang 37- Thời gian xử lý lớn nhất (LongestProcessing Time, viết tắt là LPT)
- Thời gian xử lý nhỏ nhất (ShortestProcessing Time, viết tắt là SPT)
- Thời gian xử lý có trọng số nhỏ nhất(Weighted Shortest Processing Time -WSPT)
- Thời hạn hoàn thành sớm nhất (EarliestDue Date- EDD)
- Thời gian lệch nhỏ nhất (Minimum SlackTime - MST)
- Lập luận hoán đổi
- Các ví dụ ứng dụng: Bài toán 1| | C j
Bài toán 1||Lmax Bài toán 1|r j , pmtn|Lmax
Bài toán 1|r j , pmtn|C j Bài toán 1|prec|hmax
- Thuật toán Lawler Thuật toán Johnson
giải bài toán F2||Cmax
Kĩ năng
Cài đặt bảng chương trình cho các thuậttoán trên
2.2 Qui hoạch động Kiến thức
Hiểu biết các thuật toán:
- Bài toán lập lịch cực đại lợi nhuận 1| |
Trang 38TT Nội dung (5 tiết) Mức độ cần đạt
toán trên
2.3 Qui về bài toán tối ưu
trên đồ thị
Kiến thức
Hiểu biết các nội dung:
- Bài toán lập lịch thi công (PERT)
- Qui dẫn bài toán R||C j về bài toán ghépcặp trên đồ thị hai phía
Hiểu biết các nội dung:
- Sơ đồ chung của thuật toán nhánh cận
- Ví dụ áp dụng: Bài toán 1|r i |Lmax
- Tiếp tục mở rộng và nâng cao các nội dung các chuyên đề đã có ở lớp
10, 11 chuyên, môn Tin học trường THPT chuyên
Trang 39hình học; Độ phức tạp của bài toán; Các cấu trúc dữ liệu nâng cao; Các cáchtiếp cận giải bài toán NP-khó; Các thuật toán tiến hóa.
- Có ý thức xây dựng các thuật toán tốt cho các bài toán cụ thể
- Có ý thức rèn luyện kĩ năng lập trình chuyên nghiệp, giải các bài toánmột cách hiệu quả
2.3.2 Kế hoạch và nội dung dạy học
Chương trình tin học lớp 12 chuyên tin gồm 87,5 tiết, trong đó có 52,5tiết dành cho nội dung cơ bản và 35 tiết dành cho nội dung chuyên sâu
- Nội dung cơ bản môn Tin học cho các trường THPT, được qui định trong chương trình môn Tin học, lớp 12, ban hành kèm theo Quyết định số 16/2006/QĐ-BGDĐT ngày 05 tháng 5 năm 2006 của Bộ trưởng Bộ Giáo dục
và Đào tạo
- Nội dung chuyên sâu bao gồm bốn chuyên đề:
Tính toán hình học;
Độ phức tạp của bải toán;
Cấu trúc dữ liệu nâng cao;
Các cách tiếp cận bài toán NP-Khó
+ Nội dung chuyên sâu chuyên đề Tính toán hình học:
Trang 40TT Nội dung (12 tiết) Mức độ cần đạt
1 Điểm, đoạn thẳng, giao các
Kĩ năng
Xác định được kiểu dữ liệu dùng trong
xử lí đa giác
Cài đặt được các hàm, thủ tục tương ứng
2 Đường khép kín đơn
Kiến thức
Biết cách vẽ đường khép kín đơn đi qua
n điểm cho trước
Kĩ năng
Tính diện tích của đa giác
Cài đặt được các thủ tục chuẩn
4 Bao lồi Thuật toán bọc gói Kiến thức
Hiểu được định nghĩa bao lồi và trườnghợp tối thiểu bao lồi là một tam giác, tối
đa là đa giác lồi gồm đúng n điểm
Hiểu được thuật toán bọc gói