SEARCHING-COMPUTATIONAL GEOMETRY II TRÌNH BÀY : NGÔ QUANG TRUNG
May 27, 2015
SEARCHING-COMPUTATIONAL GEOMETRY IITRÌNH BÀY : NGÔ QUANG TRUNG
NỘI DUNG TRÌNH BÀY
• Tổng quan về Searching• Các dạng Range Searching :
1-d trees2-d treesRange trees
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
TỔNG QUAN VỀ SEARCHING
Searching được chia làm 2 dạng chính :• Count mode • report modeDạ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ấnDạ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
ở 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ả
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
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
Chuỗi truy vấn database chính là ứng dụng chính của việc áp dụng thuyết range searchingSau đâ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
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.0Chuỗ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]
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
BIỂU DIỄN DƯỚI DẠNG HÌNH HỌC2-D
1-D RANGE SEARCHING QUERIES
Đặt vấn đề :Cho 1 tập P gồm n phần tử P = { p1, p2,…, pn } với các phần tử là các số thực.tìm các điểm thuộc P nằm trong đoạn [a.b] với a b
Chúng ta thực hiện nó như thế nào ?
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
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)
Để 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ụ :
Điền đầy đủ các nút, hoàn thiện cây nhị phân cân bằng :
Sơ đồ phân tích thuật toán:
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).
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 ?
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 QNhậ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?
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
QUY TĂC XÂY DƯNG
Bao gôm ca điêm P
Bao gôm ca điêm P
2-D RANGE SEARCHING QUERIES
Ta xây dựng 2-dimensional kd-tree :
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L1
L2 L3
L4
P3
L5
P5P4
L6
P8
L7
P10P9L8
P1 P2
L9
P7P6
Vùng giới hạn và biểu thị trên k-d tree
Các điểm màu đen trong region(v) khi biểu diễn qua k-d tree sẽ nằm trong cây con gốc vChú ý region(v) không bị ch n dướiă
Thực hiện truy vấn trên k-d tree
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L1
L2 L3
L4
P3
L5
P4
L6
P8
L7
P9L8
P1 P2
L9
P6
P10P5
P7
Phân tích thời gian thực hi n :ê• Khởi tạo cây : O(n log n)• Không gian chứa : O(n)• Thời gian xử lý chuỗi truy vấn :O(n +
k) với k là số điểm nằm trong vùng giới hạn truy vấn
RANGE TREES
Ta quay lại xét ví dụ đầu tiên : Tì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
[60-90]
4.03.52.6 3.0
[2.5-3.0]
Tin_chi_tich_luy diem_tich_luy
Tổng quát lên :
Là tập các lá của cây con nút v
Quay trở lại ví dụ 2 :
Phân tích thời gian thực hi n :ê• Thời gian khởi tạo : O(n log n)• Thời gian xử lý chuỗi truy vấn :
O(log2(n) + k) với k là số điểm nằm trong vùng giới hạn truy vấn
Mở rộng lên chiều cao hơn :
Phân tích thời gian thực hi n :ê• Thời gian khởi tạo : • Thời gian xử lý chuỗi truy vấn :
với k là số điểm nằm trong vùng giới hạn truy vấn