TRNG I HC S PHM HÀ NI
TRUNG TÂM GIÁO DC T XA
NGUYN V QUC HNG
NGUYN QUNH DIP
MT S PHNG PHỄP C BN
TRONG THIT K GII THUT VÀ
ỄNH GIỄ PHC TP THUT
TOÁN
HÀ NI ậ 2012
Chng 1. Dn nhp Nguyn V Quc Hng-Nguyn Qunh Dip
1
CHNG 1
DN NHP
1.1 Algorithm?
T algorithm đc đt ra t th k th 9 bi nhà toán hc Bat
(Iran) Abu Ja’fa Mohammed ibn Khowarizmi đc hiu đn gin là tp
các quy tc cha đng các phép tính toán đc thc hin bng tay hoc
máy móc, trong tài liu này ta luôn hiu là gii thut đc xây dng cho
máy tính.
Algorthmics là thut ng đ ch s nghiên cu v gii thut. Khi ta
gii quyt vn đ vic đu tiên quan trng là quyt đnh la chn mt gii
thut có kh nng đ s dng. Tu thuc vào yêu cu ca bài toán và gii
hn kh nng ca thit b, chúng ta cn chn đc gii thut thc hin
vi thi gian ít nht hoc vi không gian lu tr nh nht hoc d lp
chng trình nht, tho mãn nhng nhân t này, ngoài kh nng v
tc đ và không gian lu tr ca thit b đc dùng cn phi đ ý thit k
gii thut. Algorthmics là khoa hc nghiên cu v cách xác đnh hiu qu
ca nhng nhân t bin đi bên ngoài, cho phép la chn mt gii pháp
tt nht cho nhng tình hung đc bit; đó chính là khoa hc cho chúng
ta bit phi làm nh th nào đ xây dng mt gii thut mi cho nhng
tác v riêng bit.
Ta ly s hc s cp làm ví d. Gi s, ta phi nhân hai s nguyên
dng ch s dng bút và giy. Nu thc hin theo kiu Bc M, chúng
ta ln lt thc hin phép nhân vi các s t phi qua trái, mi kt qu
đc vit trên mt dòng vi s cui cùng bên phi đc trt trái mt v
trí so vi kt qu dòng trên và cui cùng cng tt c các dòng s đc kt
qu mong mun. Nu thc hin theo kiu đc dy trong nhà trng Anh
thì ta li bt đu t bên trái qua phi. Phép nhân 981 và 1234 đc ch ra
theo Hình 1.1.
Chng 1. Dn nhp Nguyn V Quc Hng-Nguyn Qunh Dip
2
981
981
1234
1234
3924
981
2943_
1962
1962__
_2943
981___
__3924
1210554
1210554
Hình 1.1. Nhân 2 s nguyên ln
Ta nhn thy rng, hai gii thut này là tng đng, thuc loi
phân lp, mt gii thut th ba khác hn đc gi là nhân theo kiu Nga
đc trình bày nh sau:
981
1234
1234
490
2468
245
4936
4936
122
9872
61
19744
19744
30
39488
15
78976
7896
7
157952
157952
3
315904
315904
Chng 1. Dn nhp Nguyn V Quc Hng-Nguyn Qunh Dip
3
1
631808
631808
1210554
Hình 1.2. Nhân theo kiu Nga
Gii thut này rt thích hp vi các mch tính nh phân. Mt
khác, vi ngi tính toán không cn hc thuc mt bng nhân nào. Cái
ngi ta cn bit ch là phép cng và nhân chia cho 2.
Còn mt gii thut khác đc trình bày nh Hình 1.3 và 1.4 di
đây. Gii thut này cn làm cho hai s hng tham gia vào phép nhân có
đ dài bng nhau (s dng s 0 cho thêm vào đu), đ dài là mt ly tha
ca 2 (1, 2, 4, 6, 8, …). nhân 0981 vi 1234 , đu tiên ta nhân tng
na ca ca các toán hng vi nhau: na bên trái ca toán hng nhân (09)
đc nhân vi ln lt na bên trái ca toán hng kia (12 và 34), ri tip
tc na bên phi ca nó cng đc nhân nh vy. Ta có 4 phép nhân, kt
qu đc sp xp và cng li xem Hình 1.3.
Toán hng nhân Trt Kt qu
i) 09 12 4 108
ii) 09 34 2 306
iii) 81 12 2 972
iv) 81 34 0 2754
1210554
Hình 1.3. Phép nhân kiu chia đ tr
Cng vi cách thc nh vy, chúng ta li áp dng đi vi các
phép nhân 09 x 12, 09 x 34, 81 x 12 và 81 x 34. Chng hn, phép nhân 09
x 12 đc thc hin nh sau:
Chng 1. Dn nhp Nguyn V Quc Hng-Nguyn Qunh Dip
4
Toán hng nhân Trt Kt qu
i) 0 1 2 0
ii) 0 2 1 0.
iii) 9 1 1 9.
iv) 9 2 0 18
108
Hình 1.4. Phép nhân kiu chia đ tr
Phép nhân đc tin hành nh vy đc gi là thc hin theo gii
thut chia đ tr (divide and conquer), đ nhân hai s nguyên ln ta đã
chia nh ra, cui cùng ch thc hin phép nhân hai s có mt ch s và
các phép cng.
1.2. Biu din gii thut.
Chúng ta có th s dng ngôn ng t nhiên đ trình bày mt gii
thut, nhng ngôn ng t nhiên có nhc đim v tính chính xác. Trong
giáo trình này chúng ta s dng ngôn ng phng trình, mt ngôn ng vn
đc dùng trong các nhà trng, gn ging vi ngôn ng Pascal.
* Ký t và biu thc:
Bng ch cái và du phép toán theo bng mã ASCII
Giá tr logic: true, false
Phép toán logic: and, or, not
Bin ch s: a[i], a[i,j], a[i, j, k],
Chng 1. Dn nhp Nguyn V Quc Hng-Nguyn Qunh Dip
5
* Các cu trúc d liu: Integer, Real, Char, Logical, String. Khi cn
chúng ta có th b xung thêm cu trúc d liu.
* Phép gán:
<tên bin> <biu thc> hoc
<tên bin> := <biu thc>
* Phép ghép lnh:
begin <các câu lnh> end
* Câu lnh thc hin theo điu kin:
if B then S
if B then S
1
else S
2
Trong đó: B là mt biu thc logic. S, S
1
, S
2
là các câu lnh
* Câu lnh tuyn:
case
B1 : S1;
B2 : S2;
Bn : Sn
else
Sn+1
end case
Chng 1. Dn nhp Nguyn V Quc Hng-Nguyn Qunh Dip
6
* Câu lnh lp:
for <tên bin> := m to n do S
for <tên bin> := m downto n do S
While B do S
Repeat <các câu lnh> until B
Trong đó: S là câu lnh, B là biu thc logic, m và n (các giá tr đm
đc) là các giá tr khi đu và kt thúc.
* Vào, ra:
read (<danh sách bin>)
write (<danh sách bin>)
* M đu và Kt thúc chng trình:
begin end.
* Chng trình con hàm:
function <tên hàm> (<danh sách tham s>) :
kiu d liu;
<chng trình>
return
* Chng trình con th tc:
procedure <tên th tc> (<danh sách tham
s>);
<chng trình>
return