Tải bản đầy đủ (.pdf) (28 trang)

Boyer–Moore

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (633.57 KB, 28 trang )

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

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

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×