CTT003 Ch05 GioiThieuVeThuatToan

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 29

Nhp mn lp trnh

ThS. ng Bnh Phng (dbphuong@fit.hcmus.edu.vn)


Khi nim v thut ton
Chng trnh ci t thut ton
phc tp ca thut ton
Cc vn tm hiu m rng kin thc
ngh nghip
Thut ng v bi c thm ting Anh

10/7/2013 Khoa CNTT - H Khoa hc t nhin 2


My tnh l mt cng c c lc h tr
con ngi trong vic tnh ton v x l.
Pht biu bi ton bng ngn ng t
nhin khng th l u vo cho my tnh.
Con ngi phi m hnh ha bi ton
thng qua nhng cu trc d liu, vn
c h tr bi cc ngn ng lp trnh, t
c s n nng cao nh mng, cu trc,
tp hp, th, cy,

10/7/2013 Khoa CNTT - H Khoa hc t nhin 4


Trn c s m hnh d liu c xy
dng, con ngi phi ch ra cho my tnh
mt cch thc gii quyt bi ton (gi
l thut ton hay gii thut).
Thut ton c th hiu l mt qui trnh x
l bao gm cc bc c th c th thc
hin gii quyt mt bi ton.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 5


Mi thut ton cn p ng 6 tiu chun:
Tnh hu hn: Thut ton phi kt thc thc thi sau mt s lng hu
hn cc bc x l.
Tnh xc nh: Mi bc x l phi c m t r rng, chnh xc,
khng nhp nhng.
Tn ti d liu u vo: Thut ton phi c d liu u vo hp l,
c m t r rng.
Tnh c kt qu: Thut ton phi cho ra kt qu ng trn c s d
liu u vo hp l.
Tn hiu qu: Mi bc x l phi n gin vi thi gian thc thi hu
hn. Trong thc t iu ny c ngha l phi thc thi trong khong thi
gian c th chp nhn c.
Tnh ph dng: Thut ton c th p dng x l mt h cc bi
ton.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 6


Chng ta c th s dng mt trong bn cch
sau m t thut ton:
Ngn ng t nhin: ting Vit, ting Anh,
Lu .
M gi: thng da vo c php ca mt s
ngn ng lp trnh thng dng nh Pascal,
C/C++,
Ngn ng lp trnh cp cao.
Khng nn i qu su vo chi tit k thut
lm mt i tnh tru tng ca thut ton.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 7


V d tm s ln nht trong dy
Bc 1: t s ln nht hin ti bng vi s
nguyn khng du u tin ca dy.
Bc 2: Nu khng cn s nguyn no k tip
th chuyn sang Bc 4.
Bc 3: Nu s nguyn k tip ln hn s ln
nht hin ti th t s ln nht hin ti bng
s nguyn k tip ny. Quay v Bc 2.
Bc 4: S ln nht hin ti chnh l s ln
nht ca c dy, y l kt qu ca thut ton.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 8


V d tm s ln nht trong dy
int timSoLonNhat(int a[], int n) {
int i, max;
for (i = 1; i < n; i++)
if (max < a[i])
max = a[i];
return max;
}

10/7/2013 Khoa CNTT - H Khoa hc t nhin 9


S dng cc khi hnh sau:
Cc hnh ch nht biu th cc ch ch tnh
ton hay x l (nhp, xut, gn, thc hin
php tnh).
Cc hnh thoi th hin cc quyt nh r
nhnh ty theo biu thc trong hnh thoi c
gi tr ng () hay sai (S).
Cc mi tn l hng i ca lung iu khin,
th hin th t thc hin ca cc khi x l.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 10


V d tm s ln nht trong dy
Nhp dy a0, a1, , an-1

max a0

i1

S
i < n?

S
max <ai? ii+1

max ai

Xut max

10/7/2013 Khoa CNTT - H Khoa hc t nhin 11


V d tm s ln nht trong dy
max a0
i1
while i < n do
if max < ai then
max ai
ii+1
endwhile
write (max)

10/7/2013 Khoa CNTT - H Khoa hc t nhin 12


T chc d liu cho mi hm chng trnh
D liu nhp, xut v tnh ton trung gian
T chc cc hm cho chng trnh
Hm v nhp/xut, x l (ci t cc thut ton)
v chng trnh chnh, kt ni
Chy th nghim thut ton
Chun b cc b d liu kim th (d liu nhp
v kt qu mong i)
Chy th, ghi nhn kt qu v nh gi ng sai

10/7/2013 Khoa CNTT - H Khoa hc t nhin 14


i vi mt vn t ra c th tn ti
rt nhiu thut ton x l.
Ngoi vic phi ch ra rng mt thut ton
c tnh ng n ta cn phi bit thut
ton no tt hn khi gii quyt cng mt
vn (theo ngha chy nhanh hn hay
phc tp thp hn).

10/7/2013 Khoa CNTT - H Khoa hc t nhin 16


Trong cng mt iu kin hot ng (d
liu u vo, tc phn cng, ) th
thut ton no cho kt qu sm nht s l
thut ton tt nht.
Tuy nhin, m bo iu kin hot
ng ng nht l rt kh v trong h
thng a nhim th CPU khng dnh
100% cng sut phc v ring cho
chng trnh ang chy th nghim.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 17


Khng phi bt c nhm thut ton no
cng c th c cn o, ong m mt
cch tng minh.
V d tm s Fibonacci th n, bit
F0 = F 1 = 1
Fn = Fn-1 + Fn-2 nu n 2

10/7/2013 Khoa CNTT - H Khoa hc t nhin 18


Thut ton th nht
M gi Ci t bng C/C++
1 Computing: Fibonacci(n) int Fibo1(int n) {
2 if n <= 1 then int a, b, c, k;
3 Result = n if (n <= 1)
4 else return n;
5 a = 0, b = 1 a = 0; b = 1;
6 for each k = 2, , n do for (k = 2; k <= n; k++) {
7 c = a + b; c = a + b;
8 a=b a = b;
9 b=c b = c;
10 endfor }
11 Result = c return c;
12 endif }
13 write (Result)

10/7/2013 Khoa CNTT - H Khoa hc t nhin 19


Thut ton th hai
M gi Ci t bng C/C++
1 Computing: Fibonacci(n) int Fibo2(int n) {
2 if n <= 1 then if (n <= 1)
3 Result = n return n;
4 else
5 A = Fibonacci(n 2) int A = Fibo2(n 1);
6 B = Fibonacci(n 1) int B = Fibo2(n 2);
7 Result = A + B return A + B;
8 endif }
9 write (Result)

10/7/2013 Khoa CNTT - H Khoa hc t nhin 20


nh gi phc tp thi gian (so snh
thi gian thc hin ca hai thut ton)
n Thut ton 1 Thut ton 2
40 41 ns 1048 s
60 61 ns 1 giy
80 81 ns 18 pht
100 101 ns 13 ngy
120 121 ns 36 nm
160 161 ns 3.8 107 nm
200 201 ns 4 1013 nm

10/7/2013 Khoa CNTT - H Khoa hc t nhin 21


Da trn mc tiu th ti nguyn ca
h thng (nh b nh, ng truyn, )
lm c s nh gi thut ton.
Da v cu trc d liu c s dng
trong biu din d liu cng nh trong
qu trnh x l ca thut ton.
phc tp ny thng khng c ch
nhiu.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 22


Hon i gi tr ca a v b.
Thut ton th nht Thut ton th 2
1 temp a aa+b
2 ab bab
3 b temp aab

Thut ton th nht ti hn thut ton


th hai (trn phng din phc tp v
khng gian) do cn thm mt bin temp
lu tr gi tr tm thi.
10/7/2013 Khoa CNTT - H Khoa hc t nhin 23
Tham kho mt s v d v nh gi
phc tp l thuyt ca thut ton tm
kim tuyn tnh v nh phn.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 25


algorithm: cch thc hay qui trnh gii quyt bi ton
algorithmic complexity: phc tp thut ton
algorithm implementation: ci t thut ton, chuyn thut ton thnh
cc ch th c vit trong mt NNLT c th, cng ngha vi m ha thut
ton (algorithm coding)
executable: c th chy c
flow chart: lu , mt phng tin trc quan dng m t s hot
ng ca thut ton
natural languages: ngn ng t nhin (ting Vit, Anh, Php, )
pseudo-code: m gi, mt phng tin thng dng c dng m t
v trnh by thut ton

10/7/2013 Khoa CNTT - H Khoa hc t nhin 27


Thinking in C, Bruce Eckel, E-book, 2006.
Theory and Problems of Fundamentals of
Computing with C++, John R.Hubbard,
Schaums Outlines Series, McGraw-Hill, 1998.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 28

You might also like