You are on page 1of 123

CU TRC D LIU

V GII THUT
Ging vin : H S m
B mn Mng v truyn thng my tnh
Trng H Cng Ngh - H Quc Gia H Ni
Email damhs@vnu.edu.vn
Mob. 0913580373

Gii thiu mn hc
Cung

cp :
- Cc kin thc c bn v cu trc d liu
v thut ton;
- K nng xy dng, la chn cc cu trc
d liu v cc thut ton hp l.

Gii thiu mn hc

Chng I : Thut ton v phn tch thut ton


Chng II : quy
Chng III : Cc d liu c cu trc
Chng IV : Danh sch
Chng V : Cy
Chng VI * : Bng bm
Chng VII : Sp xp
Chng VIII : Tm kim
Chng IX : th
Chng X : Cc k thut thit k thu ton

Tai li u tham khao

Thomas H. Cormen, Introduction to Algorithms, MIT


Press, 1990
R. Sedgevick,Algorithms Addison- Wesley, Bn dch
ting Vit: Cm nang thut ton ( tp 1, 2).
H S m, Nguyn Vit H, Bi Th Duy
inh Mnh Tng, Xun Li

CHNG I: THUT TON V PHN


TCH THUT TON

1.
2.
3.
4.

Gii bi ton trn my tnh


M hnh d liu
Cu trc d liu
Bi ton v thut ton

1 Giai bi ton trn my tnh

Bc 1. Xc nh bi ton
-Tp Input v Output
Bc 2. La chn/ thit k thut ton
a) La chn/ thit k thut ton
Gii bi ton nhiu thut ton
Khng gian ? Thi gian ?; Ci t ?

1. Gii bi ton trn my tnh

b) Din t thut ton


Input: Hai s nguyn dng a v b;
Output: q v r : a= bq+r.
tng:
- Nu a < b th q = 0 v r = a. Kt thc.
- Nu a > b th a gim i b v q tng ln 1. Lp
cho n khi a < b.

1. Gii bi ton trn my tnh

*) Cch lit k

Bc 1: Nhp a v b;
Bc 2: q 0;
Bc 3: Nu a < b th r a
ri chuyn n b. 5;
Bc 4: a a - b, q q + 1
ri quay v b.3;
Bc 5: a ra r v q. Kt
thc.

*) S khi

1. Gii bi ton trn my tnh


Bc 3. Vit chng trnh

Chn

CTDL
Ngn ng lp trnh
Bc 4. Hiu chnh
Xy dng cc b
input (test) tiu biu
Chy th

Unsigned
Unsignedint
intFactorial
Factorial(unsigned
(unsignedint
intn)n)
{{
ifif(n==0)
(n==0)
return
return1;1;
Else
Else
return
returnn*n*Factorial
Factorial(n-1);
(n-1);
}}

1. Gii bi ton trn my tnh

Bc 5. Vit ti liu
Hng

dn s dng
Thut ton, Cu trc d liu
.

2. M hnh d liu (Data model)

cc tru tng : th, tp hp, danh


sch, cy...
Hai kha cnh:
Gi tr (kiu d liu)
Cc php ton ( operation)
Chng trnh c th truy xut n cc
vng lu tr.

3. Cu trc d liu (Data structures)

cc n v cu trc (construct) ca
NNLT dng biu din cc m hnh
d liu
V d: mng, bn ghi, set, file, xu,..

4. Bi ton v thut ton

4.1. Bai ton


Xc nh r Input v Output
V d:
Kim tra xem N c phi l s nguyn t
hay khng?
- Input
: S nguyn dng N
- Output : Tr li N l s nguyn t?

4. Bi ton v thut ton

4.2. Thut ton


l mt dy hu hn cc thao tc, sp xp
theo mt trt t xc nh, sau khi thc hin,
t Input ta nhn c Output cn tm.

4. Bi ton v thut ton

V d
- Input:N nguyn dng, dy a 1,..., an.
- Output : Tm Max ca dy cho.
tng
Gi thit Max = a1. Vi mi i, nu ai >
Max th thay gi tr Max= ai.

4. Bi ton v thut ton

4.3. M ta thut ton


a) Cch lit k
Bc 1. Nhp N v dy a1, ..., an
Bc 2. t Max = a1, i = 2;
Bc 3. Nu i > N th n B. 5;
Bc 4.
4.1. N u ai > Max th Max = ai.
4.2. t i=i+1 ri quay B.3;

4. Bi ton v thut ton

b) S

khi
Dng: Ovan, Ch
nht, Hn thoi,Mi
tn,

4. Bi ton v thut ton

c)

Ngn ng iu khin
Dng cc k hiu v quy tc
Cch thit lp th t cc thao tc
cu trc iu khin ( 03 )

BIU DIN BNG CU TRC IU KHIN


Trong khi m n th lp li khi sau:
Nu m > n th
Bt m i mt lng l n

iu chnh li gi tr
ca m v n

Nu ngc li th

Bt n i mt lng l m

Cho ti khi m = n th tuyn b


USCLN chnh l gi tr chung ca
m v n

Int Horner(int a[],int x)


{
int result = a[n];
for (i=n-1; i>=0;--1)
result= result*x+a[i];
return result;
}
Chng trnh
trong C++

4. Bi ton v thut ton

4.4. Cc c trng chnh ca thut


ton
a)Tnh kt thc (tnh ng)
b)Tnh xc nh (n ngha)
C ng mt thao tc c thc hin
hoc dng

4. Bi ton v thut ton

c)Tnh chi tit


Ph thuc vo i tng thc hin
d)Tnh ph dng
vi input thay i
e) i lng vo
f) i lng ra

4. Bi ton v thut ton

g) Tnh hiu qu

Thi gian: Tc x l
Khng gian: Dung lng lu tr

4. Bi ton v thut ton

4.5. phc tp thut ton

La chn thut ton


D hiu, d ci t v d ghi chp ?
S dng cc ti nguyn hiu qu.?
c tnh ca bi ton
a)

Phn tch theo kinh nghim


Thc hin v kt lun d mc li
Kch thc d liu l quan trng: T(n)

4. Bi ton v thut ton

b) K php

Gi s T(n) l thi gian thc hin TT v f(n),


g(n), h(n) l cc hm xc nh dng.

Hm Theta ln:
T(n) l hm Theta ln ca g(n): T(n) =(g(n))
nu cc hng s dng c1 ,c2 ,n0 sao cho vi
mi n>= n0 :
c1 g(n) <= T(n) <= c2 g(n)

4. Bi ton v thut ton

Hm Omega ln:
T(n) hm Omega ln ca g(n): T(n)=(g(n))
nu c v n0 sao cho vi mi n>= n0
T(n) >= c.g(n)

4. Bi ton v thut ton

Hm O ln:
T(n) hm Omega ln ca g(n), T(n) =O (g(n))
nu c v n0 sao cho vi mi n>= n0 :
g(n)

T(n) <=c g(n)


gii hn trn ca T(n).

V d, nu T(n) = n2 + 1 th T(n) = O(n2).


Chn c=2 v n0 =1, khi vi mi
n>=1, ta c T(n)= n2+1 <= 2n2 =2g(n).

4. Bi ton v thut ton

Cc tnh cht
(i) Tnh bc cu: nu f(n)= O(g(n)) v
g(n)= O(h(n)) th f(n)= O(h(n))
(ii) Tnh phn x: f(n)=O(f(n))
c)

4. Bi ton v thut ton

d) Xc nh phc tp

Quy tc hng s
Nu P c T(n)= O(c1f(n))
tp O(f(n)).

P c phc

CM: T(n)= O(c1f(n)) nn tn ti c0>0 v n0 >0 T(n) <= c0.c1 f(n)


vi mi n>= n0.
t c=c0.c1 ta c iu cn CM

4. Bi ton v thut ton

Quy

tc ly Max
Nu P c T(n)= O( f(n)+g(n)) th P c
phc tp l O( max ( f(n), g(n))).

CM: T(n) = O( f(n)+g(n)) nn tn ti n0>0 v c>0 T(n) <= cf(n)


+ cg(n), vi mi n>= n0 vy T(n) <= cf(n) +cg(n) <= 2c max
(f(n),g(n)) vi mi n>=n0.
T suy iu cn CM.

4. Bi ton v thut ton

Quy

tc cng
Nu P1 c T1 (n) = O( f(n) v P2 c T2(n)=
O(g(n)), khi : T1(n) +T2(n) = O(f(n) +g(n)).

CM: V T1(n)= O(f(n)) nn cc hng s c1 v n1 sao cho T(n) <= c1.f(n)


n: n>= n1.
V T2(n) =O(g(n)) nn cc hng s c2 v n2 sao cho T(n) <= c1.g(n)
n: n>= n2
Chn c= max (c1,c2) v n0 = max(n1,n2) ta c n: n n>= n0:
T(n) = T1(n) + T2(n) <= c1f(n) + c2g(n)
<= cf(n) +cg(n) = c(f(n)+g(n)).

4. Bi ton v thut ton

Quy

tc nhn
Nu P c T(n)= O(f(n)). Khi nu thc
hin k(n) ln P vi k(n)=O(g(n)) th phc
tp la O(f(n) g(n)).

CM: Thi gian thc hin k(n) ln on chng trnh P s l k(n) T(n),
theo nh ngha:
ck>=0 v nk >0 k(n) <= ck(g(n)) vi mi n>= nk
cT>=0 v nT >0 T(n) <= cTf(n) vi mi n>= nT

Vy vi mi n >= max(nT,nk) ta c k(n)T(n) <= ckcT(f(n)g(n)).

4. Bi ton v thut ton

e) p dng nh gi chng trnh

Cu lnh n thc hin mt thao tc


QT hng s
Cu lnh hp thnh l dy cc cu lnh
QT tng
Cu lnh r nhnh dng If ..then..else.
QT Max
Cc cu lnh lp
QT Nhn

4. Bi ton v thut ton

V d 1

4. Bi ton v thut ton


V d 2

4. Bi ton v thut ton

V d 3

4. Bi ton v thut ton

Mt s dng hm
a thc bc k: P(n), O (nk).
logaf(n), O(log f(n)).
Hng

s, O(1)
Hm m O(2n.)

4. Bi ton v thut ton

Lgn

nlgn

n2

n3

2n

16

64

16

24

64

512

256

16

64

256

4096

65536

32

160

1024

32768

214748364
8

4. Bi ton v thut ton

g) phc tp tnh ton v d liu

vo

Trng hp tt nht: T(n) l thi gian t nht


Trng hp xu nht: T(n) l thi gian ln nht
Trng hp trung bnh: d liu vo tun theo mt
phn b xc sut no

4. Bi ton v thut ton

h) Php ton tch cc


Cc

php ton thc hin nhiu nht


Quy tc 10-90

CHNG II : QUY V THUT TON


QUY
1.
2.

Php lp, quy np v quy


Thut ton quy

1. Php lp, quy np v quy

Lp (interation): bin th ca cng mt thao tc.


Quy np(induction): k thut chng minh cc mnh thuc
dng vi mi n th P(n) la ng.
V d: vi mi n, tng n s l u tin bng n2.
Bc c s: Ch ra P(1) l ng , v 12=1.
Bc quy np: Chng minh nu P(n) l ng th ko theo P(n+1)
cng ng

1. Php lp, quy np v quy

Tng n s l l n2, cn cm tng (n+1) s l l


(n+1)2.
Tng n s l: 1+3+5+.+ (2n-1)= n2.
Khi : [1+3+5+.+ (2n-1)] +(2n+1) =
n2+2n+1= (n+1)2.

1. Php lp, quy np v quy


quy (recursion): l mt k thut nh


ngha mt khi nim trc tip hoc gin
tip theo chnh n.

CHNG II :
QUY V THUT TON QUY
2. Thut ton quy

a) nh ngha
Nu

li gii P c thc hin bng li


gii P c dng ging nh P th ta ni
l li gii quy thut ton quy
Ch :
P ging P
P nh hn P theo ngha no

HNG II :
QUY V THUT TON QUY
2. Thut ton quy

nh

ngha mt hm hay th tc quy


gm hai phn:
(i) Phn neo (anchor)
(ii) Phn quy
Phn quy th hin tnh quy np
ca li gii. Phn neo m bo cho
tnh dng ca thut ton.

CHNG II :
QUY V THUT TON QUY
2. Thut ton quy

b) V d
Tnh giai tha: N!= N(N-1)!
Int fact ( int n) {
If ( n <= 1 )
Return 1; /* c s*/
Else
Return n*fact (n-1); /* quy np*/
}

CHNG II :
QUY V THUT TON QUY
2. Thut ton quy

b) V d:

Dy s Fibonacci:
F(n)= F(n-1)+F(n-2)
(phn quy)
vi n<=2 th F(n)=1
( phn neo).

2. Thut

Bai

ton quy

ton thp Ha ni : Ngi n Benares c


03 ci cc kim cng, Thng t n
chic a bng vng:
- C bn knh khc nhau
- Chng ln nhau mt chic cc
- Theo th t a ln di, a nh trn.
Cc nh s ln lt chuyn cc a sang
mt cc khc theo quy tc sau:

2. Thut

Khi

ton quy

chuyn mt a phi t vo mt trong


03 cc
Mi ln ch chuyn ng mt a trn cng
ti mt cc v t vo trn cng cc
chuyn n.
a ln hn khng c php t ln a
nh hn.

Thp Ha n i

2. Thut

ton quy

d, vi trng hp n=2 ta c th chuyn


nh sau:
Chuyn a nh sang cc 3
Chuyn a ln sang cc 2
Chuyn a t cc 3 sang cc 2

2. Thut

Nu

ton quy

n=1 th chuyn a duy nht t cc 1


sang cc 2. Kt thc.
Gi thit ta c cch chuyn (n-1) a t cc 1
sang cc 3.
Chuyn a ln nht ang cc 1 sang cc 2
Chuyn (n-1) a t cc 3 sang cc 2.
Kt thc.

2. Thut

ton quy

c) nh gi v quy
u im:
Mnh, r rng, cht ch
Thit k TT n gin

2. Thut

ton quy

Nhc im:
Li gi hm tn rt nhiu thi gian.
Thn trng ng chy v hn.

CHNG III :KiU D LIU CU TRC


1.
2.
3.
4.

Cc kiu d liu chun


Kiu mng (array) v bin ch s
Kiu xu (string)
Kiu cu trc (struct)

1. Cc

kiu d liu chun

Kiu

d liu chun: nguyn, thc, lgic,


V d,
Khai bo bin int x, float y,.
Vi kiu nguyn c cc php ton: cng,
tr, nhn, chia x div y ( chia nguyn ), x
mod y ( ly phn d ca php chia).

2. Kiu mng (array) v bin ch s

2.1. Kiu mang mt chiu


Dy

lin tip cc phn t cng kiu.


t tn v mi phn t c mt ch s.
Tham chiu tn mng v ch s [ ] .
S lng cc phn t cho trc.

2. Kiu mng (array) v bin ch s


V

int a[10] : mng c tn l a, c 10 phn


t c kiu s nguyn
float b[20] : mng c tn l b, c 20
phn t c kiu s thc

2. Kiu mng (array) v bin ch s

2.2. Kiu mang hai chiu


Bng nxm cc phn t cng kiu d liu.
Tham chiu
Tn mng cng vi hai ch s, [ ].

2. Kiu mng (array) v bin ch s


V

d: int a[10][15] :
float b[20][10]:

2. Kiu mng (array) v bin ch s

2.3. Cc ghi ch v kiu mang


a

ch cc phn t l lin tip nhau.


Cc phn t c sp xp theo hng.
B nh l c nh sut c qu trnh

2. Kiu mng (array) v bin ch s


Ch

s mng khng c vt qu
phm vi V d: a[5] * b[8][3] l hp l.
Cu trc n gin, truy nhp nhanh.
Thiu mm do trong cc php ton
nh xa, chn.
C th dng php gn cho c mng.

3. Kiu xu (chui string)


Kiu

mng c bit m kiu phn t ca


mng ny l k t. Thng thng xu
c t trong cp du v ,
V d: S=Tin hoc
Cc k t trong xu c vit lin tip v
c th xut hin nhiu ln
S lng cc k t l di ca xu, c
xu rng

3. Kiu xu (chui string)

Php ton trn xu:

Ghp xu: Char*strcat(char* s1, char s2)


Copy (S,M,N): gi tr l xu con ca su S gm cc
k t t v tr M n N
Delete (S,M,N): xa lin tip N k t ca S bt u
t k t th M
Php chn Insert (S1, S2, N): Chn xu S1 vo
trc k t N ca xu S2

4. Kiu cu trc (struct)

Tp

cc i tng c cng mt s thuc


tnh c th c cc kiu d liu khc
nhau.
Mi i tng m t bng mt cu trc.
Mi thuc tnh tng ng vi mt thnh
phn .

4. Kiu cu trc (struct)

Khai

bo kiu cu trc:
STRUCT tn_kiu_cu trc {
Khai bo cc thnh phn
};

4. Kiu cu trc (struct)


Truy

nhp:
Xc nh: vit tn cu trc, du chm (.)
v sau cng l tn thnh phn.
Thnh phn ca mt cu trc c th l
mt cu trc.

CHNG IV: DANH SCH (LIST)

1. Khi

nim danh sch


2. Biu din danh sch trong my tnh.
3. Mt s nhn xt.
4. Kiu d liu con tr (pointer) v vic cp
pht/thu hi b nh ng.

1. Khi nim danh sch

a) nh ngha
Danh

sch l mt tp sp th t cc phn t
cng kiu.
Cc phn t c sp theo th t trc- sau
Danh sch con gm cc phn t lin tip t a i
n aj ca danh sch.
Nu i=1 gi l phn u (prefix)
Nu j=n gi l phn cui (postfix).

1. Khi nim danh sch


Dy

con l mt DS to thnh bng cch


loi t DS mt s phn t. V d, DS =
(a,b,c,d,e,f). Khi :
(c,d,e) l mt danh sch con ca DS
(a, b) l mt phn u ca DS
(c,d,e,f) l mt phn cui ca DS
(a,c,f) l mt dy con ca DS

1. Khi nim danh sch


b) Cc php ton
Php khi to to ra mt danh sch rng.
Xc nh di
Xa
Chn
Tm kim
Kim tra tnh trng thi rng
Kim tra trng thi trn
Duyt danh sch.
Sp xp

2. Biu din danh sch trong my tnh

2.1. Cai t bng mang mt chiu


VD.

DS = ( A, B, C, D, E, F, G, H, I, J, K)

Mng
A

M gm 11 phn t:
C

2. Biu din danh sch trong my tnh

2.1. Cai t bng mang mt chiu


Chn
- Dn cc phn t t v tr P n cui sang phi mt v tr:

a)

P
A

- t

V vo v tr

-Tng

n ln 1

2. Biu din danh sch trong my tnh


b) Xa
- Mng
A

ban u
B

- Chuyn

tt c cc phn t t v tr P+1 n cui


sang tri 1 v tr
A

-Gim

n i 1.

Nu

khng cn bo lu th t cc phn t
sau khi xa th ch cn tro i gi tr phn t
cn xa cho phn t cui cng v gim n i
1.

2. Biu din danh sch trong my tnh

c) Nhn xt
Truy

cp trc tip n mi phn t


Chn v xa u phi dch chuyn mt s
cc phn t
Kch thc mng trong mi ngn ng lp
trnh u l c nh

2. Biu din danh sch trong my tnh

2.2. DS ni n
DS

cc phn t c ni vi nhau theo mt


chiu.
Mi phn t l mt Struct (bn ghi)
Mt trng con tr cha thng tin lin kt
Cc trng cha thng tin
u (Head) v Cui (Tail)
Trng NEXT ca phn t cui cha gi tr c
bit (Nill, Null)

2. Biu din danh sch trong my tnh

2. Biu din danh sch trong my tnh


a) Chn

2. Biu din danh sch trong my tnh


b) Xa
A

2. Biu din danh sch trong my tnh

C)

Xc nh

Tm kim bt u t
Head, Theo con tr ca
trng NEXT
duyt tun t.

2. Biu din danh sch trong my tnh

2.3. DS ni kp
DS

gm cc phn t c ni vi nhau theo


hai chiu.
Mi phn t l mt STRUCT c hai trng
lin kt (LINK) lin kt ti 2 phn t trc v
sau n v trng DATA (INFO) lu tr thng
tin.

2. Biu din danh sch trong my tnh


C

hai cch duyt:


Bt u t nt First, da vo NEXT i
n khi duyt qua nt Last;
Hoc bt u t nt Last da vo Prev
i n khi duyt qua nt First.

CHNG IV: DANH SCH (LIST)


2. Biu din danh sch trong my tnh

chn/xa bng cch chnh li cc lin kt


ca cc nt lin quan.

2. Biu din danh sch trong my tnh

2.4. DS ni vng mt hng


Phn t cui tr v phn t u tin

Ch

cn xc nh c mt phn t no
Chn/xa bng cch chnh li cc lin kt
ca cc nt lin quan.

2. Biu din danh sch trong my tnh

2.5. DS ni vng hai hng


To

t DS ni kp, PREV ca nt First tr ti


nt Last, NEXT ca nt Last tr ti First.

CHNG IV: DANH SCH (LIST)


2. Biu din danh sch trong my tnh

2.6. Ngn xp va hang i

CHNG IV: DANH SCH (LIST)


2. Biu din danh sch trong my tnh
2.6. Ngn xp va hang i
a) Ngn

xp (Stack)
Mt kiu DS
B sung thm v ly ra mt phn t cng
cui DS.
Hot ng theo nguyn tc vo sau-ra
trc (LIFO)

2. Biu din danh sch trong my tnh

M ta Stack bng mang


(i) Thm (Push) vo Stack = thm vo cui mng
(ii)
Ly ra (Pop) khi Stack = loi b cui mng
(iii) Overstack khi mng y
(iv) EmptyStack khi trong mng khng c phn t
no c.

2. Biu din danh sch trong my tnh


M

ta Stack bng DS ni n
Stack ch trn khi vng khng gian nh
dng cho cc bin ng khng cn
Khng gian b nh dng cho cc bin
ng l rt ln nn b qua vic kim tra
trn Stack.

2. Biu din danh sch trong my tnh


b) Hng i (Queue)
Mt kiu danh sch
Thm mt phn t vo cui danh sch
(Rear) v Ly ra mt phn t u danh
sch.
Hot ng theo nguyn tc vo trc-ra
trc (FIFO - First In First Out).

2. Biu din danh sch trong my tnh


Cai

t Queue bng mang


S dng hai ch s Front lu ch s u v
Rear lu ch s cui. Khi to t Front l 1
cn Rear l 0.
(i) Thm ( Push) vo Queue: tng Rear ln 1 v
a gi tr ca phn t cn b sung vo phn t
c ch s l Rear.

2. Biu din danh sch trong my tnh


ii) Ly ra (Pop) :ly gi tr phn t c ch s l
Front v sau tng Front ln 1.
(iii) Khi tng ch s Rear ln ht khong cho
php thOverQueue
(iv) Khi Front > Rear th EmptyQueue

2. Biu din danh sch trong my tnh


Queue

vng trn
Cc phn t xp quanh vng trn theo
mt hng.
Cc phn t nm trn cung trn t v tr
Front n Rear l thuc Queue.

2. Biu din danh sch trong my tnh

Khi thm :dch chuyn ch s Rear theo vng trn 1 v tr ri t gi tr cn


thm vo .
- Khi ly ra : ly phn t c ch s l Front ri dch chuyn ch s Front theo
vng trn 1 v tr.
Vn-1

Vn

V2

V1

2. Biu din danh sch trong my tnh


cai t :
(i) Mt phng tin chia b nh thnh cc
nt, mi nt c phn lu tr data, phn lu tr
cc lin kt (con tr) v cch ci t cho con
tr
(ii) Ci t cc thao tc truy nhp gi tr (c
data v pointer).
(iii) Mt phng tin no nh du
vng b nh

3. Mt s nhn xt
Ci

t danh sch bng mng to ra hn

ch:
di ca danh sch.
Kim tra trn v rng khi thc hin
chn v xa.
Khi thc hin chn v Xa u phi
thc hin php dch chuyn.

3. Mt s nhn xt
Trong

cc cu trc DS, thc hin cc thao


tc c bn cn cc thao tc ti thiu:
nh v phn t u tin ca DS
Cho trc v tr ca mt phn t bt k
trong DS, xc nh c phn t tip theo.

4. Kiu d liu con tr v vic cp pht/thu hi b nh ng

khc phc, cn

Mt th tc tin nh cp pht b nh
( New (p) trong TP, trong C c cc hm
Void * calloc, * void maloc ) v mt th tc
gii phng b nh ( Dispose(p) trong
Tp v hm Void Free trong C)
Dng bin con tr truy cp n vng
nh ny.

CHNG V CU TRC D LiU


BNG BM
1.

Bng bm m
1.1. Bng bm
1.2. Hm bm
1.3. Xung t
1.4. Mt s hm bm thng dng

2.

Bng bm ng
2.1. Bm li tuyn tnh.
2.2. Bm li bnh phng
2.3. Bm li bng cch to vng mi

CHNG VI:
CU TRC D LiU BNG BM
1. Bng bm m

Bang

bm (Hash Table):
- Mng B gm m phn t
-Lu tr ch s nh v phn t d liu c kha
phn bit thuc tp s nguyn { 0,1,2m-1}

1. Bng bm m

Ham bm
(Hash function):

H(x) cho gi tr l mt ch s phn t ca B

1. Bng bm m
Xung

t (collision):

x1<>x2 nhng H(x1)=H(x2)

1. Bng bm m
Xung t:

1. Bng bm m

Xung t:
Gii quyt:

lin kt cc danh sch c cc kha khc nhau nhng c cng gi tr


hm bm thnh mt danh sch

lin kt trong bng bm B s tr ti danh sch u tin.

CHNG VI:
CU TRC D LiU BNG BM
1. Bng bm m

Mt s ham bm thng dng:


Ham ct b b bt mt phn no ca
kha.
V d: x=842615, b bt chng hn cc
ch s hng l (1,3,5), s cn li s l
821. Vy H(x) = H(842615) = 821.
Nhn xt: kh c phn b u.

Ham gp chia s nguyn thnh mt s on ty chn, sau


kt hp

V d: S cc hng l: 465 v s cc hng chn:


821, vy H(x)=465+821=1286.

Nhn xt: Tnh cht th hai c th tha mn tt hn

1. Bng bm m
Ham

phn d ca php chia x/m


Nn chn m l s nguyn t.

Nhn xt: Cc cch ly phn d cho kh nng


trnh hin tng xung t

CHNG VI:
CU TRC D LiU BNG BM
2. Bng bm ng
Bng

bm m: ch dng lu tr cc lin
kt tr n cc thnh phn d liu c kha
tng ng.
Bng bm ng: bng bm m mi thnh
phn ca n lu tr chnh cc thnh phn
d liu.

CHNG VI:
CU TRC D LiU BNG BM
2. Bng bm ng

Cc phng php x l:
a) Bm li tuyn tnh
Hi (x) = (H(x)+i) mod m

Nhn xt Cc gi tr hm bm xp thnh tng


on con, nn vic tm kim v tr rng s rt
chm.

CHNG VI:
CU TRC D LiU BNG BM
2. Bng bm ng

2. Bng bm ng

b) Bm li bnh phng
Hi(x) = ( H(x)+i2) mod m

2. Bng bm ng

c) Bm li bng cch to vng mi

Ngoi bng B cn to ra mt vng khng gian mi

You might also like