26/04/2010
1
Chương VII: Tìm kiếm - II
Tìm kiếm – Phần II
Nội dung
– Các dạng cây đặc biệt sử dụng trong tìm kiếm
Cây tìm kiếm đa nhánh
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)
26/04/2010
2
Các dạng cây khác trong tìm kiếm
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
Nhỏ hơn giá trị khóa bên phải của p
Lớn hơn hoặc bằng gía trị khóa bên trái p
Các dạng 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
Một cây dạng cây tìm kiếm đa nhánh
26/04/2010
3
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
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
Gốc của cây là một nút lá hoặc có ít nhất 2 con
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
Các nút lá có từ m/2 -1 đến m-1 giá trị khóa trong đó.
Đường đi từ nút gốc tới một nút lá bất kỳ đều có độ dài
như nhau
26/04/2010
4
Các dạng 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 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:
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
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
Khái niệm: Giá trị của cây T
n
i
ii
hpTC
1
*)(
26/04/2010
5
Cây nhị phân tìm kiếm tối ưu
Ví dụ: Cây nhị phân tìm kiếm ứng với 3 khóa k
1
< k
2
< k
3
với xác suất p
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ếm tối ưu
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
1
< k
2
< ….< k
n
có xác suất xuất
hiện lần lượt là p
1
, p
2
, …., p
n
mà cây đó có giá trị nhỏ
nhất
Ví dụ: Cây nhị phân tìm kiếm tối ưu ứng với 3 khóa k
1
<
k
2
< k
3
với xác suất p
1
= 1/7; p
2
= 2/7, p
3
= 4/7
k2
k1
k3
26/04/2010
6
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
Đầu vào: Dãy khóa k
1
< k
2
< ….< k
n
có xác suất xuất
hiện lần lượt là p
1
, p
2
, …., p
n
Đầ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
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
r
là
gốc của cây
Cây T
1,r-1
gồm r-1 khóa đầu tiên, cây T
r+1,n
gồm n-r khóa
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ó
26/04/2010
7
Cây nhị phân tìm kiếm tối ưu
Tính giá trị của một cây T
i,j
dựa vào giá trị các cây con
T
i,j
là cây tạo dựng được từ các khóa k
i
< k
i+1
< … < k
j
r trong công thức cho ta xác định được khóa nào là gốc
của cây
j
ik
kji
jrrijiji
pp
jriCCpC
,
,11,,,
)()]min[(
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)
26/04/2010
8
Cây nhị phân tìm kiếm tối ưu
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
Các giá trị p
i,j
( i<= j) được xác định và thể hiện trong ma
trận sau
P[i,j]=
.24 .46 .69 .99 1
0 .22 .45 .75 .76
0 0 .23 .53 .54
0 0 0 .3 .31
0 0 0 0 .01
26/04/2010
9
Cây nhị phân tìm kiếm tối ưu
Kết quả các giá trị của các cây tối ưu
C[i,j]=
.24 .68 1.16 1.99 2
0 .22 .67 1.27 1.3
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
C[i,j]=
.24 .68
0 .22 .67
0 0 .23
0 0 0 .3 .32
0 0 0 0 .01
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]=
.24 .46 .69 .99 1
0 .22 .45 .75 .76
0 0 .23 .53 .54
0 0 0 .3 .31
0 0 0 0 .01
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
26/04/2010
10
Cây nhị phân tìm kiếm tối ưu
C[i,j]=
.24 .68 1.16
0 .22 .67 1.27
0 0 .23 .76
0 0 0 .3 .32
0 0 0 0 .01
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]=
.24 .46 .69 .99 1
0 .22 .45 .75 .76
0 0 .23 .53 .54
0 0 0 .3 .31
0 0 0 0 .01
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ếm tối ư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ết quả
26/04/2010
11
Tìm kiếm dựa trên bảng băm
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
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
002 Sarah Trapp
005 Vu Nguyen
007 Ray Black
100 John Adams
Khóa
Địa chỉ
Vu Nguyen 102002
John Adams 107095
Sarah Trapp 111060
Hàm băm
005
100
002