Professional Documents
Culture Documents
TRNG I HC LT
KHOA CNG NGH THNG TIN
BI GING TM TT
Lt 2008
http://gg.gg/sns
LI NI U
p ng nhu cu hc tp ca cc bn sinh vin, nht l sinh vin chuyn ngnh
cng ngh thng tin, Khoa Cng Ngh Thng Tin Trng i Hc Lt chng ti
tin hnh bin son cc gio trnh, bi ging chnh trong chng trnh hc
Ti liu ny c son theo cng chi tit mn Cu Trc D Liu V Thut Gii 2
ca Khoa Cng Ngh Thng Tin Trng i Hc Lt. Mc tiu ca n nhm gip cc
bn sinh vin chuyn ngnh c mt ti liu c ng dng lm ti liu hc tp.
Mc d rt c gng nhiu trong qu trnh bin son gio trnh, song khng khi cn
nhiu thiu st v hn ch. Rt mong nhn c s ng gp kin qu bu ca sinh
vin v cc bn c gio trnh ngy mt hon thin hn.
Lt, ngy 30 thng 06 nm 2008
http://gg.gg/sns
Mc lc
Chng I: Cy ............................................................................................................................... 4
I. Cc thut ng c bn trn cy ................................................................................................ 4
1. nh ngha ......................................................................................................................... 4
2. Th t cc nt trong cy.................................................................................................... 5
3. Cc th t duyt cy quan trng........................................................................................ 6
4. Cy c nhn v cy biu thc ............................................................................................ 6
II. Cy nh phn (Binary Trees)................................................................................................... 8
1. nh ngha ......................................................................................................................... 8
2. Vi tnh cht ca cy nh phn........................................................................................... 9
3. Biu din cy nh phn ...................................................................................................... 9
4. Duyt cy nh phn ............................................................................................................ 9
5. Ci t cy nh phn ........................................................................................................ 10
IV. Cy tm kim nh phn (Binary Search Trees) .................................................................... 12
1. nh ngha ........................................................................................................................ 12
2. Ci t cy tm kim nh phn .......................................................................................... 13
V. Cy nh phn tm kim cn bng (Cy AVL) ....................................................................... 21
1. Cy nh phn cn bng hon ton..................................................................................... 21
2. Xy dng cy nh phn cn bng hon ton..................................................................... 21
3. Cy tm kim nh phn cn bng (cy AVL).................................................................... 22
Bi tp........................................................................................................................................ 32
Chng II: Th ....................................................................................................................... 35
I. Cc nh ngha ................................................................................................................... 35
III. Biu din th.................................................................................................................... 36
1. Biu din th bng ma trn k...................................................................................... 37
2. Biu din th bng danh sch cc nh k.................................................................... 38
IV. Cc php duyt th (traversals of Graph)........................................................................ 38
1. Duyt theo chiu su (Depth-first search) ........................................................................ 38
2. Duyt theo chiu rng (breadth-first search).................................................................... 40
V. Mt s bi ton trn th................................................................................................... 43
1. Bi ton tm ng i ngn nht t mt nh ca th .................................................. 43
2. Bi ton tm bao ng chuyn tip. .................................................................................. 47
3. Bi ton tm cy bao trm ti thiu (minimum-cost spanning tree)................................. 48
Bi tp........................................................................................................................................ 53
Chng III: Bng Bm ............................................................................................................... 55
I. Phng php bm................................................................................................................. 55
II. Cc hm bm ..................................................................................................................... 57
1. Phng php chia ............................................................................................................. 57
2. Phng php nhn ............................................................................................................ 57
3. Hm bm cho cc gi tr kho l xu k t ...................................................................... 58
III. Cc phng php gii quyt va chm.................................................................................. 59
1. Phng php nh a ch m........................................................................................... 59
2. Phng php to dy chuyn............................................................................................ 62
IV. Ci t bng bm a ch m............................................................................................... 63
V. Ci t bng bm dy chuyn.............................................................................................. 66
VI. Hiu qu ca cc phng php bm.................................................................................... 69
2
http://gg.gg/sns
http://gg.gg/sns
Cy
Mc tiu
Sau khi hc xong chng ny, sinh vin phi:
-
Lp trnh theo tng module (chng trnh con) v cch gi chng trnh con
.
Ni dung
Trong chng ny chng ta s nghin cu cc vn sau:
-
Cc thut ng c bn.
Cy nh phn
Cy tm kim nh phn
I. Cc thut ng c bn trn cy
Cy l mt tp hp cc phn t gi l nt (nodes) trong c mt nt c phn bit
gi l nt gc (root). Trn tp hp cc nt ny c mt quan h, gi l mi quan h cha
- con (parenthood), xc nh h thng cu trc trn cc nt. Mi nt, tr nt gc, c
duy nht mt nt cha. Mt nt c th c nhiu nt con hoc khng c nt con no.
Mi nt biu din mt phn t trong tp hp ang xt v n c th c mt kiu no
bt k, thng ta biu din nt bng mt k t, mt chui hoc mt s ghi trong vng
trn. Mi quan h cha con c biu din theo qui c nt cha dng trn nt con
dng di v c ni bi mt on thng. Mt cch hnh thc ta c th nh ngha
cy mt cch qui nh sau:
1. nh ngha
-
Gi s ta c n l mt nt n c v k cy T1,.., Tk vi cc nt gc tng ng l
n1,.., nk th c th xy dng mt cy mi bng cch cho nt n l cha ca cc nt
4
http://gg.gg/sns
http://gg.gg/sns
Cy rng th danh sch duyt cy l rng v n c coi l biu thc duyt tin
t, trung t, hu t ca cy.
tin t: A B C D E F H K L
trung t: C B E D F A K H L
hu t: C E F D B K L H A
http://gg.gg/sns
Khi chng ta duyt mt cy biu din mt biu thc ton hc v lit k nhn
ca cc nt theo th t duyt th ta c:
Biu thc dng tin t (prefix) tng ng vi php duyt tin t ca cy.
Biu thc dng trung t (infix) tng ng vi php duyt trung t ca cy.
Biu thc dng hu t (posfix) tng ng vi php duyt hu t ca cy.
http://gg.gg/sns
Cc php ton trong biu thc ton hc c th c tnh giao hon nhng khi ta
biu din biu thc trn cy th phi tun th theo biu thc cho. V d biu
thc a+b, vi a,b l hai s nguyn th r rng a+b=b+a nhng hai cy biu din
cho hai biu thc ny l khc nhau (v cy c th t).
Hnh I.7: Hai cy c th t ging nhau nhng l hai cy nh phn khc nhau
Ch rng, trong cy nh phn, mt nt con ch c th l nt con tri hoc nt con
phi, nn c nhng cy c th t ging nhau nhng l hai cy nh phn khc nhau. V
d hnh I.7 cho thy hai cy c th t ging nhau nhng l hai cy nh phn khc
nhau. Nt 2 l nt con tri ca cy a/ nhng n l con phi trong cy b/. Tng t nt
5 l con phi trong cy a/ nhng n l con tri trong cy b/.
http://gg.gg/sns
S nt mc i<=2i+1. Do s nt ti a ca n l 2h-1
4. Duyt cy nh phn
Ta c th p dng cc php duyt cy tng qut duyt cy nh phn. Tuy nhin v
cy nh phn l cu trc cy c bit nn cc php duyt cy nh phn cng n gin
hn. C ba cch duyt cy nh phn thng dng (xem kt hp vi hnh I.8):
-
HnhI.8
http://gg.gg/sns
Hnh I.9
Cc danh sch duyt cy nh phn
Tin t:
ABDHIEJCFKLGM
ABDHIEJCFKLGM
Trung
t:
HDIBJEAKFLCGM
HDIBJEAKFLCMG
Hu t:
HIDJEBKLFMGCA
HIDJEBKLFMGCA
5. Ci t cy nh phn
Tng t cy tng qut, ta cng c th ci t cy nh phn bng con tr bng cch
thit k mi nt c hai con tr, mt con tr tr nt con tri, mt con tr tr nt con
phi, trng Data s cha nhn ca nt.
typedef TData;
typedef struct Tnode
{
TData Data;
TNode* left,right;
};
typedef TNode* TTree;
Vi cch khai bo nh trn ta c th thit k cc php ton c bn trn cy nh phn
nh sau :
To cy rng
Cy rng l mt cy l khng cha mt nt no c. Nh vy khi to cy rng ta ch
cn cho cy tr ti gi tr NULL.
void MakeNullTree(TTree *T)
10
http://gg.gg/sns
http://gg.gg/sns
http://gg.gg/sns
2. Ci t cy tm kim nh phn
Cy TKNP, trc ht, l mt cy nh phn. Do ta c th p dng cc cch ci t
nh trnh by trong phn cy nh phn. S khng c s khc bit no trong vic ci
t cu trc d liu cho cy TKNP so vi cy nh phn, nhng tt nhin, s c s khc
bit trong cc gii thut thao tc trn cy TKNP nh tm kim, thm hoc xo mt nt
trn cy TKNP lun m bo tnh cht cu cy TKNP.
Mt cch ci t cy TKNP thng gp l ci t bng con tr. Mi nt ca cy nh l
mt mu tin (record) c ba trng: mt trng cha kho, hai trng kia l hai con tr
tr n hai nt con (nu nt con vng mt ta gn con tr bng NULL)
Khai bo nh sau
typedef <kiu d liu ca kho> KeyType;
typedef struct BSNode
{
KeyType Key;
BSNode* Left,Right;
}
typedef BSNode* BSTree;
Khi to cy TKNP rng
13
http://gg.gg/sns
http://gg.gg/sns
http://gg.gg/sns
http://gg.gg/sns
http://gg.gg/sns
Hnh I.12
Nu N l l ta thay n bi NULL.
http://gg.gg/sns
Hnh I.12
http://gg.gg/sns
Th tc lp xa mt node ra khi cy
int DeleteNode (BSTree &Root, KeyType Item)
{
BSTree x, Parent, xSucc, SubTree;
if((x=SearchLap(Root,Item,Parent)) == NULL)
return 0; //khng thy Item
else
{
if((x->left!=NULL)&&(x->right != NULL))
// nt c hai con
{
xSucc = x->right;
Parent = x;
while (xSucc->left != NULL)
{
Parent = xSucc;
xSucc = xSucc->left;
}
x->Key = xSucc->Key;
x = xSucc;
}
// a nt 2 con v nt c ti a 1 con
SubTree = x->left;
if (SubTree == NULL)
SubTree = x->right;
if (Parent == NULL)
Root = SubTree; // xa nt gc
else if (Parent->left == x)
20
http://gg.gg/sns
Hnh I.13
2. Xy dng cy nh phn cn bng hon ton
Tree CreateTreeCBHT(int n)
{
Tree Root;
int nl, nr;
KeyType x;
if (n<=0) return NULL;
nl = n/2; nr = n-nl-1;
Input(x);//nhp phn t x
if ((Root =CreateNode()) == NULL)
return NULL;
Root->Key = x;
Root->left = CreateTreeCBHT(nl);
Root->right = CreateTreeCBHT(nr);
return Root;
}
21
http://gg.gg/sns
Hnh I.14
CSCB(p) = RH
CSCB(p) = LH
http://gg.gg/sns
{
ElementType Data;
int Balfactor; //Ch s cn bng
struct AVLTN * Lchild, *Rchild;
} AVLTreeNode;
typedef AVLTreeNode *AVLTree;
Vic thm hay hy mt nt trn cy AVL c th lm cy tng hay gim chiu
cao, khi ta cn phi cn bng li cy. gim ti a chi ph cn bng li cy, ta ch
cn bng li cy AVL phm vi cc b.
Cc trng hp mt cn bng
Ngoi cc thao tc thm v hy i vi cy cn bng, ta cn c thm thao tc c bn
l cn bng li cy AVL trong trng hp thm hoc hy mt nt ca n. Khi
lch gia chiu cao cy con phi v tri s l 2. Do trng hp cy lch tri v phi
tng ng l i xng nhau, nn ta ch xt trng hp cy AVL lch tri.
Trng hp a: cy con T1 lch tri
Hnh I.15
Hnh I.16
23
http://gg.gg/sns
Hnh I.17
Hnh I.18
Cn bng li trng hp b:
Hnh I.19
Cn bng li bng php quay kp left-right, ta c kt qu nh sau:
24
http://gg.gg/sns
Hnh I.20
Ci t
//Php quay n Left Left
void RotateLL(AVLTree &T)
{
AVLTree T1 = T->Lchild;
T->Lchild = T1->Rchild;
T1->Rchild = T;
switch (T1->Balfactor)
{
case LH: T->Balfactor = EH;
T1->Balfactor = EH; break;
case EH: T->Balfactor = LH;
T1->Balfactor = RH; break;
}
T = T1;
return ;
}
// Php quay n Right Right
void RotateRR (AVLTree &T)
{
AVLTree T1 = T->Rchild;
T->Rchild = T1->Lchild;
T1->Lchild = T;
switch (T1->Balfactor)
25
http://gg.gg/sns
http://gg.gg/sns
http://gg.gg/sns
http://gg.gg/sns
http://gg.gg/sns
http://gg.gg/sns
if (T->Rchild == NULL)
{
T = T->Lchild; Kqua = 2;
}
else // T c hai con
{
Kqua = TimPhanTuThayThe(p,T->Rchild);
//Tm phn t thay th P xa trn nhnh phi cu T
if (Kqua < 2) return Kqua;
switch (T->Balfactor)
{
case LH : return LeftBalnce(T);
case EH : T->Balfactor = LH;
return 2;
case RH : T->Balfactor = EH;
return 2;
}
}
31
http://gg.gg/sns
32
http://gg.gg/sns
E
M
T
D
a/(b*c)
5 + 4a3 3a2 + 7
(a + b) * (c - d)
Sa+b
1,2,3,4,5
5,4,3,2,1
8,9,11,15,19,20,21,7,3,2,1,5,6,4,13,10,12,17,16,18. Sau xa ln lt cc nt
sau: 2,10,19,8,20
http://gg.gg/sns
Tng s nt ca cy.
S nt ca cy mc k.
S nt l.
34
http://gg.gg/sns
Th
Mc tiu
Sau khi hc xong chng ny, sinh vin nm vng v ci t c cc kiu d liu
tru tng th v vn dng gii nhng bi ton thc t.
Kin thc c bn cn thit
hc tt chng ny sinh vin cn phi nm vng k nng lp trnh c bn nh:
-
Ni dung
Trong chng ny chng ta s nghin cu mt s kiu d liu tru tng c bn nh
sau:
-
Cc khi nim c bn
Biu din th
Cc php duyt th
Mt s bi ton trn th
I. Cc nh ngha
Mt th G bao gm mt tp hp V cc nh v mt tp hp E cc cung tng ng,
k hiu G = (V, E). Cc nh cn c gi l nt (node) hay im (point). Cc cung
ni gia hai nh, hai nh ny c th trng nhau. Hai nh c cung ni nhau gi l hai
nh k (adjacency). Mt cung ni gia hai nh v, w c th coi nh l mt cp im
(v, w). Nu cp ny c th t th ta c cung c th t, ngc li th l cung khng c
th t. Nu cc cung trong th G c th t th G gi l th c hng (directed
graph). Nu cc cung trong th G khng c th t th th G gi l th v
hng (undirected graph). Trong cc phn sau ny ta dng t th ni n th
ni chung, khi no cn phn bit r ta s dng th c hng hay th v hng.
Hnh I.1a cho ta mt v d v th c hng, hnh I.1.b cho ta v d v th v
hng. Trong cc th ny th cc vng trn c nh s biu din cc nh, cn
cc cung c biu din bng on thng c hng (trong I.1a) hoc khng c hng
(trong I.1b).
35
http://gg.gg/sns
V V v
36
http://gg.gg/sns
37
http://gg.gg/sns
Mng HEAD
Bi tp: vit th tc nhp d liu cho th biu din bng danh sch k.
IV. Cc php duyt th (traversals of Graph)
Trong khi gii nhiu bi ton c m hnh ha bng th, ta cn i qua cc nh v
cc cung ca th mt cch c h thng. Vic i qua cc nh ca th mt cch c
h thng nh vy gi l duyt th. C hai php duyt th ph bin l duyt
theo chiu su, v duyt theo chiu rng.
1. Duyt theo chiu su (Depth-first search)
Gi s ta c th G = (V, E) vi cc nh ban u c nh du l cha duyt
(unvisited). T mt nh v no ta bt u duyt nh sau: nh du v duyt, vi
mi nh w cha duyt k vi v, ta thc hin qui qu trnh trn cho w. S d cch
duyt ny c tn l duyt theo chiu su v n s duyt theo mt hng no su
nht c th c. Gii thut duyt theo chiu su mt th c th c trnh by nh
sau, trong ta dng mt mng mark c n phn t nh du cc nh ca th l
duyt hay cha.
38
http://gg.gg/sns
Hnh I.3
http://gg.gg/sns
Hnh I.4
http://gg.gg/sns
41
http://gg.gg/sns
42
http://gg.gg/sns
http://gg.gg/sns
Tm s1 S v k vi s0 sao cho:
L(s1) = Min{L(v): v S}; // khi d(s0, s1) = L(s1)
Bc 2
-
Tm s2 S v k vi s1 sao cho:
L(s2) = Min{L(v): v S}; // khi d(s0, s2) = L(s2)
...
Bc i
-
http://gg.gg/sns
http://gg.gg/sns
Hnh I.5
Kt qu khi p dng gii thut
Ln lp
L[2]
L[3]
L[4]
L[5]
Khi u
{1}
10
30
100
(1)
(1)
(1)
1
{1,2}
10
60
30
100
(1)
(2)
(1)
(1)
46
http://gg.gg/sns
{1,2,4}
{1,2,3,4}
{1,2,3,4,5}
10
40
30
90
(1)
(4)
(1)
(4)
10
40
30
50
(1)
(4)
(1)
(3)
10
40
30
50
(1)
(4)
(1)
(3)
http://gg.gg/sns
M t thut ton
Input: G=(V,E)
Output: T = (V, ?) l nh nht.
Khi ng:
-
U V
U = {1};
Trong khi (U V)
Tm cnh (u,v) c trng s nh nht vi u U, v V. Thm nh v ny vo U,
thm (u,v) vo T
Ci t
tin hnh ci t thut ton, ta cn m t d liu. th c trng s c biu
din thnh mt ma trn k C[n,n].
Khi tm cnh c trng s nh nht ni mt nh trong U v mt nh ngoi U ti
mi bc, ta dng hai mng lu tr:
-
http://gg.gg/sns
http://gg.gg/sns
Ma trn k:
1
VC
VC
VC
VC
VC
VC
VC
VC
VC
VC
Khi to
Mng lowcost
2
VC
VC
Mng closest
50
http://gg.gg/sns
Mng daxet
Mng closest
Mng daxet
Bc 2: tm c Min = 4, k = 6
Mng lowcost
2
Mng closest
Mng daxet
Bc 3: tm c Min = 2, k = 4
Mng lowcost
51
http://gg.gg/sns
Mng closest
Mng daxet
Bc 4: tm c Min = 5, k = 2
Mng lowcost
2
Mng closest
Mng daxet
Bc 5: tm Min = 3, k = 5
Mng lowcost
2
Mng closest
Mng daxet
2
52
http://gg.gg/sns
Bi tp
1. Vit biu din th I.7 bng:
-
Ma trn k.
Danh sch cc nh k.
Theo chiu su bt u t f
Ma trn k.
Danh sch cc nh k.
Theo chiu su bt u t B.
http://gg.gg/sns
54
http://gg.gg/sns
Bng Bm
Mc tiu
Trong chng ny, chng ta s nghin cu bng bm. Bng bm l cu trc d liu
c s dng ci t KDL t in. Nh li rng, KDL t in l mt tp cc i
tng d liu c xem xt n ch vi ba php ton tm kim, xen vo v loi b.
ng nhin l chng ta c th ci t t in bi danh sch, hoc bi cy tm kim
nh phn. Tuy nhin bng bm l mt trong cc phng tin hiu qu nht ci t
t in.
Kin thc c bn cn thit
hc tt chng ny sinh vin cn phi nm vng k nng lp trnh c bn nh:
-
Ni dung
Trong chng ny, chng ta s cp ti cc vn sau y:
-
I. Phng php bm
Vn c t ra l, chng ta c mt tp d liu, chng ta cn a ra mt cu trc
d liu (CTDL) ci t tp d liu ny sao cho cc php ton tm kim, xen, loi c
thc hin hiu qu. Trong cc chng trc, chng ta trnh by cc phng php
ci t KDL tp ng (t in l trng hp ring ca tp ng khi m chng ta ch
quan tm ti ba php ton tm kim, xen, loi). Sau y chng ta trnh by mt k
thut mi lu gi mt tp d liu, l phng php bm.
Nu nh cc gi tr kho ca cc d liu l s nguyn khng m v nm trong khong
[0..SIZE-1], chng ta c th s dng mt mng data c c SIZE lu tp d liu .
D liu c kho l k s c lu trong thnh phn data[k] ca mng. Bi v mng cho
php ta truy cp trc tip ti tng thnh phn ca mng theo ch s, do cc php
ton tm kim, xen, loi c thc hin trong thi gian O(1). Song ng tic l, kho
c th khng phi l s nguyn, thng thng kho cn c th l s thc, l k t hoc
xu k t. Ngay c kho l s nguyn, th cc gi tr kho ni chung khng chy trong
khong [0..SIZE-1].
Trong trng hp tng qut, khi kho khng phi l cc s nguyn trong khong
[0..SIZE-1], chng ta cng mong mun lu tp d liu bi mng, li dng tnh u
vit cho php truy cp trc tip ca mng. Gi s chng ta mun lu tp d liu trong
mng T vi c l SIZE. lm c iu , vi mi d liu chng ta cn nh v
55
http://gg.gg/sns
http://gg.gg/sns
http://gg.gg/sns
http://gg.gg/sns
59
http://gg.gg/sns
Hnh III.2. Bng bm sau khi xen vo cc d liu 38, 130, 13, 14 v 926
By gi chng ta xt xem, nu lu tp d liu trong mng bng phng php nh a
ch m th cc php ton tm kim, xen, loi c tin hnh nh th no. Cc k thut
tm kim, xen, loi c trnh by di y c th s dng cho bt k phng php
thm d no. Trc ht cn lu rng, tm, xen, loi chng ta phi s dng cng
mt phng php thm d, chng hn thm d tuyn tnh. Gi s chng ta cn tm d
liu vi kho l k. u tin cn bm kho k, gi s h(k)=i. Nu trong bng ta cha mt
ln no thc hin php ton loi, th chng ta xem xt cc d liu cha trong mng ti
v tr i v cc v tr tip theo trong dy thm d, chng ta s phthin ra d liu cn tm
ti mt v tr no trong dy thm d, hoc nu gp mt v tr trng trong dy thm
d th c th dng li v kt lun d liu cn tm khng c trong mng. Chng hn
chng ta mun tm xem mng trong Hnh III.2 c cha d liu vi kho l 47? Bi v
h(47) = 3, v d liu c lu theo phng php thm d tuyn tnh, nn chng ta ln
lt xem xt cc v tr 3, 4, 5. Cc v tr ny u cha d liu khc vi 47. n v tr 6,
mng trng. Vy ta kt lun 47 khng c trong mng.
loi d liu vi kho k, trc ht chng ta cn p dng th tc tm kim trnh
by trn nh v d liu trong mng. Gi s d liu c lu trong mng ti v
tr p. Loi d liu v tr p bng cch no? Nu t v tr p l v tr trng, th khi tm
kim nu thm d gp v tr trng ta khng th dng v a ra kt lun d liu khng
c trong mng. Chng hn, trong mng Hnh III.2, ta loi d liu 388 bng cch xem
v tr 3 l trng, sau ta tm d liu 926, v h (926) = 2 v T[2] khng cha 926,
tmn v tr 3 l trng, nhng ta khng th kt lun 926 khng c trong mng. Thc
t 926 v tr 5, v lc a 926 vo mng cc v tr 2, 3, 4 b chim. V vy m
bo th tc tm kim trnh by trn vn cn ng cho trng hp thc hin
php ton loi, khi loi d liu v tr p chng ta t v tr p l v tr loi b. Nh
vy, chng ta quan nim mi v tr i trong mng (0 <= i <= SIZE-1) c th l v tr
trng (EMPTY), v tr loi b (DELETED), hoc v tr cha d liu (ACTIVE).
ng nhin l khi xen vo d liu mi, chng ta c th t n vo v tr loi b.
Vic xen vo mng mt d liu mi c tin hnh bng cch ln lt xem xt cc v
tr trong dy thm d ng vi mi kho ca d liu, khi gp mt v tr trng hoc v tr
c loi b th t d liu vo .
Sau y l hm thm d tuyn tnh
int
// SIZE l c ca mng
// i l v tr ban u c xc nh bi bm kho k, i = h(k)
// hm tr v v tr thm d ln th m= 0, 1, 2,
{
60
http://gg.gg/sns
Hm bm h2 xc nh bc thm d.
61
http://gg.gg/sns
http://gg.gg/sns
Entry
{
int
data;
stateType state;
}
Entry T[SIZE];
OpenHash(); // khi to bng bm rng.
bool
void
void
Delete(int k);
// Loi khi bng bm d liu c kho k.
http://gg.gg/sns
http://gg.gg/sns
http://gg.gg/sns
V. Ci t bng bm dy chuyn
Trong mc ny chng ta s ci t KDL t in bi bng bm dy chuyn. Lp
ChainHash ph thuc tham bin kiu Item vi cc gi thit nh trong mc IV. Lp
ny c nh ngha nh sau:
struct
Cell
{
Item data;
Cell* next;
}; // Cu trc t bo trong dy chuyn.
Cell* T[SIZE];// Mng cc con tr tr u cc dy chuyn
// Cc php ton t in:
bool Search(int k, Item & I) const;
void Insert(const Item & object, bool & Suc);
void Delete(int k);
khi to ra bng bm rng, chng ta ch cn t cc thnh phn trong mng T l
con tr NULL.
Hm kin to mc nh nh sau:
66
http://gg.gg/sns
http://gg.gg/sns
68
http://gg.gg/sns
69
http://gg.gg/sns
Thi gian tm kim trung bnh trn bng bm dy chuyn. Trong bng bm dy
chuyn, xen vo mt d liu mi, ta ch cn t d liu vo u mt dy chuyn
c nh v bi hm bm. Do , thi gian xen vo l O(1).
tm kim (hay loi b) mt d liu, ta cn xem xt cc t bo trong mt dy
chuyn. ng nhin l dy chuyn cng ngn th tm kim cng nhanh. di trung
bnh ca mt dy chuyn l
Khi tm kim thnh cng, chng ta cn bit dy chuyn c rng khng, ri cn xem
xt trung bnh l mt na dy chuyn. Do , s trung bnh cc v tr cn xem xt khi
tm kim thnh cng l
Nu tm kim tht bi, c ngha l ta xem xt tt c cc t bo trong mt dy
chuyn nhng khng thy d liu cn tm, do s trung bnh cc v tr cn xem xt
khi tm kim tht bi l .
Tm li, hiu qu ca php ton tm kim trn bng bm dy chuyn l:
Tm kim thnh cng
Tm kim tht bi
70
http://gg.gg/sns
71
http://gg.gg/sns
72
http://gg.gg/sns
Chng IV
Ni dung
Trong chng ny chng ta s nghin cu mt s phng php thit k gii thut c
bn nh sau:
-
http://gg.gg/sns
http://gg.gg/sns
a[j]
10
15
19
http://gg.gg/sns
T(n) = 1; n = 2
0; n = 1
Vi n = 2k, th:
k 1
k 1
Vy T(n) O(n).
4. Thut ton QuickSort
Pht biu bi ton
Sp xp mt mng khng c th t thnh mt mng c th t xc nh,chng hn tng
hoc gim.
tng
Chn ngu nhin mt phn t x.
Duyt dy t bn tri (theo ch s i) trong khi ai < x.
76
http://gg.gg/sns
ak
am
Tip tc phn hoch cho phn tri v phn phi cho n khi cc phn hoch ch cn li
mt phn t l sp xp xong.
M t thut ton:
Input: a[l..r]
Output: a[l..r] khng gim
QuickSort(a,l,r)
{
i=l;
j=r;
x= a[(l+r)/2];//chn phn t gia
do
{
While(a[i]<x) i++;
While(a[j]>x)j--;
If(i<=j)
{
i ch a[i] v a[j];
i++;
j--;
}
}while(i<=j)
If(l<=j) QuickSort(a,l,j);
If(i<=r) QuickSort(a,i,r);
77
http://gg.gg/sns
T(n) = (n+1) +
Gi tr n+1 bao hm chi ph so snh phn t phn hoch vi mi phn t cn li, tng
cn li mang ngha l mi phn t k c th l phn t phn hoch vi xc sut 1/k v
sau cn li cc mng con c kch thc k-1 v n-k.
Tn = n+1+
2 n
Tk-1
n k =1
Thc hin lin tip cc php ton sau cho c hai v: nhn n v tr cho (n-1)Cn-1:
nTn (n-1)Tn-1 = n(n-1) +
= n(n+1) +
2 n
Tk-1 (n-1)Tn-1
n k =1
2 n
2 n 1
Tk-1 (n-1)[n +
Tk-1]
n k =1
n 1 k =1
= n(n+1) n(n-1) + 2
k =1
n 1
Tk-1 - 2 Tk-1
k =1
78
http://gg.gg/sns
k +1
k =2
= 1/2 + 2
n +1
k
k =3
Tn/(n+1) 2
n +1
1
1
2 dx = 2ln(n)
x
k =3 k
1
79
http://gg.gg/sns
http://gg.gg/sns
j = 1, n; bj =
0; Nu j s dng
Sau khi gn j cho ai, ta cn ghi nh bj (bj = 0) v phi tr li trng thi c cho bj (bj =1)
khi thc hin vic in xong mt hon v.
Ta cn ch rng dy cc bin bj s c khi ng bng 1.
Thut ton
Try(i)
{
For(j=1; j<=n; j++)
{
If(b[j])
{
a[i] = j;
b[j] = 0;
if(i<n)
Try(i+1);
Else Xut;
b[j] = 1;
}
}
4. Bi ton duyt th theo chiu su (DFS)
Pht biu bi ton
G = (V,U) l n th (c hng hoc v hng). V: tp cc nh ca th, U l
tp cc cung ca th. Vi s, t l hai nh ca th, tm tt c cc ng i t s n
t.
tng
Thut ton DFS tin hnh tm kim trong th theo chiu su. Thut ton thc hin
vic thm tt c cc nh c th t c cho ti nh t t nh s cho trc. nh c
81
http://gg.gg/sns
Kt qu:
s=1, t=4
s=2, t = 5
14
234165
174
2365
24165
24365
82
http://gg.gg/sns
http://gg.gg/sns
84
http://gg.gg/sns
http://gg.gg/sns
http://gg.gg/sns
Vmax: gi tr ln nht
M t
Knap_Greedy(w,v,Chon,n,m)
{
Khi ng b[i] = i, i = 1, n ; //Lu tr ch s lm cho mng gim dn
Khi ng Chon[i] = 0, i = 1, n ;//Mng nh du vt c chn
Khi ng Vmax=0;
Tnh n gi: di =
vi
, i = 1, n
wi
http://gg.gg/sns
88
http://gg.gg/sns
89
http://gg.gg/sns