You are on page 1of 2

CHƯƠNG 8

TÌM KIẾM - SEARCHING


8.1 - PHÁT BIỂU TỔNG QUÁT BÀI TOÁN TÌM KIẾM
“Cho một bảng gồm n bản ghi R1,. R2, .., Rn. Mỗi bản ghi R1 (1  i 
n) tương ứng với một khoá ki. Hãy tìm bản ghi có giá trị khoá tương ứng
bằng X cho trước”.
X được gọi là khoá tìm kiếm hay đối trị tìm kiếm (argument).
Việc tìm kiếm sẽ hoàn thành khi một trong hai tình huống sau xảy ra:
1- Tìm được bản ghi có giá trị khoá tương ứng bằng X, lúc đó ta nói:
phép tìm kiếm được thoả mãn (successful).
2 - Không tìm được bản ghi nào có giá trị khoá bằng X cả: phép tìm
kiếm không thoả (unsuccessful).
8.2 - TÌM KIẾM TUẦN TỰ (SEQUENTIAL SEARCHING)
Tìm kiếm tuần tự là kỹ thuật tìm kiếm rất đơn giản và cổ điển. Nội
dung: Bắt đầu từ bản ghi thứ nhất, lần lượt so sánh khoá tìm kiếm với khoá
tương ứng của các bản ghi trong bảng, cho tới khi tìm được bản ghi mong
muốn hoặc đã hết bảng mà chưa thấy
8.3 - TÌM KIẾM NHỊ PHÂN (BINARY SEARCHING)
Tìm kiếm nhị phân là một phương pháp tìm kiếm khá thông dụng. Nó
tương tự như cách thức ta đã làm khi tra tìm số điện thoại của một cơ quan,
trong bảng danh mục điện thoại hay khi tìm một từ trong từ điển. Chỉ có một
điều hơi khác là trong các công việc trên để so sánh với khoá tìm kiếm ta
chọn hú hoạ một phần tử, còn với phép tìm kiếm nhị phân thì luôn chọn
khoá “ở giữa” dãy khoá đang xét để thực hiện so sánh với khoá tìm kiếm.
Giả sử dãy khoá đang xét là k 1,.., kr thì khoá ở giữa dãy sẽ là k i với i
1  r 
=   . Tìm kiếm sẽ kết thúc nếu X = k i. Nếu X < ki tìm kiếm sẽ được
 2 
thực hiện tiếp với k1, ...., ki-1; còn nếu X > ki tìm kiếm lại được làm với k i+1,
..., kr. Với dãy khoá sau, một kỹ thuật tương tự lại được sử dụng. Quá trình
tìm kiếm được tiếp tục khi tìm thấy khoá mong muốn hoặc dãy khoá sét đó
trở nên rỗng ( không thấy).
Ta trình bày tổng quát tư tưởng của giải thuật tìm kiếm nhị phân như
sau: Giả sử dãy khoá là K 1, K2,....Kn. Xác định khoá ở giữa dãy theo công
thức k  (1+n) mod 2
1 - Nếu X = Ki thì quá trình kết thúc.

1
2 - Nếu X < Ki thì quá trình tìm kiếm sẽ được thực hiện với dãy số
K1,K2,...Ki-1
3 - Nếu X > Ki thì quá trình tìm kiếm sẽ được thực hiện với dãy Ki+1, ....kn
Với dãy khoá sau, kỹ thuật tìm kiếm lại được lặp lại tương tự:
Ta xét ví dụ sau đây:
Cho số hiệu của các hoá đơn xuất kho như sau:

10 21 34 14 125 19
45 98 73 25 97 69
41 18 72 100 105 87
63 91 101 102 26 46

Tìm hoá đơn có số hiệu là 73


Để thực hiện giải thuật tìm kiếm nhị phân trước hết ta phải sắp xếp lại dãy
hoá đơn theo trình tự tăng dần của số hiệu hoá đơn.
Ta sẽ được dãy sau đây:
10 14 18 19 21 25
26 34 41 45 46 63
69 72 73 87 91 97
98 100 101 102 105 125

K(1+24) mod 2 = K12


K12 = 63
X = 73 > K12
Dãy hoá đơn tìm kiếm sẽ là:
69 72 73 87 91 97
98 100 101 102 105 125

K(1+24) mod 2 = K6


K6 = 97
X = 73 < K6
Dãy hoá đơn tìm kiếm sẽ là:
69 72 73 87 91 97

K(1+6) mod 2 = K3


K3 = 73 = X
Quá trình tìm kiếm kết thúc.
2

You might also like