Chương VII Tìm kiếm - II - Giáo trình Cấu trúc dữ liệu và giải thuật | Trường Đại học Bách khoa Hà Nội

Cấu trúc của các nút trong cây 2-3 Chỉ có nút lá chứa các giá trị (Các phần tử ), các nút lá chứa các giá trị tăng dần (xét từ trái sang phải) Các nút nhánh chứa thông tin về đường đi hỗ trợ cho việc tìm kiếm các giá trị. Tài liệu được sưu tầm, giúp bạn ôn tập và đạt kết quả cao. Mời bạn đọc đón xem!

Thông tin:
33 trang 4 tháng trước

Bình luận

Vui lòng đăng nhập hoặc đăng ký để gửi bình luận.

Chương VII Tìm kiếm - II - Giáo trình Cấu trúc dữ liệu và giải thuật | Trường Đại học Bách khoa Hà Nội

Cấu trúc của các nút trong cây 2-3 Chỉ có nút lá chứa các giá trị (Các phần tử ), các nút lá chứa các giá trị tăng dần (xét từ trái sang phải) Các nút nhánh chứa thông tin về đường đi hỗ trợ cho việc tìm kiếm các giá trị. Tài liệu được sưu tầm, giúp bạn ôn tập và đạt kết quả cao. Mời bạn đọc đón xem!

19 10 lượt tải Tải xuống
1
Chương VII: Tìm kiếm-II
Tìm kiếm–PhnII
z Ni dung
Các dng cây đặcbits dng trong tìm kiếm
z Cây tìm kiếm đa nhánh
z Cây 2:3
z Cây nh phân tìm kiếmti ưu
CutrúcBng băm (Hash Table)
Tìm kiếmxâumu (Pattern Matching)
2
Cây 2-3
z Cây tìm kiếm đặcbit
Mt nút nhánh 2 hoc3 con
Ttc các đường đit nút gcti nút đềucóđộ dài
bng nhau
Cây mtnútlàtrường hp đặcbitcacây2-3
z Cutrúcca các nút trong cây 2-3
Ch nút cha các giá tr (Các phnt ), các nút
cha các giá tr tăng dn(xétt trái sang phi)
Các nút nhánh cha thông tin vềđưng đih tr cho vic
tìm kiếm các giá tr
Cây 2-3
z Quy cách ca nút trong cây 2-3
z Quy cách ca nút nhánh cacây
VALUETYPE
LPTR LDATA MPTR MDATA RPTRTYPE
3
Cây2-3 –Víd
1 : 3
1
11
7:11
6:11
76
3
Tìm kiếm trên cây 2-3
Function SEARCH-2-3(T,X)
1. p:= T;
2. while TYPE(p) =1 do begin
if X <= LDATA(p) then p:= LPTR(p);
else if X <= MDATA(p) then p:= MPTR(p);
else if RPTR(p) < > NULL then p:= RPTR(p)
else SEARCH-2-3 := NULL;
end
3. {Tìm được đến 1 nút lá}
if VALUE(p) = X then SEARCH-2-3 := p; else SEARCH-2-3 := NULL;
4. return
4
Cây 2-3 : B sung
z B sung phi xét 4 trường hp
Cây ban đầurng
Cây ban đầuch 1 nút: Sau khi b sung, cây thêm
mt nút nhánh
4: 9
9
44
Cây ban đầurng, b sung 4
Cây ban đầucó1 nút,
b sung thêm 9
Cây 2-3 : B sung
Cây ban đầucónhiu nút, nút mi đượcb sung thành
con camt nút hin đang 2 con: So sánh giá tr ca
nút mivi 2 nút con để tìmrav trí đúng
4: 9
9
4
4: 7
9
4
7
Trướckhib sung
Sau khi b sung 7
5
Cây 2-3: B sung
Nút mi đượcb sung làm con camtnútN đãcó3
con: Tomt nút nhánh miN2 –s nút anh em bên
phicaN, ly 2 con ccphicaN làmcon caN2.
Victáchcóth s dinra các mc cha caN na.
4: 7
9
4 7
4: 7
9
4 7
11
4: 7
4
7
9: 11
119
7:11
Cây 2-3 : B sung
3: 6
3
6
7: 11
12
7 11
13:16
13
16
6: 12
3: 6
3
6
7: 11
11
7 8
13:16
13
16
6: 12
12
Trướckhib sung
Ngay sau khi b sung 8
6
Cây 2-3: B sung
3: 6
3
6
7: 8
11
7
8
13:16
13
16
6: 12
12
11:12
Sau khi tách nút ln1
Cây 2-3: B sung
3: 6
3
6
7: 8
11
7
8
13:16
13
16
6: 8
12
11:12
12:
16
8: 16
Sau khi tách nút ln2
7
Các dng cây khác trong tìm kiếm
K
1
K
2
K
3
keys < K
1
K
1
<= keys < K
2
K
2
<= keys < K
3
K
3
<= keys
Mtcâydng cây tìm kiếm đanhánh
Các dng cây khác trong tìm kiếm
z Cây tìm kiếm đa nhánh(Multi-way Tree)
mt cây bcbtk nhưng tính chtth
t tương t như cây nh phân
Mi nút trong cây cha m-1 khóa m con tr
trỏđến các cây con
Các giá tr xuthin trong mt cây con đượctr
bi con tr p
z Nh hơngiátr khóa bên phicap
z Lnhơnhocbng gía tr khóa bên trái p
8
Các dng cây khác trong tìm kiếm
d cây tìm kiếm đa nhánh
50 100 150
35 45 85 95 125 135 175
60 70 90 110 120
75
Các dng cây khác trong tìm kiếm
z Cây B – Cây tìm kiếm đa nhánh cân bng
Mt cây tìm kiếm đa nhánh cân bng bcm có
các đặctrưng sau
z Gccacâylàmtnútláhoccóítnht2 con
z Ttc các nút nhánh cacây(tr nút gc) có t m/2
đến m con
z Các nút t m/2 -1 đếnm-1 giátr khóa trong đó.
z Đường đit nút gctimtnútlábtkỳđucóđộ dài
như nhau
9
Các dng cây khác trong tìm kiếm
42
16 20 58 76 81 93
11 14
17 18 19 24
21 22 23
45 52 63 65 74 78 79 85 87 94 97
B- Tree vim = 5
Cây nh phân tìm kiếmti ưu
Cây nh phân tìm kiếmti ưu:
z cây nh phân tìm kiếm tính đếntrường hpcác
khóa khác nhau trong mttpcóxácsutxuthin
khác nhau
z Khóa xuthinnhiu thì tìm nhanh hơn Ù đường đit
đỉnh đếnv trí cakhóacóđộ dài ngnhơn
z Khái nim: Giá tr ca cây T
=
=
n
i
ii
hpTC
1
*)(
10
Cây nh phân tìm kiếmti ưu
z d: Cây nh phân tìm kiếm ng vi3 khóak
1
< k
2
< k
3
vixácsutp
1
= 1/7; p
2
= 2/7, p
3
= 4/7
k3
k2
k1
C = 1 * 1/7 + 2*2/7 + 3*4/7 = 17/7
k3
k2
k1
C= 1*2/7 + 2 * 1/7 + 2*4/7 =12/7
Cây nh phân tìm kiếmti ưu
z Cây nh phân tìm kiếmti ưu: Là cây nh phân tìm kiếm
ng vidãykhóak
1
< k
2
< ….< k
n
xác sutxuthin
lnlượtlàp
1
, p
2
, …., p
n
cây đócógiátr nh nht
z d: Cây nh phân tìm kiếmti ưu ng vi3 khóak
1
<
k
2
< k
3
vixácsutp
1
= 1/7; p
2
= 2/7, p
3
= 4/7
k2
k1
k3
11
Cây nh phân tìm kiếmti ưu
Bài toán xây dng cây ti ưu
z Đầuvào: Dãykhóak
1
< k
2
< ….< k
n
xác sutxut
hinlnlượtlàp
1
, p
2
, …., p
n
z Đầura: Xácđịnh cây nh phân tìm kiếmti ưuxáclp
đượctrênn núttương ng vin khóađãcho
Cây nh phân tìm kiếmti ưu
z Nhnxét
Cây T là cây nh phân tìm kiếmti ưugm n khóa , k
r
gccacây
ÆCây T
1,r-1
gm r-1 khóa đầu tiên, cây T
r+1,n
gm n-r khóa
cui cùng đềuphilàcâynh phân tìm kiếmti ưu
ÆMundng đượcT, cnphidng t hai cây con canó
12
Cây nh phân tìm kiếmti ưu
z Tính giá tr camtcâyT
i,j
da vào giá tr các cây con
z T
i,j
cây todng đượct các khóa k
i
< k
i+1
< … < k
j
z r trongcôngthcchotaxácđịnh đượckhóanàolàgc
cacây
=
+
=
+
+
=
j
ik
kji
jrrijiji
pp
jriCCpC
,
,11,,,
)()]min[(
Cây nh phân tìm kiếmti ưu
Xác định cây ti ưuvi 4 nút, cnphithchin tính toán
các giá tr theo sơđsau
C(1,4)
C(1,3) C(2,4)
C(1,2) C(2,3) C(3,4)
13
Cây nh phân tìm kiếmti ưu
z d: Dãy bao gm 5 khóa, vixácsutnhư sau
Cây nh phân tìm kiếmti ưu
z Các giá tr p
i,j
( i<= j) đượcxácđịnh th hintrongma
trnsau
P[i,j]=
.010000
.31.3000
.54.53.2300
.76.75.45.220
1.99.69.46.24
14
Cây nh phân tìm kiếmti ưu
z Kếtqu các giá tr cacáccâyti ưu
C[i,j]=
.010000
.32.3000
.78.76.2300
1.31.27.67.220
21.991.16.68.24
Cây nh phân tìm kiếmti ưu
C[i,j]=
.010000
.32.3000
.2300
.67.220
.68.24
C[1,2]=P[1,2]+min
r=1, C[2,2] Å.22
r=2, C[1,1] Å .24
r=1
C[2,3]=P[2,3]+min
r=2, C[3,3] Å.23
r=3, C[2,2] Å .22
r=3
……
P[i,j]=
.010000
.31.3000
.54.53.2300
.76.75.45.220
1.99.69.46.24
C[4,5]=P[4,5]+min
r=4, C[5,5] Å.01
r=5, C[4,4] Å .3
r=4
1
2
3
2
4
5
15
Cây nh phân tìm kiếmti ưu
C[i,j]=
.010000
.32.3000
.76.2300
1.27.67.220
1.16.68.24
C[1,3]=P[1,3]+min
r=1, C[2,3] Å.67
r=2, C[1,1]+C[3,3] Å .47
r=3, C[1,2] Å.68
r=2
P[i,j]=
.010000
.31.3000
.54.53.2300
.76.75.45.220
1.99.69.46.24
C[2,4]=P[2,4]+min
r=2, C[3,4] Å.76
r=3, C[2,2]+C[4,4] Å .52
r=4, C[2,3] Å.67
r=3
2
1
3
3
2
4
Cây nh phân tìm kiếmti ưu
C[1,5]=P[1,5]+min
r=1, C[2,5] Å1.3
r=2, C[1,1]+C[3,5] Å 1.02
r=3, C[1,2]+C[4,5] Å1
r=4, C[1,3]+C[5,5] Å 1.17
r=5, C[1,4] Å1.99
r=3
3
1,2
4,5
Cây kếtqu
16
Tìm kiếmdatrênbng băm
z Tìm kiếm không datrênso sánhgiátr khóa da
vào bnthângiátr khóa
z S dng mtqui tcbiến đổithamchiếumtgiátr khóa
sang mt địach (tương đối) lưutr phnt d liu
Tìm kiếmdatrênbng băm
John Adams100
Ray Black007
Vu Nguyen005
Sarah Trapp002
Harry Lee001
Khóa
Địach
Vu Nguyen 102002
John Adams 107095
Sarah Trapp 111060
Hàm băm
005
100
002
17
Tìm kiếmdatrênbng băm
Hàm băm h(k) thường độ phctplàO(1)
z h: U Æ {0, 1, .., m-1}
z Mtphnt khóa k s đưc tham chiếuvàom đưc
đánh ch s h(k) có giá tr t 0-> m-1 trong bng bămkích
thưcm
z Khi s dng bng băm đ tìm kiếm, thay quan tâm đến|U|
giá tr, chúngtach quan tâm đến m ô trong bng
Đụng độ
z Hintượng xy ra khi hai hay nhiu khóa khác nhau sau khi
bămchocùngmtgiátrịđach tương đối
z Hai phương pháp giiquyết đụng độ
Phương pháp móc xích
Phương pháp địach m
Hàm băm
z Hàm bămttlàmthàmbăm đơnginvàcóth tính
toán đượctrongthigianngn
z Mctiêucahàmbămlàphânb mttpcácgiátr
khóa mtcáchngunhiênvàđềutrênmttp các ô
trong bng
18
Hàm băm
z h(k) = k mod m
m = 12 and k=100 Æ h(k) = 4
Cnphitránhs dung mts giá tr cho m
z m không nên mts dng 2
p
Thông thưng, m đưcchnlàmts nguyên t không quá
gnvimtgiátr 2
P
d: n=2000, ta chpnhnkimtra3 phnt khi thc
hinvic tìm kiếm, ta th chnm =701
701 là mts nguyên t gnvi 2000/3
h(k)=k mod 701
Hàm băm
h(k) = m*(k*A mod 1)
A là mtgiátr nm trong khong 0-1. Theo Knuth đ xut
Nhân k viA, lyphnsauduphy
Nhân phnsauduphy đóvi m , rilyphn nguyên
z d :k=123456,m=10000,A=0.618
h(k)=floor(10000*(123456*0.618… mod 1))
=floor(10000*(76300.004151..mod 1))
=floor(10000*0.0041
151…..)=41.
(
)
...6180339887.02/15 =A
19
Hàm băm
z h(k) = s tobimts ch sốởgiaca bình
phương cakhóa
z d: k = 9452
9452 * 9452 = 89340304 3403
z Nếukhóaln, có th ch dùng mtphnca khóa khi
tính bình phương
379452: 379 * 379 = 143641 364
121267: 121 * 121 = 014641 464
045128: 045 * 045 = 002025 202
Hàm băm
S dng phương pháp phân đon
z Khóa được chia thành nhiu đon, thường độ dài
bng độ dài địach
z Áp dng mts k thuttrêncácđon để xác định địa
ch
d: Khóa = 123|456|789
k thuttách k thutgp
123 + 456 + 789 = 1368 321 + 456 + 987 = 1764
368 764
20
Gii quyết đụng độ
Các k thutgiiquyết đụng độ
z Phương pháp móc xích: Miphnt trong bng bămlà
mt danh sách móc nichacácphnt
z Phương pháp địach m : Tìm trong bng bămtheomt
qui tcnàođó để xác định mt ô trng lưuphnt mi
nếucóđụng độ xyra
Th tuyến tính
Bămli
Gii quyết đụng độ -Phương pháp móc xích
| 1/33

Preview text:

Chương VII: Tìm kiếm - II
Tìm kiếm – Phần II z Nội dung
– Các dạng cây đặc biệt sử dụng trong tìm kiếm z Cây tìm kiếm đa nhánh z Cây 2:3
z Cây nhị phân tìm kiếm tối ưu
– Cấu trúc Bảng băm (Hash Table)
– Tìm kiếm xâu mẫu (Pattern Matching) 1 Cây 2-3
z Cây tìm kiếm đặc biệt
– Một nút nhánh có 2 hoặc 3 con
– Tất cả các đường đi từ nút gốc tới nút lá đều có độ dài bằng nhau
– Cây có một nút là trường hợp đặc biệt của cây 2-3
z Cấu trúc của các nút trong cây 2-3
– Chỉ có nút lá chứa các giá trị (Các phần tử ), các nút lá
chứa các giá trị tăng dần (xét từ trái sang phải)
– Các nút nhánh chứa thông tin về đường đi hỗ trợ cho việc tìm kiếm các giá trị Cây 2-3
z Quy cách của nút lá trong cây 2-3 TYPE VALUE
z Quy cách của nút nhánh của cây TYPE LPTR LDATA MPTR MDATA RPTR 2 Cây 2-3 – Ví dụ 6:11 1 : 3 7:11 1 3 6 7 11
Tìm kiếm trên cây 2-3
Function SEARCH-2-3(T,X) 1. p:= T; 2. while TYPE(p) =1 do begin
if X <= LDATA(p) then p:= LPTR(p);
else if X <= MDATA(p) then p:= MPTR(p);
else if RPTR(p) < > NULL then p:= RPTR(p) else SEARCH-2-3 := NULL; end
3. {Tìm được đến 1 nút lá}
if VALUE(p) = X then SEARCH-2-3 := p; else SEARCH-2-3 := NULL; 4. return 3 Cây 2-3 : Bổ sung
z Bổ sung phải xét 4 trường hợp – Cây ban đầu rỗng
– Cây ban đầu chỉ có 1 nút: Sau khi bổ sung, cây có thêm một nút nhánh 4: 9 4 4 9
Cây ban đầu rỗng, bổ sung 4 Cây ban đầu có 1 nút, bổ sung thêm 9 Cây 2-3 : Bổ sung
– Cây ban đầu có nhiều nút, nút mới được bổ sung thành
con của một nút hiện đang có 2 con: So sánh giá trị của
nút mới với 2 nút con để tìm ra vị trí đúng 4: 9 4: 7 4 9 4 7 9 Trước khi bổ sung Sau khi bổ sung 7 4 Cây 2-3: Bổ sung
– Nút mới được bổ sung làm con của một nút N đã có 3
con: Tạo một nút nhánh mới N2 – sẽ là nút anh em bên
phải của N, lấy 2 con cực phải của N làm con của N2.
Việc tách có thể sẽ diễn ra ở các mức cha của N nữa. 7:11 4: 7 4: 7 4 7 9 4 7 9 11 4: 7 9: 11 4 7 9 11 Cây 2-3 : Bổ sung 6: 12 Trước khi bổ sung 3: 6 7: 11 13:16 3 6 7 11 12 13 16 6: 12 3: 6 7: 11 13:16 Ngay sau khi bổ sung 8 3 6 7 8 11 12 13 16 5 Cây 2-3: Bổ sung 6: 12 3: 6 7: 8 11:12 13:16 3 6 7 8 11 12 13 16 Sau khi tách nút lần 1 Cây 2-3: Bổ sung 8: 16 12: 6: 8 16 3: 6 7: 8 11:12 13:16 3 6 7 8 11 12 13 16 Sau khi tách nút lần 2 6
Các dạng cây khác trong tìm kiếm K1 K2 K3 keys < K1 K1<= keys < K2 K2<= keys < K3 K3<= keys
Một cây dạng cây tìm kiếm đa nhánh
Các dạng cây khác trong tìm kiếm
z Cây tìm kiếm đa nhánh(Multi-way Tree)
– Là một cây có bậc bất kỳ nhưng có tính chất thứ
tự tương tự như cây nhị phân
– Mỗi nút trong cây có chứa m-1 khóa và m con trỏ trỏ đến các cây con
– Các giá trị xuất hiện trong một cây con được trỏ bởi con trỏ p
z Nhỏ hơn giá trị khóa bên phải của p
z Lớn hơn hoặc bằng gía trị khóa bên trái p 7
Các dạng cây khác trong tìm kiếm
– Ví dụ cây tìm kiếm đa nhánh 50 100 150 35 45 85 95 125 135 175 60 70 90 110 120 75
Các dạng cây khác trong tìm kiếm
z Cây B – Cây tìm kiếm đa nhánh cân bằng
– Một cây tìm kiếm đa nhánh cân bằng bậc m có các đặc trưng sau
z Gốc của cây là một nút lá hoặc có ít nhất 2 con
z Tất cả các nút nhánh của cây (trừ nút gốc) có từ m/2 đến m con
z Các nút lá có từ m/2 -1 đến m-1 giá trị khóa trong đó.
z Đường đi từ nút gốc tới một nút lá bất kỳ đều có độ dài như nhau 8
Các dạng cây khác trong tìm kiếm 42 16 20 58 76 81 93 11 14 45 52 63 65 74 78 79 85 87 94 97 17 18 19 21 22 23 24 B- Tree với m = 5
Cây nhị phân tìm kiếm tối ưu
– Cây nhị phân tìm kiếm tối ưu:
z Là cây nhị phân tìm kiếm có tính đến trường hợp các
khóa khác nhau trong một tập có xác suất xuất hiện khác nhau
z Khóa xuất hiện nhiều thì tìm nhanh hơn Ù đường đi từ
đỉnh đến vị trí của khóa có độ dài ngắn hơn
z Khái niệm: Giá trị của cây T n C T ( ) = ∑ p *h i i i=1 9
Cây nhị phân tìm kiếm tối ưu
z Ví dụ: Cây nhị phân tìm kiếm ứng với 3 khóa k < k < k 1 2 3
với xác suất p = 1/7; p = 2/7, p = 4/7 1 2 3 k1 k2 k2 k1 k3 k3
C = 1 * 1/7 + 2*2/7 + 3*4/7 = 17/7
C= 1*2/7 + 2 * 1/7 + 2*4/7 =12/7
Cây nhị phân tìm kiếm tối ưu
z Cây nhị phân tìm kiếm tối ưu: Là cây nhị phân tìm kiếm
ứng với dãy khóa k < k < ….< k có xác suất xuất hiện 1 2 n
lần lượt là p , p , …., p mà cây đó có giá trị nhỏ nhất 1 2 n
z Ví dụ: Cây nhị phân tìm kiếm tối ưu ứng với 3 khóa k < 1
k < k với xác suất p = 1/7; p = 2/7, p = 4/7 2 3 1 2 3 k3 k2 k1 10
Cây nhị phân tìm kiếm tối ưu
– Bài toán xây dựng cây tối ưu
z Đầu vào: Dãy khóa k < k < ….< k có xác suất xuất 1 2 n
hiện lần lượt là p , p , …., p 1 2 n
z Đầu ra: Xác định cây nhị phân tìm kiếm tối ưu xác lập
được trên n nút tương ứng với n khóa đã cho
Cây nhị phân tìm kiếm tối ưu z Nhận xét
– Cây T là cây nhị phân tìm kiếm tối ưu gồm n khóa , k là r gốc của cây ÆCây T
gồm r-1 khóa đầu tiên, cây T gồm n-r khóa 1,r-1 r+1,n
cuối cùng đều phải là cây nhị phân tìm kiếm tối ưu
ÆMuốn dựng được T, cần phải dựng từ hai cây con của nó 11
Cây nhị phân tìm kiếm tối ưu
z Tính giá trị của một cây T dựa vào giá trị các cây con i,j
z T là cây tạo dựng được từ các khóa k < k < … < k i,j i i+1 j C = p + C min[( + C )] i ( ≤ r j) i, j i, j i,r −1 r + , 1 j j p = p i, jk k =i
z r trong công thức cho ta xác định được khóa nào là gốc của cây
Cây nhị phân tìm kiếm tối ưu
– Xác định cây tối ưu với 4 nút, cần phải thực hiện tính toán
các giá trị theo sơ đồ sau C(1,4) C(1,3) C(2,4) C(1,2) C(2,3) C(3,4) 12
Cây nhị phân tìm kiếm tối ưu
z Ví dụ: Dãy bao gồm 5 khóa, với xác suất như sau
Cây nhị phân tìm kiếm tối ưu
z Các giá trị p ( i<= j) được xác định và thể hiện trong ma i,j trận sau .24 .46 .69 .99 1 0 .22 .45 .75 .76 P[i,j]= 0 0 .23 .53 .54 0 0 0 .3 .31 0 0 0 0 .01 13
Cây nhị phân tìm kiếm tối ưu
z Kết quả các giá trị của các cây tối ưu .24 .68 1.16 1.99 2 0 .22 .67 1.27 1.3 C[i,j]= 0 0 .23 .76 .78 0 0 0 .3 .32 0 0 0 0 .01
Cây nhị phân tìm kiếm tối ưu .24 .68 .24 .46 .69 .99 1 0 .22 .67 P[i,j]= 0 .22 .45 .75 .76 C[i,j]= 0 0 .23 0 0 .23 .53 .54 0 0 0 .3 .32 0 0 0 .3 .31 0 0 0 0 .01 0 0 0 0 .01 1 r=1, C[2,2] Å.22 C[1,2]=P[1,2]+min r=1 r=2, C[1,1] Å .24 2 3 r=2, C[3,3] Å.23 C[2,3]=P[2,3]+min r=3 r=3, C[2,2] Å .22 …… 2 4 r=4, C[5,5] Å.01 r=4 C[4,5]=P[4,5]+min r=5, C[4,4] Å .3 5 14
Cây nhị phân tìm kiếm tối ưu .24 .46 .69 .99 1 .24 .68 1.16 0 .22 .67 1.27 0 .22 .45 .75 .76 P[i,j]= C[i,j]= 0 0 .23 .76 0 0 .23 .53 .54 0 0 0 .3 .32 0 0 0 .3 .31 0 0 0 0 .01 0 0 0 0 .01 r=1, C[2,3] Å.67 2 C[1,3]=P[1,3]+min r=2, C[1,1]+C[3,3] Å .47 r=2 1 3 r=3, C[1,2] Å.68 r=2, C[3,4] Å.76 C[2,4]=P[2,4]+min r=3, C[2,2]+C[4,4] Å .52 r=3 3 r=4, C[2,3] Å.67 2 4
Cây nhị phân tìm kiếm tối ưu r=1, C[2,5] Å1.3 r=2, C[1,1]+C[3,5] Å 1.02 C[1,5]=P[1,5]+min r=3, C[1,2]+C[4,5] Å1 r=3 r=4, C[1,3]+C[5,5] Å 1.17 r=5, C[1,4] Å1.99 3 1,2 4,5 Cây kết quả 15
Tìm kiếm dựa trên bảng băm
z Tìm kiếm không dựa trên so sánh giá trị khóa mà dựa
vào bản thân giá trị khóa
z Sử dụng một qui tắc biến đổi tham chiếu một giá trị khóa
sang một địa chỉ (tương đối) lưu trữ phần tử dữ liệu
Tìm kiếm dựa trên bảng băm 001 Harry Lee Khóa Địa chỉ 002 Sarah Trapp 005 Vu Nguyen 005 Vu Nguyen 102002 007 Ray Black 100 John Adams 107095 Hàm băm 002 Sarah Trapp 111060 100 John Adams 16
Tìm kiếm dựa trên bảng băm
– Hàm băm h(k) thường có độ phức tạp là O(1) z h: U Æ {0, 1, .., m-1}
z Một phần tử có khóa k sẽ được tham chiếu vào một ô được
đánh chỉ số là h(k) có giá trị từ 0-> m-1 trong bảng băm kích thước m
z Khi sử dụng bảng băm để tìm kiếm, thay vì quan tâm đến |U|
giá trị, chúng ta chỉ quan tâm đến m ô trong bảng – Đụng độ
z Hiện tượng xảy ra khi hai hay nhiều khóa khác nhau sau khi
băm cho cùng một giá trị địa chỉ tương đối
z Hai phương pháp giải quyết đụng độ – Phương pháp móc xích
– Phương pháp địa chỉ mở Hàm băm
z Hàm băm tốt là một hàm băm đơn giản và có thể tính
toán được trong thời gian ngắn
z Mục tiêu của hàm băm là phân bổ một tập các giá trị
khóa một cách ngẫu nhiên và đều trên một tập các ô trong bảng 17 Hàm băm z h(k) = k mod m
– m = 12 and k=100 Æ h(k) = 4
– Cần phải tránh sử dung một số giá trị cho m
z m không nên là một số dạng 2p
– Thông thường, m được chọn là một số nguyên tố không quá
gần với một giá trị 2P
– Ví dụ: n=2000, ta chấp nhận kiểm tra 3 phần tử khi thực
hiện việc tìm kiếm, ta có thể chọn m = 701
vì 701 là một số nguyên tố gần với 2000/3 h(k)=k mod 701 Hàm băm – h(k) = ⎣m*(k*A mod 1)⎦
– A là một giá trị nằm trong khoảng 0-1. Theo Knuth đề xuất A ≈ ( 5 − ) 1 / 2 = ... 6180339887 . 0
– Nhân k với A, lấy phần sau dấu phẩy
– Nhân phần sau dấu phẩy đó với m , rồi lấy phần nguyên
z Ví dụ :k=123456,m=10000,A=0.618
h(k)=floor(10000*(123456*0.618… mod 1))
=floor(10000*(76300.004151..mod 1))
=floor(10000*0.0041151…..)=41. 18 Hàm băm
z h(k) = số tạo bởi một số chữ số ở giữa của bình phương của khóa z Ví dụ: k = 9452
– 9452 * 9452 = 89340304 → 3403
z Nếu khóa lớn, có thể chỉ dùng một phần của khóa khi tính bình phương
379452: 379 * 379 = 143641 → 364
121267: 121 * 121 = 014641 → 464
045128: 045 * 045 = 002025 → 202 Hàm băm
– Sử dụng phương pháp phân đoạn
z Khóa được chia thành nhiều đoạn, thường có độ dài bằng độ dài địa chỉ
z Áp dụng một số kỹ thuật trên các đoạn để xác định địa chỉ – Ví dụ: Khóa = 123|456|789 kỹ thuật tách kỹ thuật gấp 123 + 456 + 789 = 1368 321 + 456 + 987 = 1764 ⇒ 368 ⇒ 764 19
Giải quyết đụng độ
– Các kỹ thuật giải quyết đụng độ
z Phương pháp móc xích: Mỗi phần tử trong bảng băm là
một danh sách móc nối chứa các phần tử
z Phương pháp địa chỉ mở : Tìm trong bảng băm theo một
qui tắc nào đó để xác định một ô trống lưu phần tử mới
nếu có đụng độ xảy ra – Thử tuyến tính – Băm lại
Giải quyết đụng độ -Phương pháp móc xích 20