1
SỞ GIÁO DỤC VÀ ĐÀO TẠO NGHỆ AN
TRƯỜNG THPT THÁI HÒA
SÁNG KIẾN KINH NGHIỆM
SỬ DỤNG PHƯƠNG PHÁP CHIA ĐỂ TRỊ ĐỂ GIẢI
MỘT SỐ BÀI TOÁN
Lĩnh vực : Tin học
Tên tác giả : Châu Đức Vinh
Tổ : Toán Tin
Điện thoại : 0942 910 226
Năm học: 2020- 2021
2
A. PHẦN MỞ ĐẦU
I. Lí do chọn đề tài
Hin nay i liệu dạng chuyên đề nâng cao phục vụ cho việc bồi dưỡng hc
sinh gii môn Tin học chưa thật sự đầy đ tổng quát, đặc biệt những
chuyên đề khá mới và rất khó, giờ đã được đưa vào các đề thi học sinh giỏi tỉnh
như: Chia để trị, Quy hoạch động, …
Từ thực tiễn ging dạy tin tại trường THPT i thấy rằng để đạt hiệu qucao
trong bồi dưỡng học sinh giỏi, cần cách thiết kế i ging cho phù hợp với ni
dung kiến thức dựa tn i liệu chuyên đề đầy đủ ràng từ thuyết đến i
tập theo đúng xu thế chung của các thi học sinh giỏi các cấp hiện nay và
trong tương lai, để mang lại thành tích cao cho đội tuyển học sinh gii trong các kì
thi.
Xuất phát tcơ sở trên, i đã chọn đề i “Sử dụng phương pháp chia để
trị để giải một số bài toán”, sáng kiến này sẽ giúp học sinh ca trường THPT Thái
Hòa vn dụng các kiến thức vào làm tốt các dạng đề thi học sinh giỏi tỉnh liên
quan đến phương pháp chia để trị, phục vụ cho việc bồi dưỡng học sinh giỏi của
trường.
II. Mc đích của đề tài
- Mục tiêu chính của đề i là nghiên cứu vphương pháp “Chia để trị” để
gii một số bài toán.
- Giúp cho việc ôn thi học sinh giỏi đạt kết quả cao
- Tạo ra nguồn tài liệu tham khảo vphương pháp cũng như thuật tn nhằm
hỗ trợ cho học sinh, giáo viên dạy bồi dưỡng học sinh giỏi tin học.
III. Đối tượng và phạm vi nghiên cứu
1. Đối tượng nghiên cứu
- Sử dụng phương pháp chia để trị và một số bài toán
- Học sinh giỏi tin khối 11, giáo viên giảng dạy học sinh giỏi tin 11
2. Phạm vi nghiên cu
Sử dụng phương pháp chia để trđể giải một số bài toán bồi dưỡng học sinh
giỏi tin học 11.
IV. Phương pháp nghiên cứu
- Thu thập, phân tích các i liệu thông tin liên quan đến phương pháp
chia để trị.
- Lựa chọn một số bài toán để sử dụng phương pháp chia để trị.
3
- Thiết kế các bài toán đã được lựa chọn trong chương trình tin học 11 để bồi
dưỡng học sinh giỏi.
- Dùng ngôn ngữ lp trình Free Pascal để cài đặt i tn chạy thử
nghiệm trên một số bộ test để đánh giá kết quả.
B. NỘI DUNG SÁNG KIẾN KINH NGHIỆM
I. Cơ sở lý lun:
- Cách tiếp cận về tri thức mới, hin đại của học sinh trong trường THPT
mt số trường thuộc trung du miền núi nói chung trong đó THPT Thái Hòa i
riêng rất khó khăn vì: Thứ nhất thiếu i liu chuyên u về bồi dưỡng học
sinh giỏi, thứ hai các em hầu như chưa quan tâm lắm đến lập trình bởi lnó khó.
- Vì vậy tôi đã tham khảo tài liệu để viết đề i về phương pháp chia để trị t
thuyết đến thuật toán một số i toán cho các em vận dụng để thực hành
trên y tính. Tđó các em làm tốt các đbài dạng tương tự trong các kì thi
chọn học sinh giỏi tin học.
II. Nội dung và giải pháp thực hiện
1. Khái niệm:
Chia để tr một tư tưởng rất phổ biến trong cuộc sống và được áp dụng rất
hiu quả trong Tin học. tưởng bản của phương pháp chia để trNgười ta
phân i toán thành các i toán con, các bài tn con li tiếp tục được pn thành
các bài toán con nhỏ hơn, cứ tiếp tục như thế cho đến khi ta nhận được i toán
con đã thuật giải hoặc thể dễ ng đưa ra thuật giải. Sau đó kết hợp nghiệm
của các bài toán con để nhận được nghiệm của i toán con ln hơn để cuối cùng
nhận được nghim ca bài toán cần giải. Thông thường các i toán con được phân
chia là cùng dạng vi bài toán ban đầu chỉ có cỡ của chúng là nhỏ hơn.
2. Sơ đồ chung:
Các bài toán thể gii quyết bằng phương pháp chia để trị tng qua 3
bước:
Bước 1: Chia: Chia bài toán cần giải thành một loạt các bài toán con độc lập.
Tại bước này ti toán ban đầu sđược chia thành các i toán con cho
đến khi kng thể chia nhỏ được nữa. c bài toán con sẽ trở tnh 1 bước nhỏ
trong việc gii quyết bài toán lớn.
Bước 2. Trị: Giải quyết bài toán con một cách đệ quy.
Tại bước y ta sẽ phải tìm phương án để giải quyết cho bài toán con một
cách cụ thể.
Bước 3. Kết hợp lời giải li để suy ra lời giải
4
Khi đã gii quyết xong cái bài toán nhỏ, lặp lại các bước gii quyết đó và kết
hợp lại những lời giải đó để suy ra kết quả cần tìm (có thdạng đệ quy).
3. Thuật toán β:
Gisử chúng ta thuật toán α để giải i toán kích thước dữ liệu vào n với
thi gian bị chặn bởi cn2 (c: hng số). Xét thuật gii β để giải bài toán bằng cách:
- Bước 1: Chia i toán cần giải thành 3 bài toán con với kích thước n/2.
- Bước 2: Gii 3 bài toán bằng thuật toán α.
- ớc 3: Tổng hợp li giải của 3 i toán con để thu được li giải của bài
toán.
nh đúng đắn của thuật toán:
Gisử bước 3 đòi hỏi thời gian dn (d: hằng sô).
Gọi:
T α(n)= thời gian của thuật toán α.
T β(n)= thời gian của thuật toán β
Ta có:
T α(n)= cn2 (theo giả thuyết)
T β(n)= 3. T α(n/2) + dn = ¾.cn2 + dn.
Nếu:
dn < c.n2/4 hay n > 4.d/c thì thuật toán β nhanh hơn thuật toán α. Do 4.d/c
hằng số nên với n đủ ln ta luôn có n > 4.d/c.
Điu đó cho thấy việc sử dụng thuật toán β để gii bài toán đặt ra bằng cách
chia thành các bài toán con có kích thước càng ngày càng nhđến khi thu được
bài toán con kích thước n0 < 4.d/c s thu được hiệu quả cao.
4. Thuật toán chia để trị có thể biểu diễn bằng mô hình đệ quy như sau:
Procedure DivideConquer(A,x); //Tìm nghiệm x của bài toán A
Begin
If (A đủ nhỏ) then Solve(A)
Else
Begin
Phân A thành các bài toán con A1,..., Am;
For i:=1 to m do DivideConquer(Ai,xi);
Kết hợp nghiệm xi của i toán con Ai để được nghiệm của i
toán A;
5
1 2 3
End;
End;
Chúng ta sẽ nghiên cu i toán Tháp nội, là một bài toán điển hình
được giải bằng phương pháp chia để trđể thấy được hơn tưởng của phương
pháp này.
Ví dụ. Bài toán Tháp Hà Nội
N đĩa đường kính khác nhau được đặt chồng lên nhau theo thứ tự
gim dần của đường kính tính từ dưới lên. ba vị trí có thể đặt các đĩa đánh số 1,
2, 3. Chồng đĩa ban đầu được đặt ở vị trí 1:
Cần chuyển cả chồng đĩa từ vị trí 1 sang vị trí 2, theo những quy tắc sau:
Khi di chuyển một đĩa, phải đặt nó vào một trong ba vị trí đã cho.
Mỗi lần chỉ có thể chuyển một đĩa và phải là đĩa trên cùng.
Tại mt vị trí, đĩa nào mi chuyn đến sẽ phải đặt lên trên cùng. Đĩa
ln hơn kng bao gi được phép đặt lên trên đĩa nhhơn (hay nói cách khác:
mt đĩa chỉ được đặt trên mt đất hoặc đặt trên một đĩa ln hơn)
Bài toán y nguồn gốc một truyền thuyết của Ấn độ rằng một
nhóm cao tăng Ấn độ giáo được giao trọng trách chuyn dần 64 đĩa vàng giữa 3
cọc kim cương theo các điều kiện đã i phn tn. Khi nào hn tất công việc,
tức là khi chuyển xong toàn bộ 64 đĩa từ vị trí ban đầu sang vị trí kết thúc thì cũng
là thời điểm tận thế.
Chúng ta giải bài tn bằng cách chia bài toán chuyển N đĩa, từ vị trí 1 sang
vị trí 2 thành ba bài toán đơn giản hơn như sau:
1. Chuyển N-1 đĩa tn cùng từ vị trí 1 sang vị t3, dùng vị trí 2
làm trung gian.
2. Chuyển đĩa thứ N từ vị trí 1 sang vị trí 2.
3. Chuyển N-1 đĩa từ vị trí 3 sang vị trí 2, dùng vị trí 1 làm trung
gian.
Chú ý rằng i toán 1 3 tương tự như bài toán ban đầu, chỉ khác kích
thước nhỏ n. Chúng cũng sẽ được giải bằng phương pháp chia để trị” giống