Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Tài liệu đang bị lỗi
File tài liệu này hiện đang bị hỏng, chúng tôi đang cố gắng khắc phục.
Giáo trình nghiên cứu các kiểu dữ liệu có cấu trúc.pdf
Nội dung xem thử
Mô tả chi tiết
1
GIíI THIÖU M¤N HäC
Trong ng«n ng÷ lË p tr× nh, d÷ liÖ u bao gåm hai kiÓ u chÝ nh lµ :
- KiÓ u d÷ liÖ u ®¬n gi¶ n: char, int, long, float, enumeration, subrange.
- KiÓ u d÷ liÖ u cã cÊ u tróc : struct, array, file (kiÓ u d÷ liÖ u cã kÝ ch thíc
kh«ng ®æi)...
Gi¸ o tr× nh nµ y tË p trung vµ o viÖ c nghiª n cøu c¸ c kiÓ u d÷ liÖ u cã cÊ u tróc
cã kÝ ch thíc kh«ng ®æi hoÆ c thay ®æi trong ng«n ng÷ lË p tr× nh, m« t¶ th«ng qua
ng«n ng÷ C. Ngoµ i ra cßn giíi thiÖ u c¸ c gi¶ i thuË t chung quanh c¸ c cÊ u tróc d÷
liÖ u nµ y nh c¸ ch tæ chøc, thùc hiÖ n c¸ c phÐ p to¸ n t× m kiÕ m, s¾ p thø tù néi, s¾ p
thø tù ngo¹ i...
§iÒ u kiÖ n ®Ó cã thÓ t× m hiÓ u râ rµ ng vÒ m«n häc nµ y lµ häc viª n ®∙ biÕ t
c¸ c kh¸ i niÖ m vÒ kü thuË t lË p tr× nh trª n ng«n ng÷ C. Trong phÇ n më ®Ç u, bµ i
gi¶ ng nµ y sÏ giíi thiÖ u c¸ ch thøc ph© n tÝ ch & thiÕ t kÕ mét gi¶ i thuË t tríc khi
t× m hiÓ u vÒ c¸ c cÊ u tróc d÷ liÖ u cô thÓ .
Vµ o cuèi khãa häc, sinh viª n cã thÓ :
- Ph© n tÝ ch ®é phøc t¹ p cña c¸ c ch¬ng tr× nh cã kÝ ch thíc nhá vµ trung
b× nh.
- NhË n thøc ®îc sù cÇ n thiÕ t cña viÖ c thiÕ t kÕ cÊ u tróc d÷ liÖ u.
- Lµ m quen víi c¸ c kh¸ i niÖ m stacks, queues, danh s¸ ch ®Æ c, danh s¸ ch
liª n kÕ t, c© y nhÞ ph© n, c© y nhÞ ph© n t× m kiÕ m, ....
- HiÓ u ®îc nguyª n lý cña viÖ c x© y dùng mét ch¬ng tr× nh m¸ y tÝ nh.
- Cã thÓ chän lùa viÖ c tæ chøc d÷ liÖ u phï hîp vµ c¸ c gi¶ i thuË t xö lý d÷
liÖ u cã hiÖ u qu¶ trong khi x© y dùng ch¬ng tr× nh. Sinh viª n cÇ n lu ý r» ng, tïy
vµ o c«ng viÖ c cô thÓ mµ ta nª n chän cÊ u tróc d÷ liÖ u nµ o lµ thÝ ch hîp theo híng
tèi u vÒ thêi gian thùc hiÖ n hay tèi u vÒ bé nhí.
2
Ch¬ng I
PH¢N TÝ CH & THIÕT KÕ
GI¶I THUËT
I. më ®Çu
HÇ u hÕ t c¸ c bµ i to¸ n ®Ò u cã nhiÒ u gi¶ i thuË t kh¸c nhau ®Ó gi¶ i quyÕ t chóng.
VË y lµ m thÕ nµ o chän ®îc mét gi¶ i thuË t tèt nhÊ t ?
ViÖ c chän lùa phô thuéc vµ o nhiÒ u yÕ u tè nh : §é phøc t¹ p tÝ nh to¸ n cña
gi¶ i thuË t, chiÕ m dung lîng bé nhí, tÇ n suÊ t sö dông, tÝ nh ®¬n gi¶ n, tèc ®é thùc
hiÖ n...
Th«ng thêng môc tiª u chän lùa lµ :
1. Gi¶ i thuË t râ rµ ng, dÔ hiÓ u, dÔ m∙ hãa vµ hiÖ u chØ nh.
2. Gi¶ i thuË t sö dông cã hiÖ u qu¶ tµ i nguyª n cña m¸ y tÝ nh vµ ®Æ c biÖ t
ch¹ y cµ ng nhanh cµ ng tèt.
Do ®ã khi viÕ t ch¬ng tr× nh ®Ó ch¹ y mét lÇ n hoÆ c Ý t ch¹ y th× môc tiª u 1 lµ
quan träng h¬n c¶ .
Ngîc l¹ i khi viÕ t ch¬ng tr× nh ®Ó ch¹ y nhiÒ u lÇ n th× phÝ tæn ch¹ y ch¬ng
tr× nh cã thÓ vît qu¸ phÝ tæn lË p ch¬ng tr× nh, nhÊ t lµ khi ph¶ i nhË p nhiÒ u sè
liÖ u. Nãi chung, ngêi lË p tr× nh ph¶ i biÕ t chän lùa, viÕ t, ®¸ nh gi¸ c¸ c gi¶ i thuË t
®Ó cã ®îc gi¶ i thuË t tèi u cho bµ i to¸ n cña m× nh.
II. ®¸nh gi¸ thêi gian ch¹y cña ch¬ng tr× nh
Thêi gian ch¹ y cña chong tr× nh phô thuéc vµ o :
1. Input cho ch¬ng tr× nh
2. ChÊ t lîng m∙ sinh ra cña ch¬ng tr× nh dÞ ch.
3. Tr¹ ng th¸ i vµ tèc ®é cña c¸ c lÖ nh ch¹ y trª n m¸ y.
4. §é phøc t¹ p thêi gian cña gi¶ i thuË t.
§iÒ u 1 lµ chøc n¨ ng nhË p. KÝ ch thíc cña input (vÝ dô lµ n) vµ ta thêng ký
hiÖ u T(n) lµ ®¹ i lîng thêi gian cÇ n thiÕ t ®Ó gi¶ i bµ i to¸ n kÝ ch thíc n.
§iÒ u 2, 3 thêng ®¸ nh gi¸ khã kh¨ n v× phô thuéc vµ o phÇ n mÒ m ch¬ng
tr× nh dÞ ch vµ phÇ n cøng cña m¸ y.
§iÒ u 4 lµ ®iÒ u mµ ngêi lË p tr× nh cÇ n kh¶ o s¸ t ®Ó lµ m t¨ ng tèc ®é cña
ch¬ng tr× nh.
3
III. ký hiÖu o(n) vµ Ω(n) :
Ta ®¸ nh gi¸ tû lÖ ph¸ t triÓ n c¸ c hµ m T(n) qua ký hiÖ u O(n).
Ta nãi thêi gian ch¹ y T(n) cña ch¬ng tr× nh lµ O(n2
) cã nghÜ a lµ :
∃ c > 0 vµ n0 sao cho ∀ n ≥ n0 ta cã T(n) ≤ c.n2
.
VÝ dô : Gi¶ sö T(0) = 1, T(1) = 4, v v...
Tæng qu¸ t T(n) = (n +1)
2
th× ta nãi T(n) lµ O(n2
) v× cã thÓ ®Æ t c1 = 4, n0 = 1,
th× khi n ≥ 1 ta cã (n +1)
2 ≤ 4n2
.
Nhng kh«ng thÓ lÊ y n0 = 0 v× T(0) = 1 kh«ng nhá h¬n c.02
= 0,∀c; gi¶ thiÕ t
r» ng n ≥ 0 vµ T(n) ≥ 0.
Ta nãi T(n) lµ O(f(n)) nÕ u ∃ const c vµ n0 sao cho T(n) ≤ c.f(n), ∀ n ≥ n0.
Ch¬ng tr× nh ch¹ y víi thêi gian O(f(n)) ta nãi nã ph¸ t triÓ n tû lÖ víi f(n).
Khi nãi T(n) lµ O(f(n)) th× f(n) lµ chÆ n trª n cña T(n).
§Ó nãi chÆ n díi cña T(n) ta dïng ký hiÖ u Ω.
Ta nãi T(n) lµ Ω(g(n)) nÕ u ∃ const c, n0 sao cho T(n) ≥ c.g(n), ∀ n ≥ n0.
VÝ dô : §Ó kiÓ m tra T(n) = n3
+ 2n2
lµ Ω(n3
) ta ®Æ t c = 1 th× T(n) ≥ c.n3
, ∀n
= 0, 1,... (no= 0).
* Sù tr¸ i ngîc cña tû lÖ ph¸ t triÓ n :
Ta gi¶ sö c¸ c ch¬ng tr× nh cã thÓ ®¸ nh gi¸ b» ng c¸ ch so s¸ nh c¸ c hµ m thêi
gian cña chóng víi c¸ c h» ng tû lÖ kh«ng ®¸ ng kÓ . Khi ®ã ta nãi ch¬ng tr× nh cã
thêi gian ch¹ y O(n2
). NÕ u ch¬ng tr× nh 1 ch¹ y mÊ t 100.n2
thêi gian (mili gi© y)
th× ch¬ng tr× nh 2 ch¹ y mÊ t 5.n3
thêi gian, th× ta cã tû sè thêi gian cña 2 ch¬ng
tr× nh lµ 5.n3
/100.n2
= n/20, nghÜ a lµ khi n = 20 th× thêi gian ch¹ y 2 ch¬ng tr× nh
lµ b» ng nhau, khi n < 20 th× ch¬ng tr× nh 2 ch¹ y nhanh h¬n ch¬ng tr× nh 1. Do
®ã khi n > 20 th× nª n dïng ch¬ng tr× nh 1.
VÝ dô : Cã 4 ch¬ng tr× nh cã 4 ®é phøc t¹ p kh¸ c nhau ®îc biÓ u diÔ n trong
b¶ ng díi ®© y.
Thêi gian
ch¹ y T(n)
KÝ ch thíc bµ i to¸ n
tèi ®a cho 103
s
KÝ ch thíc bµ i to¸ n
tèi ®a cho 104
s
Tû lÖ t¨ ng vÒ
kÝ ch thíc
100.n 10 100 10.0 lÇ n
5.n2 14 45 3.2 lÇ n
n3/2 12 27 2.3 lÇ n
2n 10 13 1.3 lÇ n
Gi¶ sö trong 103
s th× 4 ch¬ng tr× nh gi¶ i c¸ c bµ i to¸ n cã kÝ ch thíc tèi ®a
trong cét 2. NÕ u cã m¸ y tèt tèc ®é t¨ ng lª n 10 lÇ n th× kÝ ch thíc tèi ®a t¬ng øng
4
cña 4 ch¬ng tr× nh tr× nh bµ y ë cét 3. TØ lÖ hai cét 1,2 ghi ë cét 4. Nh vË y nÕ u
®Ç u t vÒ tèc ®é 10 lÇ n th× chØ thu lîi cã 30% vÒ kÝ ch thíc bµ i to¸ n nÕ u dïng
ch¬ng tr× nh cã ®é phøc t¹ p O(2n
).
IV. c¸ch tÝ nh thêi gian ch¹y ch¬ng tr× nh :
1. Qui t¾c tæng:
Gi¶ sö T1(n) vµ T2(n) lµ thêi gian ch¹ y ch¬ng tr× nh P1 vµ P2 t¬ng øng ®îc
®¸ nh gi¸ lµ O(f(n)) vµ O(g(n)). Khi ®ã T1(n) + T2(n) sÏ lµ O(max(f(n),g(n)))
(ch¹ y xong ch¬ng tr× nh P1 th× ch¹ y P2).
Chøng minh:
Theo ®Þ nh nghÜ a O(f(n)) vµ O(g(n)) th× ∃ c1, n1, c2, n2 sao cho
T1(n) ≤ c1.f(n) ∀ n ≥ n1 ; T2(n) ≤ c2.g(n) ∀ n ≥ n2.
§Æ t n0 = max(n1, n2)
NÕ u n ≥ no th× T1(n) + T2(n) ≤ (c1 + c2).max(f(n),g(n)).
2. Qui t¾c tÝ ch:
T1(n). T2(n) lµ O(f(n).g(n)).
Chøng minh : t¬ng tù nh tæng.
VÝ dô : Cã 3 ch¬ng tr× nh cã thêi gian ch¹ y t¬ng øng lµ O(n2
), O(n3
),
O(n.logn). ThÕ th× thêi gian ch¹ y 3 ch¬ng tr× nh ®ång thêi lµ O(max(n2
, n3
,
nlogn)) sÏ lµ O(n3
).
Nãi chung thêi gian ch¹ y mét d∙ y cè ®Þ nh c¸ c bíc lµ thêi gian ch¹ y lín
nhÊ t cña mét bíc nµ o ®ã trong d∙ y. Còng cã trêng hîp cã 2 hay nhiÒ u bíc cã
thêi gian ch¹ y kh«ng t¬ng xøng (kh«ng lín h¬n mµ còng kh«ng nhá h¬n). Khi
®ã qui t¾ c tÝ nh tæng ph¶ i ®îc tÝ nh trong tõng trêng hîp.
n4 nÕ u n ch½ n
VÝ dô : f(n) = {
n2 nÕ u n lÎ
g(n) = n2 nÕ u n ch½ n
{
n3 nÕ u n lÏ
Thêi gian ch¹ y lµ O(max(f(n),g(n))) lµ n4
nÕ u n ch½ n vµ n3
nÕ u n lÎ .
NÕ u g(n) ≤ f(n), ∀ n ≥ no, no lµ const nµ o ®ã th× O(f(n)+g(n)) sÏ lµ O(f(n)).
VÝ dô : O(n2
+ n) = O(n2
)
Tríc khi ®a ra qui t¾ c chung ®Ó ph© n tÝ ch thêi gian ch¹ y cña ch¬ng tr× nh
th× ta xÐ t vÝ dô ®¬n gi¶ n sau.
5
VÝ dô : XÐ t ch¬ng tr× nh Bubble dïng s¾ p d∙ y sè nguyª n theo chiÒ u t¨ ng.
Procedure Bubble (var A: array [1..n] of integer);
Var i, j, temp : integer ;
Begin
1 For i := 2 to n do
2 For j := n downto i do
3 If A[j-1] > A[j] then
Begin
4 temp := A[j-1] ;
5 A[j-1] := A[j] ;
6 A[j] := temp ;
End ;
End ;
Ph© n tÝ ch :
- N lµ sè phÇ n tö - kÝ ch thíc cña bµ i to¸ n. Mçi lÖ nh g¸ n tõ dßng 4 - > dßng
6 mÊ t 3 ®¬n vÞ thêi gian, theo qui t¾ c tÝ nh tæng sÏ lµ O(max(1,1,1) = O(1).
- Vßng If vµ For lång nhau, ta ph¶ i xÐ t tõ trong ra ngoµ i. §èi víi ®iÒ u kiÖ n
sau If ph¶ i kiÓ m tra O(1) thêi gian. Ta kh«ng ch¾ c th© n lÖ nh If tõ 4 - 6 cã thùc
hiÖ n hay kh«ng. V× xÐ t trong trêng hîp xÊ u nhÊ t nª n ta gi¶ thuyÕ t lµ c¸ c lÖ nh tõ
4 - 6 ®Ò u cã thùc hiÖ n. VË y nhãm If tõ c¸ c lÖ nh 3 -6 lµ m mÊ t O(1) thêi gian.
- Ta xÐ t vßng lÆ p ngoµ i tõ 2 - 6. Nguyª n t¾ c chung cña vßng lÆ p: thêi gian
vßng lÆ p lµ tæng thêi gian mçi lÇ n lÆ p trong th© n vßng lË p. Ý t nhÊ t lµ O(1) cho
mçi lÇ n lÆ p khi chØ sè t¨ ng. Sè lÇ n lÆ p tõ 2 - 6 lµ n - i +1
VË y theo qui t¾ c tÝ ch : O((n - i +1), 1) lµ O(n -i +1).
- Ta xÐ t vßng ngoµ i cïng chøa c¸ c lÖ nh cña ch¬ng tr× nh. LÖ nh 1 lµ m n-1
lÇ n, tèn n-1 ®¬n vÞ thêi gian. VË y tæng thêi gian ch¹ y cña ch¬ng tr× nh bÞ chÆ n
díi bëi 1 thêi gian cè ®Þ nh lµ :
∑
=
− + = − n
i 2
(n i 1) n * (n 1)/ 2 tøc lµ O(n2
)
Tuy nhiª n kh«ng cã qui t¾ c ®Ç y ®ñ ®Ó ph© n tÝ ch ch¬ng tr× nh.
Nãi chung thêi gian ch¹ y cña 1 lÖ nh hoÆ c 1 nhãm lÖ nh cã thÓ lµ 1 hµ m cña
kÝ ch thíc c¸ c input hoÆ c 1 hay nhiÒ u biÕ n. Nhng chØ cã n - kÝ ch thíc cña bµ i
to¸ n lµ th«ng sè cho phÐ p ®èi víi thêi gian ch¹ y cña ch¬ng tr× nh.
6
3. Qui t¾c tÝ nh thêi gian ch¹y
a) Thêi gian ch¹ y cña mçi lÖ nh g¸ n, read, write cã gi¶ thiÕ t lµ O(1).
b) Thêi gian ch¹ y cña 1 d∙ y lÖ nh x¸ c ®Þ nh theo qui t¾ c tæng; nghÜ a lµ
thêi gian ch¹ y cña d∙ y lµ thêi gian lín nhÊ t cña 1 lÖ nh nµ o ®ã trong d∙ y lÖ nh.
c) Thêi gian ch¹ y lÖ nh If lµ thêi gian thùc hiÖ n lÖ nh ®iÒ u kiÖ n céng víi
thêi gian kiÓ m tra ®iÒ u kiÖ n.
Thêi gian thùc hiÖ n lÖ nh If cã cÊ u tróc If then eles lµ thêi gian kiÓ m
tra ®iÒ u kiÖ n céng víi thêi gian lín nhÊ t cña 1 trong 2 lÖ nh rÏ nh¸ nh true vµ
false.
d) Thêi gian thùc hiÖ n vßng lÆ p lµ tæng thêi gian thùc hiÖ n th© n vßng lÆ p
vµ thêi gian kiÓ m tra kÕ t thóc vßng lÆ p.
e) Gäi thñ tôc:NÕ u ch¬ng tr× nh cã c¸ c thñ tôc vµ kh«ng cã thñ tôc nµ o
lµ ®Ö qui th× ta cã thÓ tÝ nh thêi gian ch¹ y cïng mét lóc, b¾ t ®Ç u tõ c¸ c thñ tôc
kh«ng gäi ®Õ n c¸ c thñ tôc kh¸ c. TÊ t nhiª n ph¶ i cã Ý t nhÊ t 1 thñ tôc nh vË y trong
trêng hîp nµ y, nÕ u kh«ng th× ph¶ i cã thñ tôc ®Ö qui. Sau ®ã ta cã thÓ ®¸ nh gi¸
thêi gian ch¹ y cña c¸ c thñ tôc cã gäi, ®Õ n c¸ c thñ tôc kh«ng chøa lêi gäi ®∙ ®îc
®¸ nh gi¸ . Cø nh thÕ ta l¹ i ®¸ nh gi¸ thêi gian ch¹ y cña c¸ c thñ tôc cã lêi gäi ®Õ n
c¸ c thñ tôc ®∙ ®¸ nh gi¸ , nghÜ a lµ mçi thñ tôc ®îc ®¸ nh gi¸ sau khi ®¸nh gi¸ hÕ t
c¸ c thñ tôc mµ ®îc nã gäi.
NÕ u cã thñ tôc ®Ö qui th× kh«ng thÓ t× m ®îc thø tù cña tÊ t c¶ c¸ c thñ tôc
sao cho mçi thñ tôc chØ gäi ®Õ n c¸ c thñ tôc ®∙ ®¸ nh gi¸ . Khi ®ã ta ph¶ i lË p 1 liª n
hÖ gi÷a mçi thñ tôc ®Ö qui víi 1 hµ m thêi gian cha biÕ t T(n) trong ®ã n lµ kÝ ch
thíc cña ®èi sè cña thñ tôc. Lóc ®ã ta cã thÓ nhË n ®îc sù truy håi ®èi víi T(n),
nghÜ a lµ 1 ph¬ng tr× nh diÔ n t¶ T(n) qua c¸ c T(k) víi c¸ c gi¸ trÞ k kh¸ c nhau.
VÝ dô : XÐ t ch¬ng tr× nh ®Ö qui tÝ nh n giai thõa (n!), trong ®ã n lµ kÝ ch
thíc cña hµ m nª u trª n.
Function Fact (n:integer) : LongInt ;
Begin
1 If n <= 1 then
2 Fact := 1
Else
3 Fact := n*fact (n-1)
End ;
Ph© n tÝ ch:
Ta ký hiÖ u T(n) lµ thêi gian ch¹ y ®Ó tÝ nh hµ m Fact(n).
Thêi gian ch¹ y ®èi víi c¸ c dßng 1, 2 lµ O(1) vµ ®èi víi dßng 3 lµ O(1) +
T(n-1). VË y víi c¸ c h» ng c, d nµ o ®ã ta cã ph¬ng tr× nh:
7
c + T(n-1) nÕ u n > 1
T(n) =
d nÕ u n ≤ 1
Gi¶ i ph¬ng tr× nh :
Gi¶ sö n > 2, ta cã thÓ khai triÓ n T(n-1) trong c«ng thøc :
T(n) = 2.c + T(n-2) nÕ u n > 2
Sau ®ã ta l¹ i thay T(n-2) = c + T(n-3) ta ®îc.
T(n) = 3.c + T(n-3) nÕ u n > 3
.....
T(n) = i.c + T(n-i) nÕ u n > i
Cuèi cïng ta thay i = n - 1, ta ®îc
T(n) = c(n-1) + T(1) = c(n-1) + d
KÕ t luË n T(n) lµ O(n).
V. sù ph©n líp c¸c thuËt to¸n :
Nh ®∙ ®îc chó ý ë trªn, hÇu hÕt c¸c thuËt to¸n ®Òu cã mét tham sè chÝ nh lµ
N, Th«ng thêng ®ã lµ sè lîng c¸ c phÇ n tö d÷ liÖ u ®îc xö lý mµ ¶ nh hëng rÊ t
nhiÒ u tíi thêi gian ch¹ y. Tham sè N cã thÓ lµ bË c cña 1 ®a thøc, kÝ ch thíc cña 1
tË p tin ®îc s¾ p xÕ p hay t× m kiÕ m, sè nót trong 1 ®å thÞ ...HÇ u hÕ t tÊ t c¶ thuË t to¸n
trong bµ i gi¶ ng nµ y cã thêi gian ch¹ y tiÖ m cË n tíi 1 trong c¸ c hµ m sau :
1. HÇ u hÕ t tÊ t c¶ c¸ c chØ thÞ cña c¸c ch¬ng tr× nh ®Ò u ®îc thùc hiÖ n mét
lÇ n hay nhiÒ u nhÊ t chØ mét vµ i lÇ n. NÕ u tÊ t c¶ c¸c chØ thÞ cña cïng 1 ch¬ng tr× nh
cã tÝ nh chÊ t nµ y th× chóng ta sÏ nãi r» ng thêi gian ch¹ y cña nã lµ h» ng sè. §iÒ u
nµ y hiÓ n nhiª n lµ môc tiª u phÊ n ®Ê u ®Ó ®¹ t ®îc trong viÖ c thiÕ t kÕ thuË t to¸ n.
2. logN
Khi thêi gian ch¹ y cña ch¬ng tr× nh lµ logarit, tøc lµ thêi gian ch¹ y
ch¬ng tr× nh tiÕ n chË m khi N lín dÇ n. Thêi gian ch¹ y lo¹ i nµ y xuÊ t hiÖ n trong
c¸ c ch¬ng tr× nh mµ gi¶ i 1 bµ i to¸ n lín b» ng c¸ ch chuyÓ n nã thµ nh bµ i to¸ n nhá
h¬n, b» ng c¸ ch c¾ t bá kÝ ch thíc bít 1 h» ng sè nµ o ®ã. Víi môc ®Ý ch cña chóng
ta, thêi gian ch¹ y cã ®îc xem nh nhá h¬n 1 h» ng sè "lín". C¬ sè cña logarit
lµ m thay ®æi h» ng sè ®ã nhng kh«ng nhiÒ u: Khi n lµ 1000 th× logN lµ 3 nÕ u c¬
sè lµ 10; lµ 10 nÕ u c¬ sè lµ 2 ; khi N lµ 1000000, logN ®îc nh© n gÊ p ®«i. BÊ t cø
khi nµ o N ®îc nh© n gÊ p ®«i, logN ®îc t¨ ng lª n thª m mét h» ng sè, nhng logN
kh«ng ®îc nh© n gÊ p ®«i tíi khi N t¨ ng tíi N2
.
3. N
Khi thêi gian ch¹ y cña ch¬ng tr× nh lµ tuyÕ n tÝ nh, nãi chung ®© y lµ
trêng hîp mµ mét sè lîng nhá c¸c xö lý ®îc lµ m cho mçi phÇ n tö d÷ liÖu nhËp.
{
8
Khi N lµ 1.000.000 th× thêi gian ch¹ y còng cì nh vË y.
Khi N ®îc nh© n gÊ p ®«i th× thêi gian ch¹ y còng ®îc nh© n gÊ p ®«i.
§© y lµ t× nh huèng tèi u cho 1 thuË t to¸ n mµ ph¶ i xö lý N d÷ liÖ u nhË p (hay s¶ n
sinh ra N d÷ liÖ u xuÊ t).
4. NlogN
§© y lµ thêi gian ch¹ y t¨ ng dÇ n lª n cho c¸ c thuË t to¸ n mµ gi¶ i 1 bµ i to¸ n
b» ng c¸ ch t¸ ch nã thµ nh c¸ c bµ i to¸ n con nhá h¬n, kÕ ®Õ n gi¶ i quyÕ t chóng 1
c¸ ch ®éc lË p vµ sau ®ã tæ hîp c¸ c lêi gi¶ i. Bëi v× thiÕ u 1 tÝ nh tõ tèt h¬n (cã lÏ lµ
"tuyÕ n tÝ nh logarit" ?), chóng ta nãi r» ng thêi gian ch¹ y cña thuË t to¸ n nh thÕ lµ
"NlogN".
Khi N lµ 1000000, NlogN cã lÏ kho¶ ng 6 triÖ u.
Khi N ®îc nh© n gÊ p ®«i, thêi gian ch¹ y bÞ nh© n lª n nhiÒ u h¬n gÊ p ®«i
(nhng kh«ng nhiÒ u l¾ m).
5. N2
Khi thêi gian ch¹ y cña 1 thuË t to¸ n lµ bËc hai, trêng hîp nµ y chØ cã ý
nghÜ a thùc tÕ cho c¸ c bµ i to¸ n t¬ng ®èi nhá. Thêi gian b× nh ph¬ng thêng t¨ ng
lª n trong c¸ c thuË t to¸ n mµ xö lý tÊ t c¶ c¸ c cÆ p phÇ n tö d÷ liÖ u (cã thÓ lµ 2 vßng
lÆ p lång nhau).
Khi N lµ 1000 th× thêi gian ch¹ y lµ 1000000.
Khi N ®îc nh© n ®«i th× thêi gian ch¹ y t¨ ng lª n gÊ p 4 lÇ n.
6. N3
T¬ng tù, mét thuË t to¸ n mµ xö lý mét bé 3 cña c¸ c phÇ n tö d÷ liÖ u (cã
lÏ 3 vßng lÆ p lång nhau) cã thêi gian ch¹ y bË c 3 vµ còng chØ cã ý nghÜ a thùc tÕ
trong c¸ c bµ i to¸ n nhá.
Khi N lµ 100 th× thêi gian ch¹ y lµ 1.000.000.
Khi N ®îc nh© n ®«i th× thêi gian ch¹ y t¨ ng lª n gÊ p 8 lÇ n.
7. 2n
Mét sè Ý t thuË t to¸ n cã thêi gian ch¹ y lòy thõa l¹ i thÝ ch hîp trong 1 sè
trêng hîp thùc tÕ , mÆ c dï c¸ c thuË t to¸ n nh thÕ lµ "sù Ð p buéc th« b¹ o" ®Ó gi¶ i
bµ i to¸ n.
Khi N lµ 20 th× thêi gian ch¹ y xÊ p xØ lµ 1.000.000
Khi N lµ gÊ p 2 th× thêi gian ch¹ y ®îc n© ng lª n lòy thõa 2.
Thêi gian ch¹ y cña 1 ch¬ng tr× nh cô thÓ ®«i khi lµ mét h» ng sè nh© n
víi c¸ c sè h¹ ng nãi trª n céng thª m mét sè h¹ ng nhá h¬n. C¸ c gi¸ trÞ cña h» ng sè
vµ c¸ c sè h¹ ng phô thuéc vµ o c¸ c kÕ t qu¶ cña sù ph© n tÝ ch vµ c¸c chi tiÕ t cµ i ®Æ t.
HÖ sè cña h» ng sè liª n quan tíi sè chØ thÞ bª n trong vßng lÆ p : ë 1 tÇ ng tïy ý cña
9
thiÕ t kÕ thuË t to¸n th× ph¶ i cÈ n thË n giíi h¹ n sè chØ thÞ nh thÕ . Víi N lín th× c¸c
h» ng sè ®ãng vai trß chñ chèt, víi N nhá th× c¸ c sè h¹ ng cïng ®ãng gãp vµ o vµ
sù so s¸ nh thuË t to¸ n sÏ khã kh¨ n h¬n. Ngoµ i nh÷ng hµ m võa nãi trª n còng cßn
cã 1 sè hµ m kh¸ c, vÝ dô nh 1 thuË t to¸ n víi N2
phÇ n tö d÷ liÖ u nhË p mµ cã thêi
gian ch¹ y lµ bË c 3 theo N th× sÏ ®îc ph© n líp nh 1 thuË t to¸ n N3/2. Mét sè
thuË t to¸ n cã 2 giai ®o¹ n ph© n t¸ ch thµ nh c¸ c bµ i to¸ n con vµ cã thêi gian ch¹ y
xÊ p xØ víi Nlog2
N.
VI. c¸c c«ng thøc truy håi c¬ së :
PhÇ n lín c¸ c thuË t to¸ n ®Ò u dùa trª n viÖ c ph© n r∙ ®Ö qui mét bµ i to¸ n lín
thµ nh c¸ c bµ i to¸ n nhá h¬n, råi dïng c¸ c lêi gi¶ i cña c¸ c bµ i to¸ n nhá ®Ó gi¶ i bµ i
to¸ n ban ®Ç u. Thêi gian ch¹ y cña c¸ c thuË t to¸ n nh thÕ ®îc x¸ c ®Þ nh bëi kÝ ch
thíc vµ sè lîng c¸ c bµ i to¸ n con vµ gi¸ ph¶ i tr¶ cña sù ph© n r∙ . Trong phÇ n
nµ y ta quan s¸ t c¸ c ph¬ng ph¸ p c¬ së ®Ó ph© n tÝ ch c¸ c thuË t to¸ n nh thÕ vµ
tr× nh bµ y mét vµ i c«ng thøc chuÈ n thêng ®îc ¸ p dông trong viÖ c ph© n tÝ ch
nhiÒ u thuË t to¸ n.
TÝ nh chÊ t rÊ t tù nhiª n cña 1 ch¬ng tr× nh ®Ö qui lµ thêi gian ch¹ y cho d÷
liÖ u nhË p cã kÝ ch thíc N sÏ phô thuéc vµ o thêi gian ch¹ y cho c¸ c d÷ liÖ u nhË p
cã kÝ ch thíc nhá h¬n : ®iÒ u nµ y ®îc diÔ n dÞ ch thµ nh 1 c«ng thøc to¸ n häc gäi
lµ quan hÖ truy håi. C¸ c c«ng thøc nh thÕ m« t¶ chÝ nh x¸ c tÝ nh n¨ ng cña c¸ c
thuË t to¸ n t¬ng øng, do ®ã ®Ó cã ®îc thêi gian ch¹ y chóng ta ph¶ i gi¶ i c¸ c bµ i
to¸ n truy håi. B© y giê chóng ta chó ý vµ o c¸ c c«ng thøc chø kh«ng ph¶ i c¸ c
thuË t to¸ n.
C«ng thøc 1 :
C«ng thøc nµ y thêng dïng cho c¸ c ch¬ng tr× nh ®Ö qui mµ cã vßng lÆ p
duyÖ t qua d÷ liÖ u nhË p ®Ó bá bít 1 phÇ n tö.
Cn = Cn-1 + n, víi n >= 2 vµ C1 = 1
Chøng minh :
Cn kho¶ ng n2
/2. §Ó gi¶ i 1 c«ng thøc truy håi nh trª n, chóng ta lÇ n lît ¸ p
dông chÝ nh c«ng thøc ®ã nh sau :
Cn = Cn-1 + n
= Cn-2 + (n-1) + n
= ...
= C1 + 2 + ... + (n-2) + (n-1) + n
= 1 + 2 + ... + n
= n(n+1)/2
10
C«ng thøc 2 :
C«ng thøc nµ y dïng cho ch¬ng tr× nh ®Ö qui mµ chia d÷ liÖ u nhË p thµ nh 2
phÇ n trong mçi bíc.
Cn = Cn/2 + 1, víi n >= 2 vµ C1 = 0
Chøng minh :
Cn kho¶ ng logn. Ph¬ng tr× nh nµ y v« nghÜ a trõ phi n ch½ n hay chóng ta gi¶
sö r» ng n/2 lµ phÐ p chia nguyª n : b© y giê chóng ta gi¶ sö r» ng n = 2m ®Ó cho
c«ng thøc lu«n lu«n cã nghÜ a. Chóng ta viÕ t nh sau :
1 2 2 C m = C m−1 +
2 2 = C m−2 +
3 2 = C m−3 +
= ......
= C m−m + m 2
= m = log n
C«ng thøc chÝ nh x¸ c cho n tæng qu¸ t th× phô thuéc vµ o biÓ u diÔ n nhÞ ph© n
cña n, nãi chung Cn kho¶ ng logn víi mäi n.
C«ng thøc 3 :
C«ng thøc nµ y dïng cho ch¬ng tr× nh ®Ö qui mµ chia ®«i d÷ liÖ u nhË p
nhng cã thÓ kiÓ m tra mçi phÇ n tö cña d÷ liÖ u nhË p.
Cn = Cn/2 + n, víi n >= 2 vµ C1 = 0
Chøng minh :
Cn kho¶ ng 2n. T¬ng tù trª n, c«ng thøc nµ y chÝ nh lµ tæng n + n/2 + n/4 + ...
(dÜ nhiª n ®iÒ u nµ y chØ chÝ nh x¸ c khi n lµ lòy thõa cña 2).
NÕ u d∙ y lµ v« h¹ n, th× ®© y lµ 1 chuçi h× nh häc ®¬n gi¶ n mµ ®îc íc lîng
chÝ nh x¸ c lµ 2n. Trong trêng hîp tæng qu¸ t lêi gi¶ i chÝ nh x¸ c phô thuéc vµ o
biÓ u diÔ n nhÞ ph© n cña n.
C«ng thøc 4 :
C«ng thøc nµ y dïng cho ch¬ng tr× nh ®Ö qui mµ duyÖ t tuyÕ n tÝ nh xuyª n
qua d÷ liÖ u nhË p, tríc, trong, hay sau khi d÷ liÖ u nhË p ®îc chia ®«i.
Cn = 2Cn/2 + n, víi n >= 2 vµ C1 = 0
Chøng minh :
Cn kho¶ ng nlogn. C«ng thøc nµ y ¸ p dông cho nhiÒ u thuË t to¸ n theo ph¬ng
ph¸ p "chia ®Ó trÞ ".
11
2 2 2
1 m
C m = C m− +
1
2 2 1
1
2 2 = + −
−
m
m
m
C m C
1 1
2 2
2
2 = + + −
−
m
C m
m
C
m m
m m
= + −
−
2
2
= C + m = m 2
0
⇒ C m n n m
n = 2 = log
Lêi gi¶ i cho c«ng thøc nµ y rÊ t gièng nh trong c«ng thøc 2, nhng ph¶ i
chia 2 vÕ cña c«ng thøc cho 2n
trong bíc thø hai.
C«ng thøc 5 :
C«ng thøc nµ y dïng cho ch¬ng tr× nh ®Ö qui mµ t¸ ch d÷ liÖ u thµ nh 2 phÇ n.
Cn = 2Cn/2 + 1, víi n >= 2 vµ C1 = 0
Chøng minh :
Cn kho¶ ng 2n. Chøng minh gièng nh c«ng thøc 4.
C¸ c biÕ n d¹ ng cña nh÷ng c«ng thøc nµ y ch¼ ng h¹ n nh ®iÒ u kiÖ n kh¸ c nhau
hay c¸ c sè h¹ ng thª m vµ o kh¸ c nhau mét Ý t, cã thÓ íc lîng b» ng c¸ ch dïng
còng mét kü thuË t nh trª n. MÆ c dï vË y, chóng ta còng nª n chó ý 1 quan hÖ truy
håi dêng nh t¬ng tù víi mét quan hÖ ®∙ biÕ t th× ®«i khi l¹ i khã gi¶ i h¬n rÊ t
nhiÒ u.
VII. gi¶i ph¬ng tr× nh truy håi :
§Ó gi¶ i ph¬ng tr× nh truy håi cã nhiÒ u c¸ ch gi¶ i kh¸ c nhau, ë ®© y chóng t«i
tr× nh bµ y c¸ ch gi¶ i ph¬ng tr× nh truy håi b» ng c¸ ch truy vÒ ph¬ng tr× nh ®Æ c
trng. Chóng t«i dïng c¸ ch gi¶ i nµ y ®Ó viÕ t ch¬ng tr× nh gi¶ i tù ®éng ph¬ng
tr× nh truy håi.
a) Ta xÐ t ph¬ng tr× nh truy håi thuÇ n nhÊ t tuyÕ n tÝ nh víi c¸ c hÖ sè kh«ng
®æi sau ®© y :
a0tn + a1tn-1 + ... + aktn-k = 0 (VII.1)
trong ®ã ti
(i=n, n-1,..., n-k) lµ c¸ c È n sè cÇ n t× m.
TuyÕ n tÝ nh v× c¸ c ti
chØ cã bË c nhÊ t, thuÇ n nhÊ t v× vÕ ph¶ i b» ng kh«ng vµ
c¸ c hÖ sè a0, a1,..., ak lµ kh«ng ®æi v× kh«ng phô thuéc vµ o n.
12
Sau khi gi¶ thiÕ t tn = xn
ta ®a (VII.1) vÒ d¹ ng:
a0xn
+ a1xn-1
+...+ akxn-k = 0
hay xn-k(a0xk
+ a1xk-1
+...+ ak) = 0
Râ rµ ng x = 0 lµ nghiÖ m hiÓ n nhiª n, nhng ta quan t© m nghiÖ m ph¬ng
tr× nh a0xk
+ a1xk-1
+...+ ak = 0 (VII.2) vµ ®© y chÝ nh lµ ph¬ng tr× nh ®Æ c trng bË c
k cña ph¬ng tr× nh truy håi (VII.1)
Gi¶ sö r1, r2,..., rk lµ k nghiÖ m cña ph¬ng tr× nh (VII.2) vµ chóng kh¸ c nhau
(cã thÓ phøc). DÔ dµ ng kiÓ m tra:
t c r
n
i
k
i n ∑ i =
= 1
Víi c1, c2,..., ck lµ c¸ c h» ng x¸ c ®Þ nh tõ k ®iÒ u kiÖ n ban ®Ç u.
VÝ dô 1 :
XÐ t ph¬ng tr× nh truy håi:
t n − 3t n−1 − 4t n−2 = 0
§iÒ u kiÖ n ban ®Ç u : t0 = 1 ; t1 =1
Ph¬ng tr× nh ®Æ c trng t¬ng øng cña nã lµ :
x2
- 3x - 4 = 0
cã nghiÖ m b» ng -1 vµ 4. VË y nghiÖ m tæng qu¸ t lµ :
1( 1) 2 (4) n n
t n c c = − +
Theo ®iÒ u kiÖ n ban ®Ç u (khi n =0 vµ n = 1) ta cã :
c1 + c2 = 1 = t0
- c1 + 4c2 =1
VË y c1 = 3/5, c2 = 2/5. Ta ®îc tn = - [4n
- (-1)
n
] /5
VÝ dô 2 : (ph¬ng tr× nh Fibonacci)
tn = tn-1 + tn-2 n ≥ 2
§iÒ u kiÖ n : t0 = 0, t1 = 1
ViÕ t l¹ i ph¬ng tr× nh trª n :
tn - tn-1 - tn -2 = 0
Ph¬ng tr× nh ®Æ c trng t¬ng øng :
x2
- x -1 = 0
13
NghiÖ m : r (1 5)/ 2 1 = + , r (1 5)/ 2 2 = −
NghiÖ m tæng qu¸ t : tn = c1r1
n + c2r2
n
Tõ ®iÒ u kiÖ n ban ®Ç u :
c1 + c2 = 0 (n = 0)
r1c1 + r2c2 = 1 (n =1)
Ta cã c 1/ 5 1 = ,
c 1/ 5 2 = −
VË y: tn = (r n r n )/ 5 1 − 2
Gi¶ sö c¸ c nghiÖ m ph¬ng tr× nh ®Æ c trng lµ kh«ng ph© n biÖ t, P(x) lµ 1 ®a
thøc.
P(x) = a0xk
+ a1xk-1
+ ... + ak
vµ r lµ nghiÖ m kÐ p.
Víi mçi r > k, ta xÐ t ®a thøc bË c n ®îc x¸ c ®Þ nh nh sau :
h(x) = x [xn-k P(x)] = a0nxn
+ a1(n-1)xn-1
+ ... + ak(n-k)xn-k
§Æ t q(x) lµ ®a thøc tháa ®iÒ u kiÖ n
P(x) = (x-r)2
q(x)
Ta cã :
h(x) = x[(x-r)2
xn-k q(x)] = x[2(x-r)xn-k q(x) + (x-r)2
[xn-k q(x)]]
Râ rµ ng h(r) = 0, do ®ã
a0nrn
+ a1(n-1)xn-1
+ ... + ak(n-k) rn-k = 0
NghÜ a lµ tn = nrn còng lµ nghiÖ m cña (5.13). Tæng qu¸ t h¬n, nÕ u nghiÖ m r
trïng nhau m lÇ n (r béi m) th×
tn = rn
, tn = nrn
, tn = n2
r
n
,...., tn = nm-1
r
n
còng lµ c¸ c nghiÖ m cña (5.13). NghiÖ m tæng qu¸ t (nghiÖ m chung) lµ tæ hîp
tuyÕ n tÝ nh cña c¸ c nghiÖ m riª ng nµ y vµ nghiÖ m riª ng kh¸c cña ph¬ng tr× nh ®Æ c
trng. K h» ng ®îc x¸ c ®Þ nh tõ c¸ c ®iÒ u kiÖ n ban ®Ç u.
VÝ dô 3 : XÐ t ph¬ng tr× nh
tn = 5tn-1 - 8tn-2 + 4tn-3 n ≥ 3
víi c¸ c ®iÒ u kiÖ n t0 = 0, t1 = 1, t2 = 2
Ta viÕ t l¹ i ph¬ng tr× nh:
tn - 5tn-1 + 8tn-2 - 4tn-3 = 0
vµ ph¬ng tr× nh ®Æ c trng t¬ng øng lµ :
x3
- 5x2
+ 8x - 4 = 0
hay (x-1) (x-2)2
= 0
14
Ta cã c¸ c nghiÖ m 1 (cã béi 1), 2 (cã béi 2). VË y nghiÖ m tæng qu¸ t lµ :
tn = c11n
+ c22n + c3n2n
C¸ c ®iÒ u kiÖ n ban ®Ç u cho tríc lµ :
c1 + c2 = 0 khi n = 0
c1 + 2c2 + 2c3 = 1 khi n = 1
c1 + 4c2 + 8c3 = 2 khi n = 2
Tõ ®© y ta t× m ra c1 = -2, c2 = 2, c3 = -1/2. VË y tn = 2n+1
- n2n-1
- 2
b) Ph¬ng tr× nh truy håi kh«ng thuÇ n nhÊ t:
Ta xÐ t ph¬ng tr× nh cã d¹ ng sau :
a0tn + a1tn-1 + ... + aktn-k = bn
P(n) (VII.3)
Trong ®ã vÕ tr¸ i nh trong (VII.1), vÕ ph¶ i lµ bn
P(n) víi b lµ h» ng vµ P(n) lµ
®a thøc.
VÝ dô 4 :
tn - 2tn-1 = 3n
th× b = 3 vµ P(n) = 1 lµ ®a thøc bË c 0.
B» ng phÐ p biÕ n ®æi ®¬n gi¶ n ta cã thÓ chuyÓ n vÝ dô nµ y vÒ d¹ ng (VII.1) lµ
ph¬ng tr× nh truy håi thuÇ n nhÊ t. Tríc hÕ t ta nh© n 2 vÕ cho 3 ta ®îc :
3tn - 6tn-1 = 3n+1 (1)
Sau ®ã ta thay n ra n + 1 trong ph¬ng tr× nh ban ®Ç u:
tn+1 - 2tn = 3n+1 (2)
Cuèi cïng, lÊ y (2) - (1) , ta thu ®îc (cã cïng vÕ ph¶ i 3n+1
), ta ®îc:
tn+1 - 5tn + 6tn-1 = 0
§Õ n ®© y ta cã thÓ gi¶ i ph¬ng tr× nh ®∙ tr× nh bµ y ë môc a.
Ph¬ng tr× nh ®Æ c trng cña nã lµ :
x2
- 5x + 6 = 0
hay (x-2) (x-3) = 0
Trùc gi¸ c cho ta thÊ y r» ng thµ nh phÇ n (x-2) t¬ng øng víi vÕ tr¸ i
ph¬ng tr× nh ban ®Ç u; cßn (x-3) lµ biÓ u hiÖ n kÕ t qu¶ cña viÖ c biÕ n ®æi vµ trõ vÕ
ph¶ i.
VÝ dô 5 :
tn - 2tn-1 = (n+5)3n
15
Sù biÕ n ®æi cã phøc t¹ p nh sau :
- Nh© n 2 vÕ cho 9
- Thay n bëi n+2
- Thay n bëi n+1,sau ®ã nh© n cho -6
- Ta ®îc kÕ t qu¶ :
9tn - 18tn-1 = (n + 5) 3n+2
tn+2 - 2tn+1 = (n + 7) 3n+2
-6tn+1 + 12tn = -6(n + 6) 3n+1
Céng 3 ph¬ng tr× nh l¹ i ta ®îc :
tn+2 - 8tn+1 + 21tn - 18tn-1 = 0
Ph¬ng tr× nh ®Æ c trng.
x2
- 8x2
+ 21x - 18 = 0 hay (x-2) (x-3)2
= 0
Ta l¹ i thÊ y (x-2) t¬ng øng vÕ tr¸ i ph¬ng tr× nh ban ®Ç u vµ (x-3)2
lµ kÕ t qu¶
cña sù biÕ n ®æi.
Nh vË y chóng ta cã thÓ nãi r» ng ®Ó gi¶ i ph¬ng tr× nh truy håi kh«ng thuÇ n
nhÊ t cã d¹ ng (VII.3) ta chØ cÇ n gi¶ i ph¬ng tr× nh ®Æ c trng sau.
(a0xk
+ a1xk-1 + ... + ak) (x-b)d+1
= 0 (VII.4)
VÝ dô 6 : (bµ i to¸ n th¸ p Hµ Néi)
Ph¬ng tr× nh truy håi cho bµ i to¸ n chuyÓ n n ®Ü a nµ y cã d¹ ng:
1 nÕ u n = 1
tn = { 2tn-1 + 1 nÕ u n > 1
hay tn = 2tn-1 + 1, n > 1 víi t0 = 0
Ta viÕ t l¹ i ph¬ng tr× nh :
tn - 2tn-1 = 1
Vµ thÊ y nã cã d¹ ng (VII.3) víi b = 1, P(n) = 1 bË c 0
Ph¬ng tr× nh ®Æ c trng lµ (x-2) (x-1) = 0
VË y : tn =c11n
+ c22n
. Tõ t0 = 0 ®Ó t× m t1 ta viÕ t :
t1 = 2to + 1 = 1
VË y c1 + c2 = 0, n = 0
c1 + 2c2 = 1, n = 1
Suy ra c1 = -1, c2 = 1. VË y tn = 2n
-1
Ta nhË n thÊ y tõ tn = c11n
+ c22n
còng cã thÓ kÕ t luË n tn cã O(2n
).