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

Ứng dụng phương pháp Nhánh cận trong dạy và học chuyên tin tại trường THPT Chuyên Quảng Bình (TT)

24 405 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 24
Dung lượng 206,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Để giải quyết tốt bài toán thì 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 toán và tìm thuật toán.. Córất nhiều lớp thuật toán khác nhau như: Vét cạn; Chia để

Trang 1

MỞ ĐẦ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ếuToán, Tin học bậc Trung học phổ thông đã được thực hiện trongnhiều năm qua Qua nhữ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ạo các thế hệ học sinh có năngkhiếu trong lĩnh vực Toán học, Tin học Lớp lớp cá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ới thế giớihiệ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ạochuyên, ngành Giáo dục và Đào tạo đang tích cực đổi mới phươngpháp dạy và học để đào tạo những thế hệ học sinh giỏi có kết quả caotrong các kỳ thi học sinh giỏi cấp Quốc gia và giành được nhiều huychương trong các kỳ thi Olympic quốc tế mà trong đó có kỳ thiOlympic Tin học

Có thể nói, giáo dục mũi nhọn phổ thông đã thu được nhữngthành tựu rực rỡ, được Nhà nước đầu tư có hiệu quả, xã hội thừanhậ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 Tin học quốc gia tham dự thiOlympic quốc tế đã đạt được nhiều thành tích nỗi bật Tuy ra đờimuộn hơn hệ chuyên Toán nhưng hệ THPT chuyên Tin học đã sớmkhẳng định vị thế của mình, đang trên đà hoàn thiện và phát triểnđúng hướng

Để nâng cao chất lượng đào tạo mũi nhọn khối chuyên Tin họctrường THPT Chuyên Quảng Bình các thầy cô giáo luôn luôn cố

Trang 2

gắng đổi mới phương pháp, xây dựng các chuyên đề dạy và học cácthuậ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án thì 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 toán và tìm thuật toán Córất nhiều lớp thuật toán khác nhau như: Vét cạn; Chia để trị; Quyhoạch động; Tham lam; Nhánh cận; Các thuật toán trên đồ thị; Cácthuậ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ạitrường THPT 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ột cá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ột vài bài toán cụ thể và học cách nghĩ, cáchtiếp cận vấn đề, cách thiết kế giải thật Từ đó rèn luyện kỹ năng linhhoạ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 cho nê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ối chuyên tin đang ngày càng được đẩy mạnh Đề tài

“Ứng dụng phương pháp Nhánh cận trong dạy và học chuyên tin tạitrường THPT Chuyên Quảng Bình” được thực hiện nhằm nâng caochất lượng và hiệu quả đào tạo Tạo điều kiện tốt nhất cho học sinhgiành được các giải cao trong các kỳ thi học sinh giỏi môn tin họccấp tỉnh, cấp quốc gia và hướng đến có giải trong kỳ thi olympic tinhọc quốc tế

Đổi mới phương pháp dạy và học của khối chuyên tin tạitrường THPT Chuyên Quảng Bình Từ đó, giáo viên và học sinh nắmđược phương pháp nhánh cận thông qua việc khảo sát một số bàitoán cụ thể, tiêu biểu Học được cách nghĩ, cách tiếp cận vấn đề,

2

Trang 3

cách thiết kế giải thuật và rèn luyện kỹ năng linh hoạt khi giải các bàitoán Vận dụng được thuật toán nhánh cận vào giải mộ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áp nhánh cậnmộ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

3 Đố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ạyhọc chương trình chuyên sâu môn tin học để thực hiện việc đổi mớiphương pháp trong việc dạy học thuật toán tại trường THPT ChuyênQuả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ánhcận Các bài toán được cài đặt chương trình bằng ngôn ngữ lập trìnhFree Pascal để minh họa quá trình thực hiện thuật toá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ỏamã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ớp bài toán tối ưu Nghiên cứu lời giải các lớp bàitoán tối ưu thuộc về lĩnh vực quy 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ợpchúng ta chưa thể 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ẫnphả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ình theo cách này còn có têngọi là vét cạn Chính nhờ kỹ thuật này cùng với sự phát triển củamá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âncấ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

Trang 4

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 trongcá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 để loại bỏ sớm những phương án chắc chắn không phải tối ưu.

Kỹ thuật đó gọi là kỹ thuật đánh giá nhánh cận trong tiến trình quaylui

- 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ộidung giải toán bằng phương pháp nhánh cận Các tài liệu viết về cácngôn ngữ lập trình Các bài toán tiêu biểu có thể giải được bằngphương pháp nhánh cận Các phần mềm ứng dụng mô phỏng thuậttoá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

đã được xây dựng, thực hiện và kiểm tra chương trình Cài đặt ứngdụng mô phỏng cho 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ểubài toán tối ưu tổ hợp và thuật toán giải bài toán tối ưu tổ hợp bằngphương pháp nhánh cận

Chương 2: Chương trình chuyên sâu môn tin học trườngTHPT chuyên

Nội dung của chương là trình bày phân phối chương trình mônTin học dành cho học sinh chuyên tin ở trường THPT chuyên

4

Trang 5

Chương 3: Sử dụng phương pháp nhánh cận giải một số bàitoán tiêu biể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ời rạ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ải thuật nâng cao và ngôn ngữ lập trình TurboPascal

Trang 6

CHƯƠNG 1 PHƯƠ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án nà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án quay 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ác giá 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ácgiá trị đó Với mỗi giá trị thử gán cho x2 lại xét tiếp các khả năngchọn x3, cứ tiếp tục như vậy… Mỗi khi ta tìm được đầy đủ một cấuhì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»

else

6

Trang 7

Try(i + 1); //Gọi đệ quy để chọn tiếp x[i+1] «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 1.2 PHƯƠNG PHÁP NHÁNH CẬN

1.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ấuhì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ấu hình đối với mục đích sử dụng cụ thể nào đó Khi đó xuất hiện bài toán: Hãy lựa chọn trong số các cấu hình

tổ hợp chấp nhận được cấu hình có giá trị sử dụng tốt nhất Các bàitoán như vậy chúng ta sẽ gọi là bài toán tối ưu tổ hợp

Dạng tổng quát bài toán tối ưu tổ hợp 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 áncủa bài toán

TậpDđược mô tả như là tập các cấu hình tổ hợp thỏa mãnmột số tính chấ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àmmụ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ủa bài toá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ợp tổng quát sau:

Trang 8

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 của nhánh D11, gọi12 là cận dưới của

nhánh D12 Lại tiếp tục so sách các giá trị 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úc nà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

8

Trang 10

CHƯƠNG 2 CHƯƠNG TRÌNH CHUYÊN SÂU MÔN TIN HỌC

TRƯỜNG THPT CHUYÊN 2.1 CHƯƠNG TRÌNH CHUYÊN SÂU MÔN TIN HỌC KHỐI 10 2.1.1 Mục đích

2.1.2 Kế hoạch và nội dung dạy học

2.2 CHƯƠNG TRÌNH CHUYÊN SÂU MÔN TIN HỌC KHỐI 11 2.2.1 Mục đích

2.2.2 Kế hoạch và nội dung dạy học

2.3 CHƯƠNG TRÌNH CHUYÊN SÂU MÔN TIN HỌC KHỐI 12 2.3.1 Mục đích

2.3.2 Kế hoạch và nội dung dạy học

2.4 ĐỊNH HƯỚNG PHƯƠNG PHÁP DẠY HỌC CHUYÊN ĐỀ

“PHƯƠNG PHÁP NHÁNH CẬN”

2.4.1 Tiến trình dạy và học trên lớp

Với chuyên đề thì giáo viên trình bày cho học sinh trongkhoảng thời lượng là 8 tiết (02 tiết dạy lý thuyết, 06 tiết cho học sinhgiải các bài toán được trình bày trong chương 3)

Hai tiết lý thuyết giáo viên nhắc lại thuật toán đệ quy quay lui,trình bày phương pháp nhánh cận Giáo viên cần đưa ra ví dụ cụ thể

để học sinh năm bắt được kiến thức thông qua ví dụ

Khi dạy học sinh lập trình giải các bài toán đưa ra ở chương 3giáo viên cho học sinh thực hiện quy trình như sau:

- Phát biểu bài toán;

- Học sinh xây dựng thuật toán và cài đặt chương trình trongmột lượng thời gian cụ thể (do giáo viên quy định theo trình độ họcsinh);

10

Trang 11

- Giáo viên chấm bài của học sinh bằng cách tạo ra những bộ

dữ liệu vào và đối sánh kết quả giữa giáo viên và học sinh;

- Nhận xét bài làm của học sinh sau đó trình bày thuật toánnhánh cận để giải bài toán đặt ra

- Yêu cầu học sinh cài đặt lại chương trình và tiếp tục chấmkiểm tra kết quả của học sinh sau khi hoàn thành chương trình

2.4.2 Tiến trình tự học của học sinh

Ngoài việc học ở lớp học sinh còn có thể tự học phương phápnhánh cận thông qua tài liệu và đánh giá chương trình của mình bằngcác bộ dữ liệu vào ra của giáo viên hoặc tự tạo ra các bộ dữ liệu đểđối sánh kết quả khi thực hiện chương trình của mình và chươngtrình mẫu của giáo viên

Kiểm tra bằng các bộ dữ liệu vào ra của giáo viên: Với các bộ

dữ liệu vào giáo viên đã tạo sẵn, học sinh chạy chương trình củamình để sinh các bộ dữ liệu ra tương ứng So sánh các bộ dữ liệu racủa mình với các bộ dữ liệu ra của giáo viên, nếu kết quả giống nhauthì chương trình cài đặt hoàn thành, còn nếu một bộ dữ liệu ra nào đókhông giống thì cần cải tiến lại chương trình

Học sinh cũng có thể tạo ra các bộ dữ liệu vào theo yêu cầucủa bài toán, thực hiện chương trình của mình để tạo các bộ dữ liệu

ra, đồng thời cũng thực hiện chương trình mẫu của giáo viên để tạocác bộ dữ liệu ra tương ứng Đối sánh kết quả để kiểm chứng chươngtrình của mình cài đặt

Trang 12

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

3.1 BÀI TOÁN NGƯỜI DU LỊCH

3.1.1 Phát biểu bài toán

Cho n thành phố được đánh số từ 1 đến n và m tuyến đường

giao thông hai chiều nối giữa các thành phố đó Mạng lưới giao

thông được cho bởi bảng C cấp n×n, C[i, j] = C[j, i] là chi phí phải trả khi đi đoạn đường trực tiếp từ thành phố i đến thành phố j Giả thiết rằng C[i, i] = 0 i, C[i, j] = +  nếu không có đường đi trực tiếp từ thành phố i đến thành phố j.

Một người khách du lịch xuất phát từ thành phố 1, muốn đithăm tất cả các thành phố còn lại mỗi thành phố đúng một lần vàcuối cùng quay lại thành phố 1

Yêu cầu: Hãy chỉ ra một hành trình du lịch sao cho chi phí

phải trả là ít nhất

3.1.2 Thuật toán

Trong bài toán người du lịch khi tiến hành tìm kiếm lời giải ta

sẽ phân tập hành trình thành hai tập con: Một tập chứa cạnh (i,j) vàtập không chứa cạnh này Ta gọi việc đó là phân nhánh, mỗi tập connói trên gọi là nhánh

Việc phân nhánh sẽ được dựa trên qui tắc hợp lý nào đó chophép ta rút ngắn quá trình tìm kiếm phương án tối ưu Sau khi phânnhánh ta sẽ tính cận dưới của hàm mục tiêu trong mỗi tập con nóitrên Việc tìm kiếm sẽ tìm trên tập con có cận dưới nhỏ hơn Thủ tục

sẽ tiếp tục cho đến khi thu được hành trình đầy đủ, tức là phương áncủa bài toán người du lịch Sau đó ta chỉ cần xét những tập con có

12

Trang 13

cận dưới nhỏ hơn giá trị hàm mục tiêu tìm được.

Kỹ thuật tính cận dưới dựa trên thủ tục rút gọn sau:

ở mỗi dòng (cột) gọi là hằng số rút gọn dòng (cột), ma trận thu đượcgọi là ma trận rút gọn

Thủ tục rút gọn:

+ Đầu vào : Ma trận chi phí C = (cij)

+ Đầu ra : Ma trận rút gọn và tổng hằng số rút gọn Sum + Thuật toán:

i) Khởi tạo :

Sum := 0 ; (ii) Rút gọn dòng :

Với mỗi dòng r từ 1 đến n của ma trận C thực hiện:

- Tìm phần tử crj =  nhỏ nhất trên dòng

- Trừ tất cả các phần tử trên dòng đi một lượng 

- Cộng dồn : Sum := Sum + (iii) Rút gọn cột :

Với mỗi cột c từ 1 đến n của ma trận C thực hiện :

- Tìm phần tử cic =  nhỏ nhất trên cột

Trang 14

- Trừ tất cả các phần tử trên cột đi một lượng .

(i) Khởi tạo :  := - ;

(ii) Với mỗi cặp (i,j) thoả cij = 0 (i=1, ,k; j=1, ,k) thực hiện

- Xác định minr = min{cih : h  j }

mins = min{chj : h  i }

- Nếu  < minr + mins , đặt

 := minr + mins; r := i; s := j;

3.1.3 Độ phức tạp của thuật toán

Gọi T(n) là độ phức tạp tính toán thời gian của bài toán TSPBài toán thực hiện N-2 lệnh gọi TSP Mỗi TSP có hai thủ tụcchính là Reduce và BestEdge

Vì 2 thủ tục này thực hiện ở nhánh khác nhau Do vậy, độphức tạp tính toán thời gian của mỗi TSP là:

Áp dụng công thức max, ta có:

TTSP = Max(TReduce, TBestEdge) = Max(O(n2), O(n3)) = O(n3).Vậy độ phức tạp tính toán thời gian của bài toán TSP là:O(K * N * N3) K là số lần có thể phân nhánh, 0 <= K <= N2

3.1.4 Cài đặt thuật toán

Chương trình được cài đặt hoàn thành bằng ngôn ngữ lập trìnhFree Pascal bao gồm file chương trình nguồn (TOURISM.PAS), file

14

Ngày đăng: 06/07/2015, 10:25

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w