2. NỘI DUNG TRÌNH BÀY
• Tổng quan về Searching
• Các dạng Range Searching :
1-d trees
2-d trees
Range trees
3. TỔNG QUAN VỀ SEARCHING
• Searching : là 1 lớp các vấn đề được thể hiện
dưới dạng đổi kiểu truy vấn-trả lời.hay nói 1
cách dễ hiểu hơn khi thực hiện 1 chuỗi truy
vấn thì nó sẽ trả về kết quả để đáp ứng lại
chuỗi truy vấn đó
• Cho 1 tập hợp các đối tượng với điều kiện xử
lý cho trước, Searching chính là tìm các đối
tượng thỏa mãn các câu lệnh truy vấn
4. TỔNG QUAN VỀ SEARCHING
Searching được chia làm 2 dạng chính :
• Count mode
• report mode
Dạng count mode : chỉ đưa ra số lượng của các
đối tượng thỏa mãn điều kiện của chuỗi truy
vấn
Dạng report mode : đưa ra các đối tượng xác
định thỏa mãn điều kiện của chuối truy vấn
5. ở dạng report mode : thời gian truy
vấn của thuật toán bao gồm 2 thành
phần :
• search time (thời gian tìm kiếm)
• retrieval time (thời gian phản hồi)
và được biểu diễn : QA(n) = O(f (n) +
F)
Với n : chính là kích thước của
database
f(n) : chính là 1 hàm theo n
F : chính là kích thước của kết quả
6. CÁC DẠNG RANGE SEARCHING
Range Searching là 1 khía cạnh của kỹ thuật hình
học dùng để phân tích 1 tập hợp các đối tượng
nhằm xác định ra 1 tập con trong 1 khoảng giới
hạn cho trước.
Hay hiểu theo cách khác, cho 1 tập các đối tượng
đầu vào có những thuộc tính đã biết và ta chỉ cần
xác định ra những thuộc tính trong 1 khoảng giới
hạn nào đó. Vì vậy đầu ra sẽ là tập các đối tượng
có thuộc tính trong khoảng giới hạn đang xét
7. INPUT:
P : {P0, P1, P2,.. , Pn} 1 tập các đối
tượng với các thuộc tính cho trước
(ex. weights..etc)
Q :là khoảng giới hạn của các thuộc
tính(ex. Weights between x and y)
OUTPUT:
Tập hợp các phần tử thuộc vào tập
giao của P và Q
8. Chuỗi truy vấn database chính là ứng
dụng chính của việc áp dụng thuyết
range searching
Sau đây ta xét 1 ví dụ về chuỗi truy
vấn database và giải thích rõ trong
dạng hình học :
Giả sử ta có bảng ghi database là
SINH_VIEN,có chứa các thuộc tính là
MSV, HO_VA_TEN, TIN_CHI_TICH_LUY,
và DIEM_TICH_LUY
9. Ta thực hiện chuỗi truy vấn SQL :
SQL> SELECT ID,NAME FROM
SINH_VIEN WHERE
TIN_CHI_TICH_LUY BETWEEN 60 AND
90 AND DIEM_TICH_LUY BETWEEN
2.5 AND 3.0
Chuỗi truy vấn này sẽ cho ta kết quả
là những sinh viên có số tín chỉ tích
lũy trong khoảng [60,90] và có điểm
tích lũy trong khoảng [2.5,3.0]
10. Do chuỗi truy vấn trên có điều kiện
dựa vào 2 thuộc tính
TIN_CHI_TICH_LUY và
DIEM_TICH_LUY.do vậy khi ta thể
hiện nó sang dạng hình học thì nó sẽ
ở trong không gian 2 chiều
13. Ta có thể sử dụng cấu trúc dữ liệu
kiểu mảng arrays lưu các phần tử của
dãy:
a b
14. Phân tích thời gian thực hiện giải
thuật:
Sử dụng việc tìm kiếm nhị phân trong
mảng arrays mất thời gian O(log n +
k) với k là số điểm thuộc vào tập P
nằm trong khoảng [a,b].
tuy nhiên việc sử dụng mảng lại có sự
hạn chế :
• Khó khăn khi ta thêm vào hoặc xóa
đi 1 phần tử
• Không thể suy rộng lên trường hợp
tổng quát hơn(có chiều cao hơn)
15. Để khắc phục những nhược điểm của
mảng arrays,ta lưu các phần tử trong
kiểu dữ liệu cây nhị phân cân bằng
AVL.Ví dụ :
16. Điền đầy đủ các nút, hoàn thiện cây
nhị phân cân bằng :
19. Phân tích thời gian thực hiện giải
thuật:
• Thời gian khởi tạo cây nhị phân BST
sẽ là O(n log(n)).
• Thời gian để kiểm tra nằm trong
khoảng là O(log n).(update hay
delete)
• Thời gian trả về k điểm trong đoạn
là O(k + log n).
• Thời gian đếm tổng số điểm trong
đoạn là O(log n).
20. 2-D RANGE SEARCHING QUERIES
Đặt vấn đề :
Làm cách nào để Tìm các điểm nằm trong 1
hình chữ nhật ?
21. Xét ví dụ :
Cho 1 tập P gồm n điểm trong mặt
phẳng,tìm các điểm nằm trong HCN
Q
Nhận thấy các điểm nằm trong Q là
14,12,17.làm thế nào để tìm được
chúng?
22. Phương pháp :
Ta sử dụng 2 chuỗi truy vấn 1-d range
xét dọc theo từng trục của chúng để
giải quyết chuỗi truy vấn 2-d
range.kết quả chính là giao của các
tập
28. RANGE TREES
m những sinh
viên có số tín chỉ tích lũy trong khoảng [60,90] và
có điểm tích lũy trong khoảng [2.5,3.0]
……….
75
70 80
70 75 80 85 2.6 3.0 3.5 4.0
[60-90] [2.5-3.0]
Tin_chi_tich_luy diem_tich_luy