Professional Documents
Culture Documents
Cac Khai Niem Co Ban
Cac Khai Niem Co Ban
V THUT TON
NI DUNG
1.1. V d m u
1.2. Thut ton v phc tp
1.3. K hiu tim cn
1.4. Gi ngn ng
1.5. Mt s k thut phn tch thut ton
V d m u
Bi ton tm dy con ln nht:
Cho dy s
a1, a2, , an
Dy s ai, ai+1 , , aj vi 1 i j n c gi l dy con ca dy
cho v jk=i ak c gi l trng lng ca dy con ny
Bi ton t ra l: Hy tm trng lng ln nht ca cc dy con, tc
l tm cc i gi tr jk=i ak. n gin ta gi dy con c trng
lng ln nht l dy con ln nht.
n 1
n 1
( j i 1) (1 2 ... (n i))
i 0 j i
i 0
i 0
(n i)( n i 1)
2
1 n
1 n 2 n 1 n(n 1)(2n 1) n(n 1)
k (k 1) k k
2 k 1
2 k 1
2
6
2
k 1
n3 n 2 n
6 2 3
j 1
a[k ] a[ j ] a[k ]
k i
k i
2 2
i 0
n 1
T ( n) n
n
n
T ( 2 ) T ( 2 ) n 2T ( 2 ) n
Tham kho ti liu ca PGS. TS. Nguyn c Ngha
n 1
n 1
Thut ton QH
Phn r. Gi si l trng lng ca dy con ln nht
trong dy a1, a2, ..., ai , i = 1, 2, ..., n.
R rng sn l gi tr cn tm.
Tng hp li gii.
Trc ht, ta c
s1 = a1.
Gi s i > 1 v sk l bit vi k = 1, 2, ..., i-1. Ta cn tnh si l
trng lng ca dy con ln nht ca dy
Thut ton QH
Do dy con ln nht ca dy ny hoc l c cha phn t ai hoc l khng
cha phn t ai, nn n ch c th l mt trong hai dy:
Dy con ln nht ca dy a1, a2, ..., ai-1
Dy con ln nht ca dy a1, a2, ..., ai kt thc ti ai.
T suy ra
si = max {si-1, ei}, i = 2, , n.
trong ei l trng lng ca dy con ln nht ca dy a1, a2, ..., ai kt
thc ti ai.
tnh ei, ta cng c th s dng cng thc qui sau:
e1 = a1;
ei = max {ai, ei-1 + ai}, i = 2, ..., n.
Tham kho ti liu ca PGS. TS. Nguyn c Ngha
Thut ton QH
MaxSub(a);
{
smax = a[1];
(* smax trng lng ca dy con ln nht *)
maxendhere = a[1]; (* maxendhere trng lng ca dy con ln nht kt thc ti a[i] *)
imax = 1;
(* imax - v tr kt thc ca dy con ln nht *)
for i = 2 to n {
u = maxendhere + a[i];
v = a[i];
if (u > v) maxendhere = u
else maxendhere = v;
if (maxendhere > smax)then {
smax := maxendhere;
imax := i;
}
}
}
NI DUNG
1.1. V d m u
1.2. Thut ton v phc tp
1.3. K hiu tim cn
1.4. Gi ngn ng
1.5. Mt s k thut phn tch thut ton
Gii bi ton l g?
What is Problem Solving?
Problem solving
L qu trnh t bi ton v pht trin chng trnh my tnh gii bi
ton t ra
Cu trc d liu:
Cch t chc lu tr d liu vo - ra
Tham kho ti liu ca PGS. TS. Nguyn c Ngha
Php ton c bn
o thi gian tnh bng n v o no?
NI DUNG
1.1. V d m u
1.2. Gii bi ton v cng ngh phn mm
1.3. Thut ton v phc tp
1.4. K hiu tim cn
1.5. Gi ngn ng
1.6. Mt s k thut phn tch thut ton
K hiu tim cn
Asymptotic Notation
, O
c s dng m t thi gian tnh ca thut ton
Thay v ni chnh xc thi gian tnh, ta ni (n2)
c xc nh i vi cc hm nhn gi tr nguyn
khng m
Dng so snh tc tng ca hai hm
K hiu
i vi hm g(n), ta k hiu (g(n)) l tp cc hm
(g(n)) = {f(n): tn ti cc hng s c1, c2 v n0 sao cho
0 c1g(n) f(n) c2g(n), vi mi n n0 }
V d
10n2 - 3n = (n2) ?
Vi gi tr no ca cc hng s n0, c1, v c2 th bt ng
thc trong nh ngha l ng?
Ly c1 b hn h s ca s hng vi s m cao nht,
cn c2 ly ln hn, ta c
n2 10n2 3n 11n2, vi mi n 1.
i vi hm a thc: so snh tc tng cn nhn
vo s hng vi s m cao nht
Tham kho ti liu ca PGS. TS. Nguyn c Ngha
K hiu O (c l ln - big O)
i vi hm g(n) cho trc, ta k hiu O(g(n)) l tp cc hm
O(g(n)) = {f(n): tn ti cc hng s dng c v n0 sao cho:
f(n) cg(n) vi mi n n0 }
K hiu
i vi hm g(n) cho trc, ta k hiu (g(n)) l tp cc hm
(g(n)) = {f(n): tn ti cc hng s dng c v n0 sao cho:
cg(n) f(n) vi mi n n0 }
Lin h gia , , O
i vi hai hm bt k g(n) v f(n),
f(n) = (g(n))
khi v ch khi
f(n) = O(g(n)) v f(n) = (g(n))
tc l
(g(n)) = O(g(n)) (g(n))
V d
Sp xp chn (Insertion sort) i hi thi gian
(n2) trong tnh hung ti nht, v th bi ton sp
xp c thi gian l O(n2).
Mi thut ton sp xp u i hi duyt qua tt
c cc phn t, v th bi ton sp xp c thi gian
(n) trong tnh hung tt nht.
Trn thc t, s dng (chng hn) sp xp trn
(merge sort), bi ton sp xp c thi gian
(n log n) trong tnh hung ti nht.
Tham kho ti liu ca PGS. TS. Nguyn c Ngha
S tng t gia
so snh cc hm s v so snh cc s
fg ab
f (n) = O(g(n)) a b
f (n) = (g(n)) a b
f (n) = (g(n)) a = b
Cc tnh cht
Truyn ng (Transitivity)
f(n) = (g(n)) & g(n) = (h(n)) f(n) = (h(n))
f(n) = O(g(n)) & g(n) = O(h(n)) f(n) = O(h(n))
f(n) = (g(n)) & g(n) = (h(n)) f(n) = (h(n))
i xng (Symmetry)
f(n) = (g(n)) khi v ch khi g(n) = (f(n))
V d
A
5n2 + 100n
B
3n2 + 2
log3(n2)
log2(n3)
V d
A
5n2 + 100n
B
3n2 + 2
log3(n2)
log2(n3)
A (B)
V d
A
5n2 + 100n
B
3n2 + 2
A (B)
log3(n2)
log2(n3)
A (B)
V d
A
5n2 + 100n
B
3n2 + 2
A (B)
log3(n2)
log2(n3)
A (B)
V d
Vi mi cp hm sau y, hoc f(n) = O(g(n)), f(n) = (g(n)),
hoc f(n) = (g(n)). Hy xc nh quan h no l ng.
f(n) = (g(n))
f(n) = log n2; g(n) = log n + 5
f(n) = n; g(n) = log n2
f(n) = (g(n))
f(n) = O(g(n))
f(n) = (g(n))
f(n) = (g(n))
f(n) = (g(n))
f(n) = (g(n))
f(n) = O(g(n))
Cn trn v cn di
Upper Bound and Lower Bound
Mt s lp thut ton
NI DUNG
1.1. V d m u
1.2. Thut ton v phc tp
1.3. K hiu tim cn
1.4. Gi ngn ng
1.5. Mt s k thut phn tch thut ton
Cu lnh gn
x = expression;
hoc
x expression;
V d: x 1+4; y=a*y+2;
Vo-Ra
read(X); /* X l bin n hoc mng */
print(data) hoc print(thng bo)
Cu lnh case:
Case
cond1: stat1;
cond2: stat2;
.
.
.
condn: stat n;
endcase;
Truyn tham s:
Tham tr
Tham bin
Bin cc b
Bin ton cc
NI DUNG
1.1. V d m u
1.2. Thut ton v phc tp
1.3. K hiu tim cn
1.4. Gi ngn ng
1.5. Mt s k thut phn tch thut ton
Cc k thut c bn
phn tch phc tp ca thut ton
Cu trc tun t. Gi s P v Q l hai on ca thut ton, c
th l mt cu lnh nhng cng c th l mt thut ton con.
Gi Time(P), Time(Q) l thi gian tnh ca P v Q tng ng.
Khi ta c
Quy tc tun t: Thi gian tnh i hi bi P; Q, ngha l P
thc hin trc, tip n l Q, s l
Time(P; Q) = Time(P) + Time(Q) ,
hoc trong k hiu Theta:
Time(P; Q) = (max(Time(P), Time(Q)).
Tham kho ti liu ca PGS. TS. Nguyn c Ngha
Vng lp for
for i =1 to m do P(i);
Gi s thi gian thc hin P(i) l t(i)
Khi thi gian thc hin vng lp for s l
m
t(i)
i 1
V d: Tnh s Fibonaci
function Fibiter(n)
begin
i=0; j=1;
for k=2 to n do
begin
j= j+i;
i= j-i;
end;
Fibiter= j;
end;
fk
5 2 2
c.k c k c
k 1
n
k 1
n(n 1)
( n 2 )
2
Gi thit l x c
mt trong mng T
Binary-Search (tip)
Vy lun c: d* d/2
Do vng lp kt thc khi d 1, nn t suy ra thut ton
phi kt thc.
Gi dp l gi tr ca j - i + 1 ln lp th p 1 v d0 = n. Khi
dp dp-1/2, p 1.
Thut ton kt thc ti bc p nu dp 1, iu xy ra khi p
= log n.
Vy thi gian tnh ca thut ton l O(log n)
Tham kho ti liu ca PGS. TS. Nguyn c Ngha
Function mid=bsearch2(L,p,q,key)
while q>p
mid=floor((p+q)/2);
if key<=L(mid)
q=mid;
else
p=mid+1;
end
end
while q>p
mid=floor((p+q)/2);
if key==L(mid)
break break
p=mid;
if key==L(p)
mid=p;
else
mid=0;
end
Tm thy ri th dng?!
Tham kho ti liu ca PGS. TS. Nguyn c Ngha
elseif key<L(mid)
q=mid-1;
else
p=mid+1;
end
end
% Ch :
p c th c gi tr sai y
if key==L(p)
mid=p;
else
mid=0;
end
Hy th vi:
L = 1 , 2, 3
key = 1, 2, 3
Hm trn C
boolean binary_search_1(int* a, int n, int x) {
/* Test xem x c mt trong mng a[] kch thc n. */
int i;
while (n > 0) {
i = n / 2;
if (a[i] == x)
return true;
if (a[i] < x) { /* Tip tc tm na tri */
a = &a[i + 1];
n = n - i - 1; }
else /* Tip tc tm na phi */
n = i;
}
return false;
}
Tham kho ti liu ca PGS. TS. Nguyn c Ngha
Cu lnh c trng
nh ngha. Cu lnh c trng l cu lnh c
thc hin thng xuyn t nht l cng nh bt k cu
lnh no trong thut ton.
Nu gi thit thi gian thc hin mi cu lnh l b
chn bi hng s th thi gian tnh ca thut ton s
cng c vi s ln thc hin cu lnh c trng
=> nh gi thi gian tnh c th m s ln thc
hin cu lnh c trng
V d: FibIter
function Fibiter(n)
begin
i:=0; j:=1;
for k:=1 to n do
begin
j:= j+i;
i:= j-i;
end;
Fibiter:= j;
end;
Tham kho ti liu ca PGS. TS. Nguyn c Ngha
Cu lnh c
trng
S ln thc hin cu lnh
c trng l n.
Vy thi gian tnh ca thut
ton l O(n)
V d: Thut ton 1 v d m u
int maxSum =0;
for (int i=0; i<n; i++) {
for (int j=i; j<n; j++) {
int sum = 0;
for (int k=i; k<=j; k++)
sum += a[k];
if sum > maxSum
maxSum = sum;
}
}
V d: Sp xp
Nhn xt: Khi thut ton i hi thc hin nhiu vng lp lng nhau, th c
th ly cu lnh nm trong vng lp trong cng lm cu lnh c trng.
Tuy vy, cng cn ht sc thn trng khi s dng cch la chn ny.
V d. Sp xp kiu nht chim vo chung (Pigeonhole Sorting).
Sp xp n s nguyn dng c gi tr nm trong khong 1..s.
u vo: T[1..n]: mng cha dy cn sp xp.
u ra: T[1..n]: mng cha dy c sp xp khng gim.
Thut ton bao gm 2 thao tc:
m chim: Xy dng mng U[1..s], trong phn t U[k] m s
lng s c gi tr l k trong mng T.
Nht chim: Ln lt nht U[1] con chim loi 1 vo U[1] lng u tin,
U[2] con chim loi 2 vo U[2] lng tip theo, ...
Tham kho ti liu ca PGS. TS. Nguyn c Ngha
U [k ] n
k 1