MỤC LỤC
MỤC LỤC. 2
MỤC LỤC BẢNG BIỂU . 5
A. PHẦN MỞ ĐẦU. 7
1. Giới thiệu . 7
2. Ý nghĩa khoa học và thực tiễn . 8
3. Mục đích nghiên cứu . 9
4. Đối tượng nghiên cứu . 10
5. Phạm vi nghiên cứu . 10
B. NỘI DUNG . 11
CHƯƠNG 1: TỔNG QUAN VỀCƠSỞDỮLIỆU KHÔNG GIAN. 11
1. Khái niệm. 11
1.1 Hệthống cơsởdữliệu không gian. 11
1.2. Cơsởdữliệu không gian (Spatial Database) . 12
2. Mô hình cơsởdữliệu không gian. 16
2.1 Xây dựng mô hình CSDL không gian . 17
2.2 Cơsởhình học trong tổchức các đối tượng không gian cơbản. 25
3. Truy vấn thực hiện trong CSDL không gian. 30
CHƯƠNG 2: BÀI TOÁN TÍNH TOÁN XẤP XỈVỚI CÁC TRUY VẤN LIÊN
QUAN ĐẾN KHOẢNG CÁCH TRONG CƠSỞDỮLIỆU KHÔNG GIAN. 34
1. Các truy vấn liên quan đến khoảng cách. 34
1.1 Truy vấn khu vực theo khoảng cách δ. 37
1.2 Truy vấn K vùng lân cận gần nhất. 38
1.3 Truy vấn nối các khu vực theo khoảng cách δ(truy vấn đệm). 39
1.4 Phép nối khoảng cách Iceberg. 39
1.5 Truy vấn K cặp đối tượng gần nhất . 39
Đềtài: Tính toán xấp xỉvới các truy vấn liên quan đến khoảng cách
trong cơsởdữliệu không gian
2008
3
1.6 Nối K vùng lân cận gần nhất . 40
1.7 Truy vấn K- nối khoảng cách . 40
2 R – Tree. 42
2.1 Khái niệm. 43
2.2 Cấu trúc của một R-tree. 45
2.3 Thuật toán R-Tree . 47
3 Các kỹthuật tính toán xấp xỉkhoảng cách. 56
3.1 Thu nhỏkhông gian tìm kiếm . 56
3.2 Kỹthuật tìm kiếm theo kinh nghiệm. 59
3.2.1 Tìm kiếm khu vực. 59
3.2.2 Simulated Annealing . 60
3.2.3 Thuật toán phát sinh . 61
CHƯƠNG 3 MỘT SỐ ỨNG DỤNG CỦA BÀI TOÁN TÍNH TOÁN XẤP XỈ
KHOẢNG CÁCH TRONG THỰC TẾ. 63
1. Ứng dụng trong việc xây dựng một hệthống khung (framework) xửlý hiệu
quảcác truy vấn không gian cơbản. 64
2. Tăng tốc quá trình phân tích, thực thi và hiển thịdữliệu địa lý trong các
truy vấn liên quan đến khoảng cách (DBQs). 66
3. Xây dựng thuật toán xấp xỉnhưmột công cụhạn chếnhững khó khăn phát
sinh đối với kích thước địa lý của đối tượng. 68
4. Tính toán độchính xác vềvịtrí trên bản đồvà chênh lệch vềkhoảng cách
giữa các đối tượng trong truy vấn. 70
CHƯƠNG 4 MỘT SỐTHUẬT TOÁN TÍNH KHOẢNG CÁCH TRONG KHÔNG
GIAN ĐỊA LÝ & ĐÁNH GIÁ HIỆU NĂNG. 74
1. Tính toán khoảng cách giữa các đối tượng địa lý theo công thức Haversine
74
1.1 Công thức Haversine. 74
Đềtài: Tính toán xấp xỉvới các truy vấn liên quan đến khoảng cách
trong cơsởdữliệu không gian
2008
4
1.2 Công thức Haversine trong truy vấn tìm khoảng cách ngắn nhất. 77
1.3 Đánh giá thuật toán Haversine . 81
2. Tính toán khoảng cách trong hệtọa độ địa lý theo khoảng cách Vincenty.82
2.1 Khái niệm. 82
2.2 Thuật toán Vincenty . 85
3. Đánh giá thuật toán Haversine và Vincenty. 89
C. KẾT LUẬN. 91
1. Những kết quả đạt được. 91
2. Đánh giá. 92
3. Hướng phát triển . 92
TÀI LIỆU THAM KHẢO. 93
95 trang |
Chia sẻ: oanh_nt | Lượt xem: 2040 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Khóa luận Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách trong cơ sở dữ liệu không gian, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ng cách nhỏ nhất
Đề tài: Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách
trong cơ sở dữ liệu không gian
2008
40
giữa chúng là K.
Truy vấn 3: Tìm năm shop gần nhất tính từ khu vực tôi đang đứng có bán giày
dép đã được lưu trong mục Interest của người sử dụng.
SELECT Human.id, Shop.id, Offer.id
FROM Human, Shop, Offer
WHERE `shoes` in Human.Interests AND Offer.Info = `shoes`
AND Offer.Shop_id = Shop.id
ORDER BY All_Spatial_Neighbour_Pairs
(Shop.Location, curr_space (Human.route)) ASC 5;
Với K = 5.
Chú ý:
Tương tự như với câu truy vấn dạng K-NN, câu lệnh SQL:
ORDER BY All_Spatial_Neighbour_Pairs(Shop.Location, curr_space
(Human.route)) ASC 5;
Cũng được sử dụng để biểu diễn các truy vấn dạng K-CP
1.6 Nối K vùng lân cận gần nhất
Nối K vùng lân cận gần nhất - K nearest neighbour join: Bao gồm hai
tập dữ liệu không gian và số yếu tố ngưỡng K. Kết quả trả về là tập các cặp
đối tượng từ hai tập dữ liệu đầu vào thỏa mãn, với mỗi đối tượng của tập dữ
liệu đầu tiên, một cặp được tạo thành với mỗi K vùng lân cận gần nhất của nó
trong tập dữ liệu thứ hai.
1.7 Truy vấn K- nối khoảng cách
Truy vấn K- nối khoảng cách - K-Multi-way distance join query: Một truy
vấn theo dạng này bao gồm n tập dữ liệu không gian, một đồ thị truy vấn (là
một đồ thị định hướng có trọng số định nghĩa hành trình có hướng giữa n tập
dữ liệu đầu vào) và số yếu tố ngưỡng K. Kết quả trả về là một tập bao gồm K
bộ dữ liệu riêng biệt, mỗi bộ có n đối tượng – n-tuples ( bộ dữ liệu chứa n đối
Đề tài: Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách
trong cơ sở dữ liệu không gian
2008
41
tượng từ n tập dữ liệu thỏa mãn biểu đồ truy vấn). với K giá trị Ddistance nhỏ
nhất (Hàm Ddistance là một hàm bậc nhất về khoảng cách với n đối tượng tạo
nên n-bộ dữ liệu, chiếu theo các cạnh của đồ thị truy vấn ban đầu).
Kết luận
Các truy vấn liên quan đến khoảng cách trong CSDL không gian rất hữu
ích trong nhiều ứng dụng sử dụng dữ liệu không gian cho việc lập quyết định
và nhiều phép toán yêu cầu xừ lý dữ liệu khác. Ví dụ trong trường hợp sử
dụng truy vấn cặp gần nhất – K-CPQ, tập dữ liệu đầu tiên có thể biểu diễn các
ranh giới về văn hóa của Mỹ, trong khi tập dữ liệu thứ hai có thể bao gồm
những địa danh nổi tiếng nhất tại Bắc Mỹ. Kết quả trả về cho loại truy vấn này
sẽ bao gồm K cặp gần nhất các thành phố và vùng văn hóa, nó cung cấp một
trình tự cho các nhà tổ chức để sắp xếp được lịch trình du lịch hợp lý trong
các chuyến tham quan của du khách... Giá trị K ở đây có thể phụ thuộc vào
ngân sách mà nhà tổ chức dự định chi trả cho mục đích sử dụng này.
Trong giới hạn nghiên cứ của đề tài, chúng ta sẽ chú trọng tìm hiểu hai loại
truy vấn là K-NNQ và K-CPQ, qua đó nắm được cách thiết kế các thuật toán
xấp xỉ trong các truy vấn liên quan đến khoảng cách.
Hình dưới minh họa một tập các điểm trong không gian hai chiều được tổ
chức theo cấu trúc R-tree (MBR-based index – Minimum bounding Rectangle-
based index -phương pháp đánh chỉ mục dựa trên khung giới hạn nhỏ nhất),
mục đích là tìm ba vùng lân cận gần nhất (K = 3 Ù 3-NNQ) với điểm truy
vấn q. Dễ thấy kết quả của phép truy vấn 3-NNQ là (p11, p8, p4)
Đề tài: Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách
trong cơ sở dữ liệu không gian
2008
42
Hình 15: R-Tree và MBRs trong truy vấn
Với ví dụ minh họa dưới đây, ta xét với hai tập điểm 2 chiều khác nhau (tổ
chức theo cấu trúc R-Tree, một tập dữ liệu được thể hiện với MBR không tô
màu, tập còn lại được thể hiện theo cấu trúc MBR chia sẻ). Nếu ta muốn bao
gồm 3 cặp điểm gần nhất (3-CPs) từ hai tập dữ liệu trên thì thu được kết quả
là ((p8, q8), (p11, q10), (p4, q6))
Hình 16: R-Tree và truy vấn trong hai cấu trúc MBR khác nhau
2 R – Tree
Kỹ thuật Phân nhánh-và-giới hạn (branch-and-bound) đang là một kỹ
thuật thành công nhất sử dụng trong việc thiết kế các thuật toán giải quyết các
câu hỏi của ngôn ngữ truy vấn trên cấu trúc dạng cây. Hàm chức năng giới
Đề tài: Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách
trong cơ sở dữ liệu không gian
2008
43
hạn thấp hơn và giới hạn cao hơn là nền tảng cơ bản của hiệu năng tính toán
trong thuật toán phân nhánh-và-giới hạn. Kỹ thuật giả định cơ bản sử dụng
trong các thuật toán truy vấn khoảng cách là các tập dữ liệu không gian được
đánh chỉ mục bởi cấu trúc của họ R-Tree. R-Tree và các biến thể của nó được
đánh giá là sự lựa chọn hoàn hảo trong việc đánh chỉ mục cho rất nhiều loại
dữ liệu không gian (điểm, đoạn thẳng, hình chữ nhật, đa giác…) và vẫn đang
được tiếp tục phát triển trong các hệ thống thương mại như Informix và
Oracle.
2.1 Khái niệm
R-Tree là các cấu trúc cây dữ liệu sử dụng cho dữ liệu không gian đa
chiều, có tính chất cân bằng độ cao và có thứ tự, được thiết kế cho thiết bị lưu
trữ thứ cấp, và là sự tổng quát hóa của B-tree[3] cho các không gian dữ liệu đa
chiều. Chúng được sử dụng để tổ chức động các đối tượng trong không gian d
chiều được biểu diễn bởi Đường biên d-chiều tối thiểu (Minimum Bounding
d-dimentional hyper-Rectangle – MBR – hoặc khung giới hạn d-chiều nhỏ
nhất). Một MBR được xác định bởi hai điểm trong không gian d chiều thuộc
bề mặt của nó, một điểm là tọa độ d nhỏ nhất và một điểm là tọa độ d lớn nhất
(chúng là các điểm kết thúc của các đường chéo thuộc MBR). Một nút trong
cây R-Tree tương ứng với MBR bao gồm cả các nút con của nó. Các lá của
cây bao gồm nhiều con trỏ trỏ đến các đối tượng của CSDL thay vì các con trỏ
trỏ đến các nút con. Các nút được xử lý giống như các trang nhớ trên đĩa.
Đề tài: Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách
trong cơ sở dữ liệu không gian
2008
44
Hình 17: Ví dụ về R-Tree
Hình trên mô tả một số hình chữ nhật ở bên trái và cây R-Tree tương ứng
ở phía bên phải. Các đường ba chấm biểu thị khung giới hạn của cây con đã
được phát sinh từ nút bên trong. Với các kiểu cấu trúc cây khác như cấu trúc
chỉ mục, một chỉ mục của cây R-Tree phân chia không gian đa chiều bằng
cách nhóm các đối tượng trong từng loại thứ tự. Một không gian con chứa bởi
một nút thuộc cây R-Tree luôn phải nằm trong không gian con của nút cha của
nó, đó là đặc tính bao đóng MBR. Theo đặc tính này, một MBR của một nút
R-tree (ở bất cứ tầng nào ngoại trừ phía bên trái cây) luôn bao trọn MBR của
nút R-tree con cháu của nó. Đặc điểm này của kỹ thuật giới hạn không gian
giữa các MBR của các nút trong cây R-tree thường được sử dụng trong thuật
toán nối không gian và thuật toán truy vấn liên quan đến khoảng cách. Chú ý
rằng MBR – Đường biên tối thiểu - và thuộc tính đi kèm MBR chính là các
kỹ thuật xấp xỉ cơ bản. Ở tầng bên trái, một khu vực xấp xỉ MBR được bao
phủ bởi các đối tượng nó đi kèm, trong khi tại các tầng bên trong một khu vực
xấp xỉ MBR lại được bao phủ bởi các cây con của các nút tương ứng. Một
thuộc tính quan trọng khác của R-tree là MBR face property (tạm dịch: thuộc
tính bề mặt MBR) – mỗi bề mặt của bất kỳ MBR của mỗi nút R-tree (tại bất kỳ
tầng nào) liền kề ít nhất một điểm của một số đối tượng không gian trong
CSDL không gian. Đặc điểm này được sử dụng trong các thuật toán truy vấn
liên quan đến khoảng cách. Một trong những phiên bản phổ biến và có hiệu
năng cao nhất là R* -tree (Beckmann et al.,1990). R* đã bổ sung hai cải tiến
lớn vào cấu trúc R-Tree ban đầu trong trường hợp xảy ra việc quá tải các nút
trong cây. Đầu tiên, hơn cả việc chỉ tính toán đến các khu vực , thuật toán
phân tách nút trong R*-tree còn tối thiểu hóa chu vi và các phần mở rộng nằm
gối lên nhau của MBRs. Thứ hai, việc tràn nút không được phân tách ngay lập
tức, nhưng các phần chia các mục trong nút được chèn lại từ đầu của cây R*-
tree (việc chèn bắt buộc)
Corall et al (2000) đã đưa ra một sự tổng quát hóa của các chức năng dùng
trong việc tính toán khoảng cách tối thiểu giữa điểm và MBRs
(MINMINDIST).
Đề tài: Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách
trong cơ sở dữ liệu không gian
2008
45
Giả sử có (A, B) biểu diễn một MBR trong không gian d-chiều, với A =
(a1, a2, …, ad) và B = (b1, b2, …, bd) sao cho ai ≤ bi, với 1 ≤ i ≤ d là các điểm
kết thúc của một trong những đường chéo chính của nó. Ta có hai MBRs là
M1 (A, B) và M2 (C, D), MINMINDIST (M1, M2) được định nghĩa như sau:
Chúng ta có thể áp dụng chức năng về khoảng cách này cho một cặp các
loại phần tử bất kỳ (MBRs hoặc điểm) lưu trữ trong cấu trúc R-tree trong quá
trình tính toán của thuật toán rẽ nhánh và cận nhằm thu nhỏ không gian tìm
kiếm.
Những đặc tính quan trọng nhất của MINMINDIST:
Nếu bất kỳ một hoặc một cặp MBR (dạng chữ nhật) nào suy biến thành
một hoặc một cặp điểm, ta phải thu được khoảng cách nhỏ nhất giữa
điểm đó và MBR hoặc giữa hai điểm này.
Đặc điểm của đường biên cấp thấp hơn: Với mỗi cặp điểm trong không
gian đa chiều (p ; q) đi cùng với một cặp MBR tương ứng (Mp; Mq),
chứng minh được rằng MINMINDIST (Mp; Mq) ≤ MINMINDIST(p,
q).
MINMINDIST là một dãy đơn điệu không giảm với các bậc của R-Tree.
2.2 Cấu trúc của một R-tree
Một cách tổng quát, R-tree là một cấu trúc chỉ mục cho các đối tượng
không gian n-chiều và nó tương tự như B-tree. Cấu trúc chỉ mục này là thực
sự linh động, thao tác chèn và xóa có thể kết hợp với phép tìm kiếm và phải
tái tổ chức theo chu kỳ.
Các nút lá trong cây chứa chỉ mục dẫn đến chúng theo khuôn dạng:
Đề tài: Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách
trong cơ sở dữ liệu không gian
2008
46
(MBR, object_ptr) - Trong đó object_ptr tham chiếu đến một bộ dữ liệu
trong cơ sở dữ liệu và MBR là một rectangle n-chiều chứa các đối tượng
không gian nó biểu diễn.
Các nút không phải lá có khuôn dạng sau:
(MBR, chirld_ptr) - Với chirld_ptr là địa chỉ một nút khác trong cây và
MBR bao gồm các rectangle trong các nút thấp hơn.
Nói cách khác, không gian MBR chứa mọi đối tượng được đánh chỉ mục
trong các cây con có gốc là đầu vào của MBR.
Cho M là số lượng tối đa đầu vào có thể vừa đủ với một nút và cho tham
số m xác định số lượng tối thiểu đầu vào tại một nút.
Một R-tree thỏa mãn các thuộc tính sau:
Mỗi một nút chứa số lượng nút con trong khoảng m và M ngoại trừ nút
gốc.
Đối với mỗi đầu vào dạng (MBR, object_ptr) tại nút lá, MBR là một
rectangle nhỏ nhất có chứa đối tượng dữ liệu n-chiều được biểu diễn bởi
object_ptr.
Mỗi nút không phải nút lá có số lượng nút con trong khoảng m và M
ngoại trừ nút gốc.
Đối với mỗi đầu vào dạng (MBR, chirld_ptr) tại nút không phải nút lá,
MBR là một rectangle nhỏ nhất có chứa rectangle trong chirld node.
Nút gốc có ít nhất là 2 nút con ngoại trừ đó là nút lá.
Đây là một loại cây cân bằng.
Đề tài: Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách
trong cơ sở dữ liệu không gian
2008
47
Hình 18: Cây biểu diễn R-Tree
Hình 19: Biểu diễn hai chiều của một R-Tree
2.3 Thuật toán R-Tree
R-tree là một cây cân bằng tương tự như B-tree. Ý tưởng như sau: Các
index sẽ nằm tại các nút lá chứa các điểm dữ liệu, khi đó việc tìm kiếm không
gian sẽ thực hiện trên một số lượng nhỏ các nút. Một cơ sở dữ liệu không gian
bao gồm tập hợp của các bộ đại diện cho các đối tượng trong không gian, mỗi
bộ có một nhận biết duy nhất ,ta cóthể dùng nhận biết này để truy xuất nó. Các
node lá trong R-Tree chứa các đầu vào mẫu tin chỉ mục (index record entries) (I,
tuple-identifier [4]) với tuple- identifier (nhận dạng bộ dữ liệu) tham khảo đến
một bộ trong cơ sở dữ liệu và I là hình chữ nhật n chiều, hình này là khung
giới hạn nhỏ nhất - MBR của các index đối tượng không gian.
Đề tài: Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách
trong cơ sở dữ liệu không gian
2008
48
I = (I0, I1,… In).
n - số chiều không gian
Ii - một khoảng biên khép kín [a,b], mô tả phạm vi của đối tượng cùng với
chiều i.
Một node không phải là node lá chứa các entry như sau (I, child-pointer),
child-point là địa chỉ của node thấp hơn trong R-Tree và I bao phủ tất cả các
hình chữ nhật trong các entry của các node thấp hơn.
Hình 20: Cấu trúc một R-Tree
Đề tài: Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách
trong cơ sở dữ liệu không gian
2008
49
Hình 21: Các quan hệ có thể có giữa các MBR (chứa trong, chồng lấn…)
2.3.1 Tìm kiếm trong cấu trúc dữ liệu tổ chức dưới dạng R-Tree
Tìm kiếm
Thuật toán tìm kiếm duyệt cây từ gốc (root) đi xuống theo cách tương tự
như B-tree. Tuy nhiên khi thăm một node sẽ có nhiều hơn một cây con dưới
node đó cần được tìm kiếm, vì lý do đó thuật toán không thể bảo đảm thực
hiện tốt trong các trường hợp xấu nhất. Tuy nhiên với nhiều kiểu của dữ liệu
thuật toán cập nhật sẽ duy trì hình dạng của cây cho phép thuật toán tìm kiếm
loại đi các vùng không liên quan của không gian được đánh chỉ mục, và kiểm
tra duy nhất dữ liệu gần vùng tìm kiếm. Chúng ta sẽ biểu diễn phần hình chữ
nhật của một chỉ mục E là EI, và phần nhận dạng dữ liệu hay child-pointer là
Ep.
Thuật toán tìm kiếm:
Cho R-tree có root là T, tìm tất cả các mẫu tin chỉ mục mà có các hình chữ
nhật chồng lên một hình chữ nhật cần tìm S.
S1 [Tìm kiếm trên cây con] Nếu T là một node lá, kiểm tra mỗi mục E
để xác định xem Ei có trùng lên S hay không. Với tất cả các mục trùng
nhau, thực hiện tìm kiếm trên cây mà node root của nó được chỉ bởi
Ep.
S2 [Tìm kiếm trên node lá] NếuT là một lá, kiểm tra tất cả các mục E
để xác định EI có trùng lên S hay không. Nếu trùng E là một record đủ
tiêu chuấn.
2.3.1.1 Chèn (Insertion)
Việc thêm các index cho các bộ dữ liệu mới giống như thêm trong B-tree
là các index mới được thêm vào cho các lá, các node chứa quá số lượng sẽ bị
Đề tài: Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách
trong cơ sở dữ liệu không gian
2008
50
tách ra và quá trình tách này sẽ lan truyền lên phía trên cây.
Thuật toán Chèn (Insert):
Thêm một mục nhập chỉmục mới E vào trong R-tree
I1: [Tìm vị trí cho dữ liệu mới] dùng thuật toán chọn lá (ChooseLeaf)
để chọn một node lá L để thêm E.
I2: [Thêm dữ liệu cho node lá] nếu L có chỗ cho một entry khác, thêm
E nếu không thì dùng thuật toán chia node (SplitNode) đểcó được L và
LL chứa E và tất cả các mục nhập của L.
I3: [Lan truyền các thay đổi lên phía trên] Dùng thuật toán điều chỉnh
cây (AdjustTree) trên L, đồng thời bỏ qua LL nếu việc phân chia đã
được thực hiện.
I4: [Tăng trưởng cây] Nếu việc phân chia node lan truyền làm cho root
phân chia, tạo ra một root mới, mà con của root mới này là 2 node kết
quả.
2.3.1.2 Thuật toán Chọn lá (ChooseLeaf):
Chọn một node lá mà node lá này đặt một chỉ mục mới E.
CL1: [Khởi tạo] cho tập N là node root.
CL2: [Kiểm tra lá] Nếu N là một lá, trả về N.
CL3: [Chọn cây con] Nếu N không phải là một lá, cho F là entry trong
N mà các hình chữ nhật của nó FI cần mở rộng lá để tính EI. Giải quyết
các hạn chế bằng cách chọn entry với hình chữ nhật có diện tích nhỏ
nhất.
CL4: [Đi xuống cho đến khi một node lá được tìm thấy] tập N là node
con được chỉ đến bởi Fp và lặp lại từ CL2.
2.3.1.3 Thuật toán điều chỉnh cây (AdjustTree):
Đi lên từ một node lá L đến root, điều chỉnh hình chữ nhật bao phủ và lan
truyền phân chia các node chia khi cần thiết.
Đề tài: Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách
trong cơ sở dữ liệu không gian
2008
51
AT1: [Khởi tạo] cho tập N=L, nếu L đã được phân chia trước đó, tập NN
là kết quả của node thứ hai .
AT2: [Kiểm tra nếu thực hiện] Nếu N là root, ngưng.
AT3: [Điều chỉnh vùng phủ hình chữ nhật trong mục nhập cha] Cho P là
node cha của N và cho EN là các entry của N trong P. Điều chỉnh EN I để
cho nó bao sát xung quanh tất cả các hình chữ nhật entry trong N.
AT4: [Lan truyền node bị tách lên phía trên] Nếu N có NN (partner) kết
quả từ một phân chia mới nhất, tạo một entry mới ENN P trỏ đến NN và
ENN I bao quanh tất cả các hình chữ nhật trong NN, thêm ENN vào P nếu
có chỗ. Nếu không dùng SplitNode đểtạo ra P và PP chứa ENN và tất cả
các entry của P.
AT5: [Di chuyển đến mức kết tiếp]. Cho tập N=P và tập NN=PP nếu có
sự phân chia xảy ra. Lặp lại bước AT2.
2.3.2 Xóa (Deletion)
Thuật toán xóa
Thay đổi vị trí index của record E từ R-tree
D1: [Tìm node chứa record] thực hiện thuật toán FindLeaf để xác định vị
trí node lá L chứa E. Ngưng nếu record được tìm thấy.
D2: [Xóa record] Xóa E từ L.
D3: [Lan truyền thay đổi] dùng thuật toán CondenseTree bỏ qua L.
D4: [Rút ngắn cây] Nếu root có duy nhất một con sau khi cây đã được
điều chỉnh, tạo con cho root mới.
2.3.2.1 Thuật toán tìm lá (FindLeaf):
Cho R-tree có root là T, tìm node lá chứa đầu vài chỉ mục E.
FL1: [Tìm cây con] nếu T không phải là node lá, kiểm tra mỗi entry F
trong T để xác định, nếu FI chồng lấp với EI. Với mỗi entry thực hiện
thuật toán FindLeaf trên cây mà root của nó được trỏ đến bởi Fp cho đến
Đề tài: Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách
trong cơ sở dữ liệu không gian
2008
52
khi E được tìm thấy hay tất cả các entry đã được kiểm tra.
FL2: [Tìm node lá cho mục cho record] Nếu T là lá, kiểm tra mỗi entry
để xem nếu nó phù hợp với E, nếu E được tìm thấy trả về T.
2.3.2.2 Thuật toán Gom cây (CondenseTree):
Cho một node lá L, mộtentry được xóa từ node lá này, loại ra node này nếu
nó có quá ít các chỉ mục và xây dựng lại các entry của nó. Lan truyền việc loại
node này lên trên khi cần thiết. Điều chỉnh các hình chữ nhậtbao phủ trên
đường dẫn đến root, làm cho các hình chữ nhật này nhỏ hơn nếu có thể.
CT1: [khởi tạo] cho tập N=L, tập Q là tập của các node bịloạibỏ, Q là tập
rổng.
CT2: [Tìm entry cha] nếu N và root, nhảy tới bước CT6. Nếu không thì
cho P là cha của N, và cho EN là các entry của N trong P.
CT3: [Loạinode không đủ(Eliminate under-full node)] Nếu N có ít
hơn m entry, xóa EN khỏi P và thêm N vào tập Q.
CT4: [Điều chỉnh hình chữ nhật bao phủ] Nếu N không bị loại bỏ, điều
chỉnh EN I để chứa sát lại các entry trong N.
CT5: [Di chuyển lên trên mộtmức trong cây] Cho tập N=P và lặp lại từ
CT2.
CT6: [Chèn lại các entry bị mồi côi (Re-insert orphaned entries)]
Chèn lại vào tất cà các entry của các node trong tập Q. Các entry từ các
node lá bị loại bỏ được chèn lại vào trong các lá của cây như đã được mô tả
trong thuật toán Insert, nhưng các entry từ các node có mức cao hơn phải được
đặt cao hơn trong cây, vì vậy các lá của các cây con phụ thuộc vào chúng sẽ
nằm trên cùng mức như các lá của cây mẹ.
2.3.3 Cập nhật
Nếu một bộ dữ liệu được cập nhật để cho hình chữ nhật bao phủ nó bị thay
đổi, bản ghi chỉ mục của nó phải bị xóa, cập nhật và chèn lại, vì vậy nó sẽ phải
Đề tài: Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách
trong cơ sở dữ liệu không gian
2008
53
tìm cách để đặt đúng vị trí trong cây.
Một cách tìm kiếm khác so với cách được mô tả ở trên có thể hữu ích hơn,
ví dụ để tìm tất cả các đối tượng dữ liệu được chứa hoàn toàn trong một vùng
tìm kiếm, hoặc tất cả các đối tượng chứa vùng tìm kiếm.
Các bước thực hiện có thể được thực hiện bằng các biến đổi dễ hiểu trên
thuật toán đã cho. Tìm một entry cụ thể mà nhận dạng của nó đã được biết
trước cần đến thuật toán xóa và được thực hiện bằng thuật toán FindLeaf. Các
biến đổi của phạm vi xóa, trong phạm vi này, tất cả các đối tượng dữliệu trên
diện tích liên quan được xóa đi, cũng được R-tree cung cấp khá tốt.
2.3.3.1 Thuật toán tách node (Node Splitting)
Để thêm một một entry mới để một node đầy chứa M các chỉ mục, cần
phải phân chia tập hợp của M+1 các entry thành hai node. Sự phân chia nên
được thực hiện theo cách làm cho nó không chắc có thể thực hiện được việc
phân chia cả hai node mới sẽ cần được kiểm tra trên việc tìm kiếm thứ tự. Khi
đó sự quyết định thăm một node phụ thuộc vào hình chữ nhật bao phủ nó có
chồng lên diện tích tìm kiếm. Tổng số diện tích của hai hình chữ nhật bao phủ
sau khi tách có thể được giảm đến mức tối thiểu. Hình dưới đây minh họa điều
này. Diện tích của các hình chữ nhật trong trường hợp “bad split”lớn hơn
nhiều so với trường hợp “good split”.
Hình 22: Trường hợp phân chia node
Cùng tiêu chuẩn đã được dùng trong thủ tục ChooseLeaf để quyết định
xem nơi nào có thể chèn một chỉ mục mới vào tại mỗi mức trong cây, cây con
được chọn là một cây mà hình chữ nhật bao phủ của nó phải được mở rộng ít
Good Bad split
Đề tài: Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách
trong cơ sở dữ liệu không gian
2008
54
nhất khi chèn chỉ mục mới vào.
Chúng ta quay lại thuật toán phân chia tập M+1 entry thành hai nhóm cho mỗi
node mới.
Hình 23: Phân chia entry thành các nhóm node mới
Thuật toán A Quadractic-Cost
Thuật toán này cố gắng tìm một vùng được tách ra có diện tích nhỏ, nhưng
không bảo đảm là có thể tìm được một vùng có thể có diện tích nhỏ nhất. Chi
phí là bậc hai theo M và tuyến tính theo số lượng của các chiều.
Thuật toán chọn hai trong M+1 entry làm phần tử đầu tiên của hai nhóm
mới bằng cách chọn hai entry này, hai entry này có thể làm lãng phí diện tích
lớn nhất nếu cả hai được đặt trong cùng một nhóm. Như vậy diện tích hình
chữ nhật bao phủ cả hai entry, trừ đi diện tích của chính các entry, sẽ là lớn
nhất. Các entry còn lại được gán vào các nhóm cùng lúc. Tại mỗi bước, việc
mở rộng diện tích đòi hỏi phải thêm mỗi entry còn lạicho mỗi nhóm được tính
toán, và entry được gán thì sẽ xuất hiện một sự khác biệt lớn nhất giữa hai
nhóm.
Thuật toán Quadratic Split
Phân chia một tập M+1 các chỉ mục thành hai nhóm.
QS1: [chọn entry đầu tiên cho mỗi nhóm] Áp dụng thuật toán
PickSeeds để chọn hai entry làm các phần tử đầu tiên của các nhóm.
Gán mỗi entry cho một nhóm.
QS2: [Kiểm tra nếu đã thực hiện] Nếu tất cả các entry đã được gán,
ngưng. Nếu một nhóm có một vài entry mà tất cả những entry còn lại
Đề tài: Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách
trong cơ sở dữ liệu không gian
2008
55
phải được gán vào nó theo thứ tự để cho nhóm này có m nhỏ nhất, gán
các entry và ngưng.
QS3: [Chọn entry để gán] Thực hiện thuật toán PickNext để chọn entry
kế tiếp để gán. Thêm entry này vào nhóm mà hình chử nhật bao phủcủa
nó sẽ phải mở rộng ít nhất để chứa entry này. Giải quyết các hạn chế
bằng cách thêm entry vào nhóm có diện tích nhỏ nhất, khi đó nhóm này
có các entry ít hơn nhóm khác. Lặp lại QS2.
Thuật toán PickSeeds
Chọn hai entry làm phần tử đầu tiên của các nhóm.
PS1: [Tính toán sự thiếu hiệu quảcủa việc nhóm các entry với nhau]
Cho mỗi cặp các entry E1 và E2 , tạo một hình chữ nhật J bao gồm E1I
và E2I Tính d = area(J) – area (E1I) - area(E2I).
PS2: [Chọn cặp gây lãng phí nhất] Chọn cặp có d lớn nhất.
Thuật toán PickNext
Chọn một mục còn lại để phân loại vào một nhóm.
PN1: [Xác định giá trị của việc đặt mỗi entry trong mỗi nhóm] Cho
mỗi entry E chưa được phân nhóm, tính d1 = diện tích được yêu cầu
tăng trong hình chữ nhật bao phủ của nhóm 1 để bao gồm EI, tính toán
d2 tương tự như trên cho nhóm 2.
PN2: [Tìm entry thích hợp nhất cho một nhóm] Chọn bất kỳ entry nào
có sự khác biệt lớn nhất giữa d1 và d2.
Thuật toán LinearPickSeeds
Chọn hai entry làm các phần tử đầu tiên của các nhóm.
LPS1: [Tìm các hình chữ nhật xa nhất theo tất cả các chiều] Theo mỗi
chiều, tìm các entry mà hình chữ nhật của nó có cạnh dưới cao nhất và
có cạnh trên thấp nhất. Ghi lại việc phân chia.
LPS2: [Điều chỉnh hình dạng của cụm hình chữ nhật] Chuẩn hóa việc
phân chia bằng cách chia chiều rộng của toàn bộ các tập theo chiều
Đề tài: Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách
trong cơ sở dữ liệu không gian
2008
56
tương ứng.
LPS3: [Chọn cặp cách xa nhất] Chọn cặp có sự phân chia được chuẩn
hóa lớn nhất theo bất kỳ chiều nào.
Trên đây đề tài đã trình bày thuật toán R-tree, chúng ta có thể áp dụng
phương pháp này để tạo index cho cụm. Ta xem các cụm như là các không
gian mà chúng ta cần truy xuất, các vùng dữ liệu của cụm sẽ được phân chia
để nằm trong các hình chữ nhật nhỏ (không gian 2 chiều), ta sẽ có các hình
chữ nhật lớn hơn bao ngoài các hình chữ nhật nhỏ chứa dữ liệu này áp dụng
R-tree để tạo cây, khi đó nếu cần truy xuất một vùng dữ liệu nào đó trong
cụm ta sẽ dùng thuật toán tìm để xác định địa chỉ vùng dữ liệu này đang nằm
ở lá nào trong cây hay nói cách khác là lá nào đang chứa thông tin về vị trí của
vùng dữ liệu mà ta đang cần, khi biết các thông tin vềvịtrí trong không gian
của vùng dữ liệu đang tìm ta sẽ truy xuất đến rất nhanh cụm dữ liệu này. Như
vậy từ nếu tạo được index cho cụm thì việc tìm kiếm tương tự sẽ đư
Các file đính kèm theo tài liệu này:
- Tính toán xấp xỉ với các truy vấn liên quan đến khoảng cách trong cơ sở dữ liệu không gian.pdf