Rèn luyện khả năng đánh giá độ phức tạp tính toán.
1. Rèn luy n kh năng đánh giá đ ph c t p c a thu t toánệ ả ộ ứ ạ ủ ậ
M c đích đ a d y h c l p trình vào ch ng trình PTTH tr c h t n m trang b cho h c sinh (HS) m t s ki n th c, k năng c b nụ ư ạ ọ ậ ươ ướ ế ằ ị ọ ộ ố ế ứ ỹ ơ ả
v l p trình, bi t v n d ng chúng đ gi i m t s bài t p c b n, đ ng th i b c đ u chu n b hành trang cho HS có th đi ti p vàoề ậ ế ậ ụ ể ả ộ ố ậ ơ ả ồ ờ ướ ầ ẩ ị ể ế
lĩnh v c này các giai đo n ti p theo. Đ c bi t qua d y h c l p trình c n rèn luy n cho HS m t lo i hình t duy quan tr ng - đó làự ở ạ ế ặ ệ ạ ọ ậ ầ ệ ộ ạ ư ọ
t duy thu t toán.ư ậ
Đ hình thành và phát tri n lo i hình t duy này c n trú tr ng rèn luy n cho HS các kh năng sau:ể ể ạ ư ầ ọ ệ ả
1. Th c hi n nh ng thao tác theo m t trình t nh t đ nh phù h p v i m t thu t toán cho tr cự ệ ữ ộ ự ấ ị ợ ớ ộ ậ ướ
2. Phân tích m t ho t đ ng thành nh ng thao tác thành ph n đ c th c hi n theo m t trình t nh t đ nh.ộ ạ ộ ữ ầ ượ ự ệ ộ ự ấ ị
3. Mô t chính xác quá trình ti n hành m t ho t đ ng.ả ế ộ ạ ộ
4. Khái quát hoá m t ho t đ ng trên nh ng đ i t ng riêng l thành m t ho t đ ng trên m t l p đ i t ng.ộ ạ ộ ữ ố ượ ẻ ộ ạ ộ ộ ớ ố ượ
5. So sánh nh ng thu t toán khác nhau cùng th c hi n m t công vi c và phát hi n thu t toán t i u.ữ ậ ự ệ ộ ệ ệ ậ ố ư
Vi c rèn luy n, phát tri n t duy thu t toán cho HS đ c hi u theo h ng là rèn luy n cho HS 5 kh năng trên.ệ ệ ể ư ậ ượ ể ướ ệ ả
Trong d y h c tin h c cho đ i t ng đ i trà thì vi c th c hi n m c tiêu th 5 th ng kh p khó khăn, lý do có th k đ n là:ạ ọ ọ ố ượ ạ ệ ự ệ ụ ứ ườ ặ ể ể ế
- HS không đ c h c khái ni m "Đ ph c t p c a m t thu t toán" m t cách t ng minh.ượ ọ ệ ộ ứ ạ ủ ộ ậ ộ ườ
- Vi c đánh giá đ ph c t p c a m t thu t toán v n là m t bài toán khó.vvệ ộ ứ ạ ủ ộ ậ ố ộ
Tuy nhiên giáo viên (GV) có th t ng b c hình thành, rèn luy n cho HS kh năng đánh giá đ ph c t p c a thu t toán m c để ừ ướ ệ ả ộ ứ ạ ủ ậ ở ứ ộ
đ n gi n d i các góc đ sau:ơ ả ướ ộ
- Đ ph c t p v th i gian tính c a thu t toánộ ứ ạ ề ờ ủ ậ
- Đ ph c t p v dung l ng nh dùng cho thu t toán.ộ ứ ạ ề ượ ớ ậ
Xin minh ho b ng các ví d c th trong SGK Tin h c l p 10.ạ ằ ụ ụ ể ọ ớ
Ví d 1: L p trình gi i bài toán c "v a gà v a chó"ụ ậ ả ổ ừ ừ
Ph ng án 1:ươ
G i s gà là i (khi đó s chó là 36-i)ọ ố ố
T gi thi t suy ra i là m t s nguyên và có th nh n giá tr t 0 đ n 36.ừ ả ế ộ ố ể ậ ị ừ ế
Ta có thu t toán :ậ
For i:= 0 To 36 Do
If 2*i + (36-i)*4 =100 Then
Thông báo k t qu .ế ả
V i m i b c l p v hình th c máy ph i th c hi n 5 phép toán, n u g i th i gian đ th c hi n m t l t 5 phép toán đó là t thì th iớ ỗ ướ ặ ề ứ ả ự ệ ế ọ ờ ể ự ệ ộ ượ ờ
gian th c hi n thu t toán là 36t.ự ệ ậ
Ph ng án 2:ươ
G i s chó là i (s gà là 36-i). V y i là m t s nguyên có th nh n giá tr t 0 đ n 25 (vì t ng s chân ch có 100 nên s chó t i đaọ ố ố ậ ộ ố ể ậ ị ừ ế ổ ố ỉ ố ố
là 25), ta có thu t toánậ
For i:= 0 to 25 do
If 4*i + (36-i)*2 = 100 then
Thông báo k t qu .ế ả
V y th i gian đ th c hi n thu t toán 2 là 25t. So v i thu t toán ban đ u thì l ng th i gian rút ng n đ c là 11t.ậ ờ ể ự ệ ậ ớ ậ ầ ượ ờ ắ ượ
2. Ví d 2: Vi t ch ng trình nh p vào 20 s th c, sau đó s p l i dãy theo chi u tăng d n và cho bi t m t s th c x có thu c m ngụ ế ươ ậ ố ự ắ ạ ề ầ ế ộ ố ự ộ ả
không?
Khi gi i quy t công đo n s p x p l i dãy s , HS th ng s d ng thu t toán s p x p tu n t ho c s p x p "n i b t", 2 thu t toánả ế ạ ắ ế ạ ố ườ ử ụ ậ ắ ế ầ ự ặ ắ ế ổ ọ ậ
này đ u t i đa là th c hi n n(n-1)/2 l n so sánh (đ ph c t p t i đa c a 2 thu t toán đ u là O(n2)). Nên chúng tôi h ng HS soề ố ự ệ ầ ộ ứ ạ ố ủ ậ ề ướ
sánh đ ph c t p c a thu t toán công đo n tìm s th c x có m t trong dãy.ộ ứ ạ ủ ậ ở ạ ố ự ặ
Ph ng án 1: Ta l n l t so sánh s x v i t ng s trong dãyươ ầ ượ ố ớ ừ ố
i:=1; ok:=true
While (i<=20) and ok do
If x=a[i] then
begin
Thông báo đã tìm th y v trí i;ấ ở ị
ok:=False;
end
else i:=i+1;
V y t i đa thu t toán th c hi n 20 l n phép toán so sánh.ậ ố ậ ự ệ ầ
Ph ng án 2: L n l t so sánh x v i s n m v trí gi a c a dãyươ ầ ượ ớ ố ằ ở ị ữ ủ
dau:=1; cuoi:=20;ok:=true;
While (dau<= cuoi) and ok do
Begin
k:=Trunc((da cuoi)/2);ư
If a[k]=x then
Begin
Thông báo tìm th y v trí i;ấ ở ị
ok:=False;
end
else If a[k]>x then cuoi:=k-1
else dau:=k+1
V y sau m i b c l p ho c ta tìm đ c s x ho c ch còn ph i so sánh x v i m t n a các ph n t c a dãy.ậ ỗ ướ ặ ặ ượ ố ặ ỉ ả ớ ộ ử ầ ử ủ
B ng các ví d c th v i s ph n t n càng l n, HS càng ch ra đ c tính t i u c a ph ng án 2 so v i ph ng án 1 (đ ph cằ ụ ụ ể ớ ố ầ ử ớ ỉ ượ ố ư ủ ươ ớ ươ ộ ứ
t p c a ph ng án 2 là O(log2n) trong khi đó đ ph c t p c a thu t toán trong ph ng án 1 là O(n)).ạ ủ ươ ộ ứ ạ ủ ậ ươ
Ví d 3: Tính giá tr c a đa th c P(x)=anxn+an-1xn-1+....+a1x +ao t i x=xo.ụ ị ủ ứ ạ
Ph ng án 1: Tính giá tr t ng h ng t c a đa th c r i c ng l iươ ị ừ ạ ử ủ ứ ồ ộ ạ
s:=a[o];
For i:=1 to n do
begin
For j:=1 to i do a[i]:=a[i]*xo;
s:=s+a[i];
end;
b c tính giá tr h ng t th i c n ph i th c hi n i phép nhân v y s phép nhân c n ph i th c hi n là 1+2+...+n =n(n+1)/2; sau đóở ướ ị ạ ử ứ ầ ả ự ệ ậ ố ầ ả ự ệ
ta c n th c hi n n phép c ng đ c ng t ng h ng t vào t ng S. V y t ng các phép toán c n th c hi n là n+n(n+1)/2 = n(n+3)/2.ầ ự ệ ộ ể ộ ừ ạ ử ổ ậ ổ ầ ự ệ
Ph ng án 2: Tính d n theo b cươ ồ ậ
tg:=1;s:=a[o];
For i:=1 to n do
begin
tg:=tg*xo;
s:=s+a[i]*tg
end;
V y v i m i b c l p s phép toán ph i th c hi n g m 2 phép nhân và 1 phép c ng. Do v y t ng s phép toán ph i th c hi n làậ ớ ỗ ướ ặ ố ả ự ệ ồ ộ ậ ổ ố ả ự ệ
3n.
Ph ng án 3: Ta có đa th c P(x) có th bi u di n d i d ng:ươ ứ ể ể ễ ướ ạ
3. P(x)=(....(anx+an-1)x+an-2 )x+.....x)+ao.ư
Nên ta có th tính giá tr c a P(x) t i x=xo nh sau:ể ị ủ ạ ư
s:=a[n];
For i:=1 to n do s:=s*xo+a[n-i]
V i m i b c c a vòng l p ta c n th c hi n m t phép toán nhân và m t phép toán c ng, m t phép tính tr . V y t ng s phép toánớ ỗ ướ ủ ặ ầ ự ệ ộ ộ ộ ộ ừ ậ ổ ố
ph i th c hi n là 3n.ả ự ệ
Ph ng án 4:T ng t ph ng án 3 nh ng ta dùng vòng For d ng lùi.ươ ươ ự ươ ư ạ
s:=a[n];
For i:=n-1 downto 0 do s:=s*x0+a[i]
M i b c c a vòng l p s phép toán đ c th c hi n là m t phép toán nhân và m t phép c ng. T ng c ng s phép toán s th cỗ ướ ủ ặ ố ượ ự ệ ộ ộ ộ ổ ộ ố ẽ ự
hi n là 2n.ệ
So sánh v i 3 ph ng án trên thì ph ng án 4 t i u h n c vì s phép toán ph i th c hi n là ít nh t.ớ ươ ươ ố ư ơ ả ố ả ự ệ ấ
V y qua các ví d c th , đ n gi n GV đã t ng b c hình thành và rèn luy n cho HS đánh giá đ ph c t p c a thu t toán và t đóậ ụ ụ ể ơ ả ừ ướ ệ ộ ứ ạ ủ ậ ừ
l a ch n thu t toán t i u.ự ọ ậ ố ư
R t mong nh n đ c s đóng góp ý ki n c a các b n.ấ ậ ượ ự ế ủ ạ