1. Trang chủ
  2. » Luận Văn - Báo Cáo

Một số kiểu dữ liệu trừu tượng ứng dụng trong hình học tính toán

82 983 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 82
Dung lượng 4,48 MB

Nội dung

DANH SÁCH HÌNH VẼ Hình 1.1 Thứ tự giữacácđoạnthẳng với đườngthẳngquétdọc 9 Hình 1.3 Thuật toán chỉ cần kiểm tra7 điểm trong mảng 16 Hình 2.1 Giải thíchtruy vấncơ sở dữ liệu một cách hình

Trang 3

MỤC LỤC

DANH SÁCH THUẬT NGỮ VÀ GIẢI THÍCH 2

DANH SÁCH HÌNH VẼ 3

MỞ ĐẦU 5

Chương 1 - TỔNG QUAN VỀ HÌNH HỌC TÍNH TOÁN 6

1.1 Các bài toán của hình học tính toán 6

1.2 Các đối tượng hình học 8

1.3 Một số bài toán hình học và thuật toán 8

1.3.1 Bài toán xác định cặp đoạn thẳng bất kỳ cắt nhau 8

1.3.2 Bài toán tìm bao lồi 11

1.3.3 Bài toán tìm cặp điểm gần nhất 14

1.4 Kết luận 17

Chương 2 - KIỂU DỮ LIỆU TRỪU TƯỢNG TRONG HÌNH HỌC TÍNH TOÁN 18

2.1 Tìm kiếm phạm vi trực giao 18

2.1.1 Mô hình quản lí đối tượng một chiều 19

2.1.2 Mô hình quản lí đối tượng hai chiều 22

2.1.3 Mô hình quản lí đối tượng nhiều chiều 30

2.2 Cấu trúc dữ liệu hình học 35

2.2.1 Interval trees 36

2.2.2 Priority search trees 41

2.2.3 Segment trees 45

2.3 Biến thể của các cấu trúc dữ liệu hình học 51

2.3.1 Partition trees 52

2.3.2 Multi-level partition trees 57

2.3.3 Cutting trees 60

2.4 Kết luận 66

Chương 3 - CÀI ĐẶT VÀ ĐÁNH GIÁ 68

3.1 Cài đặt Kd-trees 68

3.2 Cài đặt Range trees 70

3.3 Cài đặt Interval trees 72

3.4 Cài đặt Segment trees 74

3.5 Kết luận 76

KẾT LUẬN 77

TÀI LIỆU THAM KHẢO 78

Trang 4

DANH SÁCH THUẬT NGỮ VÀ GIẢI THÍCH

1 Canonical subset Tập con chính qui

2 -Dimensional Kd-trees Kd-trees chiều

3 -Dimensional Range trees Range trees chiều

4 Interval trees Cây quản lí khoảng

5 Multi-level partition trees Cây phân vùng nhiều mức

7 Priority search trees Cây tìm kiếm ưu tiên

10 Segment trees Cây quản lí đoạn thẳng

11 Stabbing queries Truy vấn stabbing

12 Windowing queries Truy vấn cửa sổ

Trang 5

DANH SÁCH HÌNH VẼ

Hình 1.1 Thứ tự giữacácđoạnthẳng với đườngthẳngquétdọc 9

Hình 1.3 Thuật toán chỉ cần kiểm tra7 điểm trong mảng 16 Hình 2.1 Giải thíchtruy vấncơ sở dữ liệu một cách hình 18 Hình 2.2 Truy vấn phạm vi một chiều trong cây nhị phân tìm kiếm 20 Hình 2.3 Kd-trees: mặt phẳng được chia và cây nhị phân 23

Hình 2.7 Tăng tốc độ tìm kiếm bằng cách thêm các con trỏ 33

Hình 2.9 Các mảngliên kếtvớicác núttrongcây chính 34 Hình 2.10 Truy vấn cửa sổ trong bản đồ của U.S 36 Hình 2.11 Phân loại các đoạn thẳng liên quan với 38

Hình 2.13 Các đoạn thẳngcắt bởi qcóđiểm đầu mút trái 40

Hình 2.14 Heap của tập hợp {1,3,4,8,11,15,21,22,36} 42 Hình 2.15 Một tập hợp các điểm và cây tìm kiếm ưu tiên tương ứng 43

Hình 2.17 Đoạn thẳng lưu tại v thay vì lưu trữ tại và 47 Hình 2.18 Segment trees: mũi têntừcácnúttrỏtới tập con chính qui 48 Hình 2.19 Tập con chính qui chứacác đoạnthẳng màbao

trùmsàncủamột nút, nhưng không phải làsàncủacha nó 49

Hình 2.21 Trả lời truy vấn nửa đường thẳng với cây nhị phân 53

Hình 2.23 Phân vùng mặt phẳng đơn hình và cây tương ứng 54

Trang 6

Số Tên hình Trang

Hình 2.24 Trả lời truy vấn phạm vi nửa mặt phẳng với partition trees 56 Hình 2.25 Đếm phạm vi nửa mặt phẳngtrongmặt phẳng đối ngẫu 60 Hình 2.26 (1/2) - cutting kích thước 10 cho tập hợp 6 đường thẳng 61

Hình 2.27 Cáctập con chính quivàtập conđiquatam giác 62

Hình 3.1 Sơ đồ các lớp trong thực hiện Kd-trees 68 Hình 3.2 Sơ đồ các lớp trong thực hiện Range trees 70 Hình 3.3 Sơ đồ các lớp trong thực hiện Interval trees 72 Hình 3.4 Sơ đồ các lớp trong thực hiện Segment trees 74

Trang 7

MỞ ĐẦU

Hình học tính toán xuất hiện từ lĩnh vực phân tích và thiết kế thuật toán trong cuối những năm 1970 và lớn mạnh trở thành một môn học với tạp chí riêng, hội nghị riêng và có một cộng đồng lớn các nhà nghiên cứu hoạt động Hình học tính toán là một chuyên ngành khoa học máy tính nghiên cứu các thuật toán giải quyết các bài toán hình học Hình học tính toán có ứng dụng trong nhiều lĩnh vực khác nhau như đồ họa máy tính, hệ thống thông tin địa lí, người máy, thống kê và những lĩnh vực khác mà trong đó các thuật toán hình học đóng vai trò cơ bản Vấn đề hình học tính toán với đầu vào là mô tả kiểu của tập hợp các đối tượng hình học, ví dụ như tập hợp các điểm, tập hợp các đoạn thẳng, hoặc tập hợp các đỉnh của một đa giác theo thứ tự ngược chiều kim đồng Đầu ra

là đáp ứng với truy vấn về các đối tượng như các đường thẳng cắt nhau, hoặc có thể là một đối tượng hình học mới, ví dụ như bao lồi của tập hợp các điểm

Các đối tượng hình học như điểm, đường thẳng và đa giác là cơ sở của một loạt các ứng dụng quan trọng và làm tăng tính thú vị của tập hợp các vấn đề

về thuật toán Ngày nay, máy tính được sử dụng ngày càng nhiều hơn để giải quyết các bài toán hình học với quy mô lớn hơn Lời giải tốt cho các bài toán thuật toán có tính chất hình học chủ yếu dựa trên hai thành phần Một là sự hiểu biết thấu đáo các tính chất hình học của bài toán, hai là ứng dụng các kỹ thuật thuật toán và cấu trúc dữ liệu thích hợp

Trong luận văn sẽ trình bày một số kiểu dữ liệu trừu tượng và cấu trúc dữ liệu trong hình học tính toán Những ứng dụng của các cấu trúc dữ liệu này không chỉ giới hạn trong các đối tượng hình học mà còn cho phép thiết kế những thuật toán hiệu quả, có thể xử lí các loại dữ liệu khác nhau của nhiều bài toán khác nhau

Luận văn được tổ chức thành 3 chương như sau:

Chương 1 – Trình bày tổng quan về hình học tính toán như các đối tượng

của hình học, một số bài toán hình học và thuật toán

Chương 2 – Mô tả kiểu dữ liệu trừu tượng trong hình học tính toán như

mô hình quản lí đối tượng một chiều, hai chiều và nhiều chiều

Chương 3 – Cài đặt các cấu trúc dữ liệu, kết quả cài đặt thử nghiệm, đánh

giá hiệu suất của thuật toán và chương trình

Trang 8

Chương 1 - TỔNG QUAN VỀ HÌNH HỌC TÍNH TOÁN

1.1 Các bài toán của hình học tính toán

Hình họctính toánlà mộtchuyên ngành củakhoa họcmáy tínhnghiên cứucácthuật toáncó nội dung hình học Một sốbài toánhình họcphát sinh hoàn toàntừviệc nghiên cứu cácthuật toánhình học tính toánvà cácbài toánnàycũng đượcxemlà một phần củahình học tính toán Hình học tính toán nghiên cứusự phức tạpcủa cácbài toánhình học, xây dựngcấu trúc dữ liệuđểlưu trữcác loại dữ liệuhình học, thiết kếthuật toáncho cácbài toánhình học và khám phácác tính chấthình học Những vấn đề cốt lõi trong hình học tính toán có thể được chia với nhiều cách khác nhau, theo nhiều tiêu chí khác nhau Ở đây, có thể phân loại các bài toántrong hình học tính toán thành các lớp bài toán như dưới đây[1]

Trang 9

vàkhông gian cần thiết để giải quyếtmột trường hợp bài toánnhất định

1.1.2Bài toán động

Thêm một lớpchínhlà các bài toánđộng,vớimục tiêu là đểtìmthuật toánhiệu quảcho việc tìm lời giảinhiều lầnsau mỗi lầnsửa đổigia tăng dữ liệu đầu vào Các thuật toáncho bài toánthuộc loại nàythườngliên quan đếncấu trúcdữ liệu động Bất kỳcác bài toánhình họctính toáncó thể đượcchuyển đổi thành mộtbài toán động.Bài toántìm kiếmphạm vicó thểđược chuyển đổi thànhbài toántìm kiếmphạm vi động,bằng cách cung cấpbổ sunghoặcxóacác điểm.Cácbài toánbao lồi độnglà đểlưu vết cácbaolồi,chẳng hạn như đối với tập hợp các điểmthay đổi động, khicác điểmđầu vàođược chènhoặcxóa

1.1.3Bài toán truy vấn hình học

Bài toán truy vấn hình họcthường gọi làbài toántìm kiếmhình học,đầu vàobao gồm hai phần: không gian tìm kiếmvà truy vấn với thay đổitrongcác trường hợpbài toán.Không giantìm kiếmthườngphải đượcxử lí trước, trong cùng một cách mànhiều truy vấn có thể đượctrả lờimột cách hiệu quả.Một sốbài toántruy vấnhình họccơ bảnlà:

Range Searching: Xử lí trướctập hợp các điểm và yêu cầuđếm số lượng cácđiểmnằm trong vùngtruy vấn một cách hiệu quả

Points Location: Cho phân vùngcủa không gianthành các ô và yêu cầu tạo racấu trúcdữ liệuhiệu quảchoô nơi điểmtruy vấnđược định vị

Nearest neighbor:Cho tập hợp các điểm và yêu cầutìmđiểm nằm gần nhất vớiđiểmtruy vấn một cách hiệu quả

Raytracing: Cho tập hợp các đối tượngtrong không gian và yêu cầu tạo racấu trúcdữ liệuhiệu quảchođối tượngcó tiatruy vấncắtđầu tiên

Nếu không gian tìm kiếm là cố định, độ phức tạp tính toán cho bài toán truy vấn hình họcđược ước tính bởi thời gian và không gian cần thiết để xây dựng các cấu trúc dữ liệu tìm kiếm và thời gian trả lời các truy vấn

1.1.4Các biến thể

Một số bài toáncó thểđược xem làthuộcmột trong cácloại trên,tùy thuộcvào bối cảnh.Chẳng hạn xét bài toán: Point in polygon – Xác định một điểm nằm trong hay nằm ngoài đa giác cho trước.Trong một vài tình huống của bài toán truy vấn có thể kỳ vọng hợp lí vào thứ tự các truy vấn, hoặc có thể được

Trang 10

khai thác với cấu trúc dữ liệu hiệu quả hoặc ước tính độ phức tạp chặt chẽ hơn

1.2.2 Đoạn thẳng

Một tổ hợp lồi của hai điểm phân biệt và là

Đoạn thẳng là tập hợp mọi tổ hợp lồi của và , kí hiệu , với

và các điểm đầu mút của đoạn thẳng Đoạn thẳng có hướng là đoạn thẳng được định hướng từ đến , kí hiệu [13]

1.2.3 Vectơ

Vectơ là một đoạn thẳng có hướng Vectơ có điểm đầu và điểm cuối , được kí hiệu Khi không cần chỉ rõ điểm đầu, điểm cuối ta kí hiệu [13]

1.3 Một số bài toán hình học và thuật toán

1.3.1 Bài toán xác định cặp đoạn thẳng bất kỳ cắt nhau

Thuật toánxác định cặp đoạn thẳng bất kỳtrong tập hợp các đoạn thẳng cắt nhau sử dụng “kỹ thuật quét” Trongkỹ thuật quét, đường thẳngquétdọcđiquatập hợp các đối tượng hình họctừtráisangphải vàxem xét tất cảcácđiểm đầu mút củađoạn thẳng theo thứ tự từtráisangphải vàkiểm trasự cắt nhau mỗi khichạmmộtđiểm đầu mút

1.3.1.1 Phát biểu bài toán

Cho tập hợp các đoạn thẳng trong mặt phẳng và yêu cầu xác định có tồn tại cặp đoạn thẳng nào cắt nhau hay không Giả sử rằng không có các đoạn thẳng

Trang 11

dọc và không có ba đoạn thẳng nào giao nhau tại một điểm

Hình 1.1 -Thứ tự giữa cácđoạnthẳng vớiđườngthẳngquétdọc

Với bất kỳ cho trước, mối quan hệ là một thứ tự hoàn toàn của đoạn thẳng cắt đường thẳng quét tại Những mối quan hệ , ,

, và ; Đoạn thẳng không so sánh được với các đoạn thẳng khác, hình 1.1a Khi đoạn thẳng và giao nhau, nhưng ; mọi đường thẳng quét đi qua vùng bóng mờ đều có và nằm liên tiếp nhau trong quan hệ thứ tự , hình 1.1b

Khi di chuyển đường thẳng quét, thuật toán thường phải quản lí hai tập hợp dữ liệu sau:

- Tình trạng đường thẳng quét cho biết thứ tự giữa các đoạn thẳng được cắt bởi đường thẳng quét

- Lịch các điểm biến cố là một dãy các tọa độ của các điểm đầu mút được sắp thứ tự từ trái sang phải để xác định vị trí dừng của đường thẳng quét

Gọi mỗi vị trí dừng như một điểm biến cố Tình trạng của đường thẳng quét thay đổi tại các vị trí dừng của đường thẳng quét

Trang 12

Các thao tác của trình trạng đường thẳng quét để duy trì truy vấn

- INSERT( ): chèn đoạn thẳng vào

- DELETE( ): xóa đoạn thẳng khỏi

- ABOVE( ): trả về đoạn thẳng ở ngay trên trong

- BELOW( ): trả về đoạn thẳng ở ngay dưới s trong

Cấu trúc dữ liệu cho lịch điểm biến cố (event-point schedule)

- Mỗi điểm đầu mút của các đoạn thẳng trong là một điểm biến cố, là vị trí đường thẳng quét nơi thứ tự thay đổi

- Lịch điểm biến cố là tĩnh và được xây dựng bằng cách sắp xếp các điểm đầu mút của các đoạn thẳng theo thứ tự từ trái sang phải

Nếu khi sắp xếp các điểm đầu mút của các đoạn thẳng trong từ trái sang phải nếu có nhiều điểm có cùng tọa độ thì phân giải trùng hợp như sau:

- Các điểm đầu mút trái được sắp xếp trước các điểm đầu mút phải

- Tiếp theo, các điểm đầu mút có tọa độ y nhỏ hơn được xếp trước

Sắp xếp các điểm đầu mút (x, y) theo thứ tự (x, e, y) trong đó xvàylàtọa độvới e = 0 cho điểm đầu mút trái và e = 1 cho điểm đầu mút phải

Thuật toán xác định cặp đoạn thẳng bất kỳ cắt nhaunhư sau[13]

độ nhỏ hơn được sắp xếp trước

3 for mỗi điểm trong danh sách được sắp xếp của các điểm đầu mút do

4 if là điểm đầu mút trái của đoạn thẳng then

5 INSERT

6 if (ABOVE tồn tại và cắt ) hoặc

(BELOW tồn tại và cắt s) then

7 return TRUE

Trang 13

8 if là điểm đầu mút phải của đoạn thẳng then

9 if (ABOVE và BELOW đều tồn tại)

và (ABOVE cắt BELOW ) then

10 return TRUE

11 DELETE

12 return FALSE

1.3.1.3 Phân tích độ phức tạp

Định lí 1.1 Gọi là tậphợp gồm đoạn thẳng, thuật toán

ANY-SEGMENTS-INTERSECT thực hiện trong thời gian [13]

Thật vậy, dòng1thực hiện mấtthời gian là Dòng2thực hiện mất thời gian là , bằng cách sử dụngsắp xếp trộn (merge sort) hoặcheapsort Khicó điểm biến cố, vòng lặp forcủadòng3-11thực hiện nhiều nhất là Mỗilần lặpmất thời gian , vìmỗihoạt động cây đỏđen mấtthời gian vàbằng cách sử dụngcácphương phápkiểm tra mỗigiao điểmcần thời gian Vì vậy, thời gianthực hiện thuật toán là

1.3.2 Bài toán tìm bao lồi

Một tập hợp trong mặt phẳng được gọi là lồi nếu cho trước bất kỳ

tổ hợp lồi của và nằm trong , hoặc tương đương với đoạn thẳng được chứa hoàn toàn trong [26]

Bao lồi của tập hợp bất kỳ là giao của tất cả các tập lồi chứa , hay bằng trực quan hơn, tập lồi nhỏ nhất chứa , kí hiệu [26]

1.3.2.1 Phát biểu bài toán

Cho là tập hợp các điểm trong mặt phẳng và yêu cầu tìm bao lồi

của nó, tức là tìm đa giác lồi nhỏ nhất mà mỗi điểm của hoặc nằm trên biên của hoặc nằm trong phần trong của

p lồi

p

q

không lồi

Trang 14

Hình 1.2 -Tập hợp gồm các điểm và bao lồi

Thuật toán quét GRAHAM [13, 17]

Thuật toán quét Grahamgiải quyết bài toántìm bao lồibằng cách khởi tạongăn xếp gồm cácđiểm ứng viên Mỗiđiểmcủatập hợp đầu vàotrong được đẩylênđầu ngăn xếpvàcác điểmkhông phải làđỉnhcủa được loại bỏ khỏi ngăn xếpsau cùng Khithuật toánkết thúc, ngăn xếp chứachính xáccácđỉnhcủa theo thứ tự ngược chiều kimđồng hồ vớisự xuất hiệncủa các điểm trên biên.Thuật toángọihàmTOP( ) - trả vềđiểmtrên cùng củangăn xếp

mà không thay đổithứ tự Svàhàm NEXT-TO-TOP( ) - trả vềđiểmtiếp theo

trong các điểmdướicùng củangăn xếp mà khôngthay đổithứ tự của

Algorithm GRAHAM-SCAN( )

Input Tập hợp gồm điểm trong mặt phẳng với

Output Bao lồi của là

1 Gọi là điểm nằm trong có tọa độ nhỏ nhất hoặc điểm ngoài cùng bên trái trong trường hợp đồng hạng

2 Gọi là các điểm còn lại trong , sắp xếp theo góc nhọn (polar angle) theo thứ tự ngược chiều kim đồng hồ quanh (nếu có nhiều hơn một điểm có cùng góc thì loại bỏ tất cả nhưng lấy điểm xa nhất từ )

Trang 15

3 PUSH

4 PUSH

5 PUSH

6 for to do

7 while góc tạobởi các điểm NEXT-TO-TOP , TOP

và là góc không quay trái do

8 POP

9 PUSH

10 return

Thuật toán bước Jarvis [12, 13, 19]

Thuật toán bước Jarvis tính toán bao lồi của tập hợp các điểm bởi một

kỹ thuật được biết như bọcgói Trước hết chọn một điểm chắc chắn thuộc bao lồi, giả sử chọn điểm có tọa độ nhỏ nhấttrong Điểm này là một đỉnh của bao lồi.Sau đótừ kéo cao hơnsang phải cho đến khi chạm vàomột điểm, điểm nàycũng là mộtđỉnhcủabaolồi.Cứ thực hiệntiếp tụcnhư thếtrên tập hợp

cácđỉnhcho đến khigặp lạiđỉnhban đầu

Algorithm JARVIS'S MARCH

Input Tập hợp gồm điểm trong mặt phẳng

Output Bao lồi của

1 Chọn là một điểm trong tập hợp có tọa độ nhỏ nhất

2 Chọn là một điểm trong tập hợp mà góc giữa đoạn thẳng với trục hoànhlà nhỏ nhất

Định lí 1.2 Cho tập hợp gồm điểm trong mặt phẳng Thời gianthực hiện

thuật toán quétGrahamlà , trong đó n là số điểm trong [13]

Thật vậy, dòng1chi phíthời gian Dòng2chi phíthời gian là

Trang 16

, bằng cách sử dụngmegersort hoặcheapsortđểsắp xếpcác góc giữa vàphương pháptích có hướng để so sánh các góc Dòng3-5chi phí thời gian

là Vì , vòng lặp forcủa dòng6-9được thực hiệnnhiều nhất

lần Khi đó thao tác PUSHchi phí thời gian , mỗi lần lặpchi phíthời gian độc lập vớimất thời gian cho vòng lặpwhile của dòng7-8vàvì thếtoàn

bộ vònglặp for mấtthời gian chỉ có mộtvòng lặp while lồng nhau

Với mỗiđiểm được đẩyvàongăn xếp đúng một lần, cónhiều nhất một toán tử POPứng vớimỗitoán tử PUSH Có ít nhấtbađiểm và -là không bao giờlấy rakhỏi ngăn xếp, trongthực tế nhiều nhất toán tử POPđược thực hiệntrong tổng số Mỗilần lặpwhilemộtPOPthực hiệnvàdo đócónhiều nhất lần lặpwhile Khithực hiệndòng7với chi phí thời gian , mỗilần gọiPOPvới chi phíthời gian là vàkhi tổng thời gianđược thực hiện bởivòng lặpwhile là Như vậy, thời gianthực hiệnthuật

Định lí 1.3 Cho là tập hợp gồm điểm trong mặt phẳng Thời gian thực hiện

thuật toán bước Jarvis là , trong đó là số đỉnh của bao lồi [13]

Thật vậy, với đỉnh của , tìm đỉnhvớigócgiữa nhỏ nhất.Mỗilần so sánhcác góc giữavới chi phí thời gian là Ta có thểtính toánít nhất giá trịtrong thời gian nếumỗi lần so sánhchi phí thời gian là Như vậy,thuật toán bướcJarvisđược thực hiện với chi phí thời gianlà

1.3.3 Bài toán tìm cặp điểm gần nhất

Bài toán cặp điểm gần nhất tìm hai điểm gần nhất trong tập hợp điểm cho trước.Khoảng cách giữa các điểm thường được xét trong các bài toán hình học - khoảng cáchEuclide:khoảng cáchgiữa các điểm và

xéttất cả cặpđiểm với chi phí về thời gian là Trongphần nàysẽmô tảthuật toán chia để trị với chi phí vềthời gian là

1.3.3.1 Phát biểu bài toán

Cho trước tập hợp gồm điểm trong mặt phẳng với và yêu cầu đưa ra cặp điểm có khoảng cách nhỏ nhất

1.3.3.2 Thuật toán

Trang 17

Mỗilời gọiđệ quycủa thuật toáncóđầu vàonhư là tập con và các mảng và ,mỗi mảng có chứatất cả các điểmcủa tập conđầu vào Các điểm trongmảng được sắp xếptăng dần theo tọa độ , mảng được sắp xếp tăng dầntheotọa độ

Divide:Chiatập hợp các điểm thành hai tập con và với điểm giữa của

các điểmtrong nằm trênhoặcbên trái củađường thẳng và tất cả các điểm trong nằm trênhoặc bên phải của Mảng được chia thànhcác mảng và ,chứacác điểm của và tương ứng,sắp xếp tăng dần theo tọa độ Tương tự,mảng được chia thànhcác mảng và , chứa cácđiểmcủa và tương ứng,sắp xếp tăng dần theotọa độ

Conquer:Tập hợp các điểm được chia thànhhai tập con và ,tạo ra hai lời gọiđệ quymột lời gọi đệ quy tìm cặpđiểmgần nhấttrong vàlời gọi đệ quy khác tìmcặpđiểmgần nhấttrong Cácđầu vào củalời gọi đầu tiênlà tập con , mảng và ; lời gọi thứ hainhận các đầu vào , và Gọicác khoảng cáchcặp điểm gần nhấttrả lạicủa và tương ứng là và ;gọi

Combine:Cặp điểmgần nhất hoặc làhaicặpkhoảng cách tìm thấybởimột

trong các lời gọi đệ quy,hoặc cặp điểm gần nhất là cặpđiểm vớimột điểm nằm trong và một điểm khácnằm trong Thuật toánxác địnhkhi cócặpđiểm màkhoảng cáchnhỏ hơn Nếu có cặpđiểm vớikhoảng cáchnhỏ hơn , cả hai điểmcủa cặpđiểm đó phải đượcnằm trong đơn vị củađường thẳng

- Tạo ra mảng , đó là mảng với tất cả các điểm không nằm trong dải dọc rộng được loại bỏ Mảng được sắp xếp theo tọa độ , cũng như

- Với mỗi điểm trong mảng , tìm các điểm trong được nằm trong đơn

vị của Chỉ có 7 điểm trong sau cần được xem xét Thuật toán tính

khoảng cách từ đến mỗi điểm trong 7 điểm đó và theo dõi những khoảng cách

cặp điểm gần nhất đã tìm trên các cặp điểm trong mảng

- Nếu thì dải dọc thực tế không có một cặp điểm gần hơn đã được tìm thấy bởi các lời gọi đệ quy Cặp điểm này và khoảng cách của nó được trả

về Ngược lại, cặp gần nhất và khoảng cách của nó được tìm bởi các lời gọi đệ quy được trả về

Trang 18

Hình1.3 - Thuật toán chỉ cần kiểm tra điểm trong mảng

Algorithm CLOSEST_PAIR( )

Input Tập hợp gồm các điểm trong mặt phẳng

Output Cặp điểm gần nhất (cặp điểm có khoảng cách Eulide nhỏ nhất)

1 Chia thành hai tập con và với điểm giữa tọa độ trong bởi đường thẳng dọc ; chia thành và ; chia thành và

4 Tính khoảng cách giữa các điểm mà một điểm nằm trong ( )và một điểm nằm trong thực hiện như sau:

4.1 Mảng - các điểm của nằm trong dải dọc , sắp xếp theo tọa độ

4.2 Với mỗi điểm trong , chỉ có điểm trong được so sánh, khoảng cách cặp điểm gần nhất

4.3 Nếu thì dải dọc thực tế không có một cặp điểm gần hơn đã được tìm thấy bởi các lời gọi đệ quy Cặp điểm này và khoảng cách của nó được trả về Ngược lại, cặp điểm gần nhất và khoảng cách của nó được tìm bởi các lời gọi đệ quy được trả về

pL

pR

các điểm trùng nhau, một trong

P L , một trong P R

các điểm trùng nhau, một trong

P L , một trong P R

Trang 19

Trình bàychínhở trongmỗi lời gọi,cầntạo thành mộttập conthứ tựcủa mộtmảng được sắp xếp Tập hợp được chia thành và ,hình thànhcácmảng

và được sắp xếp theo tọa độ Phương phápnày có thể xem như làđối lậpvới thủ tụcMERGEtừthuật toán sắp xếp trộn (merge sort):chia mảng được sắp xếpthành haimảngđược sắp xếp.Để đơn giản kiểm tra các điểm trongmảng theo thứ tự.Nếumột điểm nằm trong , thêmđiểm này vàocuốimảng ;ngược lại, thêm điểm này vàocuốimảng [13]

được đưa ra bởi Shamos và xuất hiện trong Preparata và Shamos [27]

Trang 20

Chương 2 - KIỂU DỮ LIỆU TRỪU TƯỢNG TRONG

HÌNH HỌC TÍNH TOÁN

2.1 Tìm kiếm phạm vi trực giao

Ngay từ đầu có vẻ nhưcơ sở dữ liệuítlàmviệc vớihình học Tuy nhiên,nhiềuloại câu hỏi – được gọi là các truy vấn –về dữ liệu trongcơ sở dữ liệucó thểđượcgiải thíchmột cách hình học Bằng cách chuyển các bản ghitrongcơ sở dữ liệuthành cácđiểmtrongkhông giannhiềuchiềuvàchuyểncác truy vấntrên bản ghithànhcác truy vấntrêntập hợp điểm

Xétmộtcơ sở dữ liệuquản lí nhân sự, mỗi nhân viên được lưu trữ các thông tin như họ tên,địa chỉ, tuổi,lương.Mộttruy vấntạobáo cáotìm tất cả các nhân viêncó tuổi từ 30 đến 50 và thu nhập hàng tháng từ 4000000đến 6000000 Vấn đềhình họcbiểu diễn mỗinhân viênlàmột điểmtrong mặt phẳng.Tọa độ thứ nhất của điểm là tuổivàtọa độ thứ haibiểu diễn lương Truy vấncơ sở dữ liệuyêu cầu hiển thị tấtcảnhân viêncó tuổi từ 30 đến 50 và thu nhập hàng tháng từ 4000000đến 6000000 được chuyển thành truy vấnhình học: báo cáotất cả cácđiểmvới tọa độthứ nhấttừ 30 đến 50vàtọa độ thứ hai từ 4000000đến 6000000, nghĩa làbáo cáotất cảcácđiểm nằm trongtruy vấnhình chữ nhật song songtrục tọa

độ

Hình 2.1- Giải thíchtruy vấncơ sở dữ liệu một cách hình

Nếucó thêm thông tinvềsố concủamỗi nhân viênvà yêu cầu tạo truy

vấn“báo cáo tất cả nhân viêncó tuổi từ 30 đến 50, thu nhậphàng tháng từ

4000000 đến 6000000 và cótừ 2 đến 4 con”.Trong trường hợpnày,mỗinhân viên

Trang 21

được mô tả bởimộtđiểmtrongkhông gianba chiều vớitọa độthứ nhất, tọa độ thứ hai,tọa độthứ babiểu diễntuổi,lương và sốcon tương ứng Để trả lờitruy vấn, cần

phảibáo cáotất cảcác điểmnằm trong hìnhhộpsong songtrục tọa độ [30 : 50]

×[4000000: 6000000] ×[2: 4] Nếu taquan tâmcác truy vấntrả lờitrên thuộc

tính củacác bản ghi trongcơ sở dữ liệu thì các bản ghiđược chuyển thành các điểmtrongkhông gian chiều Mộttruy vấnyêu cầubáo cáotất cảcác bản ghicó các thuộc tínhnằmgiữa cácgiá trịcố địnhthì chuyểnthành mộttruy vấnđưa ra tất cảcác điểmnằm trongmộthình hộpsong songtrục tọa độ chiều Như vậy,truy vấnnày được gọilà truy vấn phạm vi hình chữ nhậthoặc truyvấnphạm vi trực giaotrong hình học tính toán [5]

2.1.1 Mô hình quản lí đối tượng một chiều

2.1.1.1 Truy vấn phạm vi một chiều

Cho tập hợp gồm điểm trênđường thẳng thực là và yêu cầu báo cáo tất cả các điểm nằm trong phạm vi truy vấn

2.1.1.2 Thuật toán và cấu trúc dữ liệu

Cấu trúc dữ liệu được sử dụng để giải quyết bài toán truy vấn phạm vi một chiều hiệu quả là cây nhị phân tìm kiếm cân bằng [26] Các lá của lưu trữ các điểm của và các nút trong của lưu trữ các giá trị chia hỗ trợ việc tìm kiếm, nút lưu trữ giá trị chia Giả sử cây con trái nút chứa tất cả các điểm nhỏ hơn hoặc bằng và cây con phải chứa tất cả các điểm lớn hơn

Gọi và là hai lá nơi mà tìm kiếm kết thúc tương ứng với và Trước tiên tìm theo và trong Các điểm trong phạm vi là những điểm được lưu trữ tại các lá ở giữa và bao gồm và , có thể chứa điểm lưu trữ tại và lưu trữ tại Để tìm các lá giữa và , trước tiên cần phải tìm

Trang 22

các nút chia các đường đi tìm kiếm với và [5] Trong hình 2.2, truy vấn một chiều với phạm vi [18 :77], báo cáo tất cả các điểm lưu trữ tại các lá màu xám đen và điểm lưu trữ tại lá Các điểm nằm trong phạm vi là các lá của các cây con ở giữa và ; các cây con có màu xám đen, còn các nút trên đường

đi tìm kiếm có màu xám sáng

Hình 2.2 - Truy vấn phạm vi một chiều trong cây nhị phân tìm kiếm

Từ ý tưởng trên xây dựng chương trình con tìm nút chia như sau[5] Gọi

và là con trái và con phải tương ứng của nút

Input Cây T và hai giá trị và với

Output Nút nơi chia các đường đi đến điểm và , hoặc lá nơi mà cả hai

Trang 23

Thuật toántruy vấn sử dụngchương trình conREPORTSUBTREE, duyệtcây concó gốc lànút cho trướcvàbáo cáonhững điểmđược lưu trữtại lá Khisố núttrongbất kỳcủacâynhị phânlà íthơnsố lá, chương trình connàychi phí thời gianlàtuyến tínhvới số điểmbáo cáo[5].

Input Cây nhị phân tìm kiếm và phạm vi

Output Tất cả các điểm lưu trữ trong nằm trong phạm vi

1 ← FINDSPLITNODE( )

2 if là một lá then

3 Kiểm tra nếu điểm lưu trữ tại thì phải được báo cáo

4 else (∗ Theo đường đi đến và báo cáo các điểm trong cây con phải của

đường đi.∗) 5

11 Kiểm tra điểm lưu trữ tại lá phải được báo cáo

12 Tương tự, theo đường đi đến báo cáo các điểm trong các cây con trái

của đường đi và kiểm tra nếu điểm lưu trữ tại lá nơi đường đi kết thúc phải được báo cáo

các cây con được chọn

root(T)

Trang 24

2.1.1.3 Phân tích độ phức tạp

Định lí2.1Chotập hợp gồm điểmtrong không gianmột chiều Tập hợp

đượclưu trữ trongcây nhị phân tìm kiếmcân bằngsử dụnglưu trữ và có thời gian xây dựng , như vậycác điểmtrong phạm vi truy vấncó thểbáo cáotrongthời gian , với làcácđiểmbáo cáo [5]

Thật vậy, cấu trúc dữ liệu sử dụng trong tìm kiếm phạm vi một chiều làcây nhị phân tìm kiếmcân bằngsử dụnglưu trữ và có thểđược xây dựng trongthời gian Trongtrường hợpxấu nhấttất cảcác điểmcó thểnằm

trongphạm vitruy vấn thì thời giantruy vấnlàΘ(n) Thời gian chi phí một lời gọi

REPORTSUBTREElàtuyến tínhvới sốđiểmbáo cáo Do đó, tổng thời gianchi phí trongtất cảcác lời gọilà Các nútcòn lạiđượcthămlà các núttrênđường đitìm kiếmcủa hoặc Vì làcân bằng, các đường đicóchiều dài .Thời gianchi

phí trongmỗi nút là , tổng thời gianchi phícho các nút là [5].Như vậy thời giantruy vấnlà

2.1.2 Mô hình quản lí đối tượng hai chiều

2.1.2.1 Truy vấn phạm vi hai chiều

Gọi làtập hợp gồm điểmtrongmặt phẳng và yêu cầu báo cáo tất cả các điểm nằm trong phạm vi hình chữ nhật Trongbài toántìm kiếm phạm vi hai chiều,mỗi điểmtrong mặt phẳng được biểu diễn bởi haigiá trị là tọa

độ vàtọa độ Giả sửrằngkhông cóhaiđiểmtrong cùngtọa độ vàtọa độ Mộtđiểm nằmtrong hình chữ nhậtkhi và chỉ khi

2.1.2.2 Thuật toán và cấu trúc dữ liệu

2.1.2.2.1 Kd-trees 2 chiều (2-dimensional Kd-trees)

Ta cần xây dựng cấu trúc dữ liệu cho truy vấn phạm vi hai chiều Trong trường hợp hai chiều mỗi điểm có hai giá trị quan trọng là tọa độ và tọa độ

p y y’

Trang 25

Trước tiênta chia theotọa độ rồi đến tọa độ và thực hiện luân phiên với quá trình như sau:Tạigốc, chia bởi đường thẳng dọc thànhhaitập con và

có kích thướcgầnbằng nhau.Đường thẳngchiađượclưu trữtạigốc.Tập hợp gồm các điểmở bên tráihoặc ở trênđường thẳng chia, đượclưu trữtrongcây contrái và tập hợp gồm các điểm ở bên phải đường thẳng chia, được lưu trữ trong cây con phải Cứ thực hiện quá trình trên cho đến khi chỉ còn một điểm Một cây như thế gọi làkd-trees, cây mà trong hình 2.3 là 2d-trees hay còn gọi là kd-trees hai chiều [5]

Hình 2.3 - Kd-trees: mặt phẳng được chia và cây nhị phân tương ứng

Thuật toán xây dựng kd-treesvới thủ tụcđệ quymô tảdưới đây[5].Thủ tụcnàysử dụng haitham số: tập hợpcácđiểmvàmột số nguyên Tham số thứ nhấtlàtập hợpcác điểm dùng để xây dựng kd-trees; khởi tạolà tập hợp Tham sốthứ hailàchiều sâucủagốccây con Tham sốchiều sâu bằng khôngtạilời gọiđầu tiên Chiều sâulàquan trọngvìnóxác địnhxemphảichia bởi đườngthẳng dọchoặcđường thẳng ngang Thủ tụctrả vềgốc của kd-trees

Input Tập hợp các điểm và chiều sâu hiện tại

Output Gốc của kd-trees được lưu trữ

1 if chỉ chứa một điểm then

2 return lá lưu trữ điểm này

3 else if là chẵn then

4 Chia thành hai tập con bởi đường thẳng dọc đi qua điểm giữa

tọa độ của các điểm trong Gọi là tập hợp các điểm bên trái hoặc nằm trên và là tập hợp các điểm bên phải

Trang 26

5 else Chia thành hai tập con bởi đường thẳng ngang đi qua điểm

giữa tọa độ của các điểm trong Gọi là tập hợp các điểm phía dưới hoặc nằm trên và là tập hợp các điểm phía trên

bộ mặt phẳng Một điểm được lưu trữ trong cây con có gốc tại nút khi và chỉ khi chúng nằm trong Vì vậy cần phải tìm các cây con có gốc tại khi truy vấn hình chữ nhật cắt

Hình 2.4 - Các nútcủa kd-trees vàvùngmặt phẳng tương ứng

Cho trước hình chữ nhật truy vấn , duyệt kd-trees nhưng chỉ thăm vùng

có các nút được cắt bởi hình chữ nhật truy vấn Khi một vùng nằm hoàn toàn trong hình chữ nhật truy vấn, báo cáo tất cả các điểm được lưu trữ trong cây con của chúng Tức là, cần tìm cây con của nút chỉ khi cắt khi

nằm hoàn toàn trong truy vấn , báo cáo tất cả các điểm được lưu trữ trong cây con của Khi duyệt đến lá, phải kiểm tra xem các điểm được lưu trữ tại lá có nằm trong vùng truy vấn và nếu có nằm trong vùng truy vấn thì báo cáo các điểm đó

region(v)

Trang 27

Hình 2.5 - Truy vấn trên kd-trees hai chiều

Trong hình 2.5, các nút màu xám được thăm khi thực hiện truy vấn với các hình chữ nhật màu xám.Các nút được đánh dấu bằng một dấu sao tương ứng với vùng nằm hoàn toàn trong truy vấn hình chữ nhật Các cây con màu xám đen

có gốc tại nút có dấu sao được duyệt và tất cả các điểm lưu trữ được báo cáo Các lá khác được thăm tương ứng với các vùng mà chỉ một phần trong truy vấn hình chữ nhật Các điểm lưu trữ trong chúng phải được kiểm tra có nằm trong phạm vi truy vấn; kết quả là các điểm và được báo cáo; các điểm , và không được báo cáo

Thuật toán truy vấn được mô tả bởi thủ tục đệ quy như sau[5] Thuật toán

sử dụng chương trình con REPORTSUBTREE( ) duyệt cây con có gốc tại nút và báo cáo tất cả các điểm được lưu trữ ở lá của nó

Algorithm SEARCHKDTREE( )

Input Gốc của (cây con của) kd-trees vàphạm vi

Output Tất cả các điểm tại các lá ở dưới mà nằm trong phạm vi

1 if là một lá then

2 Báo cáo điểm lưu trữ tại nếu nó nằm trong

3 else if được chứa hoàn toàn trong then

Trang 28

8 REPORTSUBTREE( )

2.1.2.2.2 Range trees 2 chiều (2-dimensional Range trees)

Kd-treescóthời giantruy vấn và khi số điểmbáo cáolànhỏthì thời giantruy vấnlàtương đốicao Trong phầnnàysẽmô tảmộtcấu trúcdữ liệukhác chocác truy vấn phạm vi hình chữ nhật là range trees vớithời giantruy vấntốt hơn là , nhưng không gian lưu trữtănglên từ vớikd-treesđến

với range trees.Như trình bày trước đó, truy vấn phạm vihai chiềuvề

cơ bảnbao gồmhai truy vấncon một chiều, một truy vấn trên tọa độ vàmộttruy vấn trên tọa độ của các điểm

Gọitập con cácđiểmlưu trữtrong các lácủacây concó gốc tại nút là tập con chính qui của Tập con chính qui của gốccâylàtoàn bộtậphợp , tập con chính qui củamột lá chỉ làđiểmlưu trữtạiláđó Tập concủa cácđiểmcó tọa độ nằmtrong phạm vitruy vấnđược biểu diễn nhưhợpcủacác tập con chính qui, đó

là nhữngtập hợp củacác nút có gốc củacác cây conđược chọn [5] Takhôngchỉ quan tâm tất cảcácđiểmtrongtập con chính qui mà cònbáo cáocác tập con chính quicó tọa độ nằmtrong Đây làtruy vấn một chiều khác, cung cấpcâynhị phântìm kiếm trên tọa độ củacácđiểmtrong có sẵn Điều này dẫn đếncấu trúc dữ liệucho cáctruy vấnphạm vi hình chữ nhậttrêntập hợp gồm điểmtrong mặt phẳng

 Cây chínhlàcây nhị phântìm kiếmcân bằng được xây dựng trêntọa độ củacácđiểmtrong

 Vớimỗi nút trong hoặc nút lá bất kỳtrong , tập con chính qui được lưu trữ trongcâynhị phântìm kiếmcân bằng trên tọa độ củacácđiểm Nút lưu trữcon trỏtrỏ vào gốccủa được gọi làcấu trúcliên kếtcủa

Cấu trúcdữ liệunày đượcgọi làrange trees Cấu trúc dữ liệutrong đócác nútcócác con trỏtrỏ đến các cấu trúcliên kếtthường được gọi làcác cấu trúc dữ liệu nhiềumức (multi-level data structures) Vì vậy, cây chính được gọi làcâymức thứ nhất vàcáccấu trúcliên kếtnày là các cây mức thứ hai [5]

Trang 29

Hình 2.6 - Range trees hai chiều

Cho trước làphạm vitruy vấn Trước tiên tập trungvàotìmcácđiểmcótọa độ nằmtrong , khoảng của truy vấn hình chữ nhậtvàsau đó quan tâmđếntọa độ Nếuchỉ quan tâmđếntọa độ thìtruy vấnlàtruy vấnphạm vimột chiều Tìm kiếm theo và trongcâycho đến khinhận được nút chia các đường đitìm kiếm Từ các con trái của tiếp tục tìm kiếm với vàtạimỗinút nơimà đường đitìm kiếmcủa đến bên trái, báo cáotất cảcác điểmtrongcây conphảicủa Tương tự, tiếp tụctìm kiếmvới tạicácconphảicủa vàtạimỗinút nơimà đường đitìm

kiếmvới đến bênphải phải báo cáotất cảcác điểmtrongcây contráicủav Cuối

cùng, kiểm tracáclá và nơimà hai đường đi kết thúc xemchúng cóchứa một điểmtrongphạm vi

Range treescó thểđượcxây dựngvớithuật toánđệ quy như dưới đây,với đầu vàolà tập hợp của cácđiểmđược sắp xếptheo tọa độ vàtrả vềgốc củarange treeshai chiều của [5]

Algorithm BUILD2DRANGETREE( )

Input Tập hợp gồm các điểm trong mặt phẳng

Output Gốc của range trees hai chiều

1 Xây dựng cấu trúc liên kết: Xây dựng cây nhị phân tìm kiếm theo tập hợp gồm các điểm trong Lưu trữ các lá của không chỉ chứa tọa

độ của các điểm trong ,mà còn chứa chính các điểm đó

2 if chỉ chứa một điểm then

3 Tạo lá lưu trữ điểm này và thực hiện cấu trúc liên kết của

4 else Chia tập hợp thành hai tập con: tập con chứa các điểm với tọa

cây nhị phân tìm kiếm

trên tọa độ

cây nhị phân tìm kiếm trên tọa độ

Trang 30

độ nhỏ hơn hoặc bằng , điểm giữa của tọa độ và tập con

chứa các điểm với tọa độ x lớn hơn

5 ← BUILD2DRANGETREE( )

7 Tạo nút lưu trữ , thực hiện con trái của , thực hiện

con phải của và thực hiện cấu trúc liên kết của

8 return

Thuật toántruy vấnthực hiện như mô tả sau đây [5] Trước tiênchọntập con chính quimà chứa cácđiểmcó tọa độ nằmtrong phạm vi được thực hiện vớithuật toántruy vấnmột chiều Trong số cáctập con đó, báo cáocácđiểmcótọa độ nằmtrongphạm vi Thuật toántruy vấnhai chiều làgiốngvới1DRANGEQUERY nhưng chỉcó sự khác nhau duy nhấtđó làlời gọiREPORTSUBTREEđược thay thế bởilời gọi1DRANGEQUERY

Input Range trees hai chiều và phạm vi

Output Tất cả các điểm trong nằm trong phạm vi

2 if là một lá then

3 Kiểm tra nếu các điểm sắp xếp tại phải được báo cáo

4 else (∗ Theo đường đi đến và gọi 1DRANGEQUERY trên các cây con

phải của đường đi ∗) 5

6 while không phải là lá do

7 if then

9

10 else

11 Kiểm tra nếu điểm lưu trữ tại phải được được báo cáo

12 Tương tự, theođường đitừ đến , gọi 1DRANGEQUERYvới

phạm vi trêncáccấu trúcliên kếtcủa các câycon tráicủađường

đivàkiểm tra xemcácđiểmđược lưu trữtạilánơi mà đường đikết

thúcphảiđược báo cáo

Trang 31

2.1.2.3 Phân tích độ phức tạp

Định lí 2.2 Kd-treeschotập hợp gồm điểmtrong mặt phẳngsử dụnglưu

trữ và xây dựngtrongthời gian .Truy vấn phạm vi hình chữ

nhậttrên kd-treeschi phítrong thời gian , với làsốđiểmbáo cáo [5]

Thật vậy, mỗi nút có cả hai danh sách sắp xếp theo tọa độ x và tọa độ

Mỗi trong danh sách và danh sách được liên kết với nhau Tổng thời gian

mỗi đường thẳng chia có thể được tìm là tuyến tính và có đường thẳng chia trong kd-trees Tổng thời gian để tìm tất cả các đường thẳng chia là

Vì vậy, tổng số thời gian tiền xử lí là [5]

Với các vùng nằm trong truy vấn hình chữ nhật ,tổng thời giancần thiếtđểduyệtcây conlà với là số điểm báo cáo Vớimỗinút ,phạm vitruy vấncắtngang , nhưng khôngnằm hoàn toàntrongphạm vi Nói cáchkhác, giới hạncủaphạm vitruy vấncắt Đểphân tíchsốnút, sẽgiới hạnsốvùngcắtbởicácđườngthẳng dọc Điều nàysẽchomộtgiới hạn trênvề số vùngcắtbởicáccạnhbên tráivà cạnh bên phảicủatruy vấnhình chữ nhật Số vùng cắt nhaubởicáccạnhtrênvàdưới củaphạm vitruy vấncó thểđượcgiới hạntrongcùng một cách Sau đó đếm bao nhiêu vùng ở dưới đường thẳng dọc có thể cắt

Cho làđường thẳng dọc và là kd-trees Gọi là đường thẳng chia lưu trữtạigốccủa kd-trees Đường thẳng chia cắthoặcvùng bên trái hoặcvùngbên phải nhưngkhông phảicả hai Mỗi một trong sốbốnnútởtại độ sâuhaitrongcâytương ứng với mộtvùngchứa điểm Hai trong sốbốn núttương ứngvớivùngcắt nhau, tađếmsốlượng các vùngcắt nhautrongcáccây conmột cách đệ quy Hơn nữa, cắtcácvùngcủagốc vàmột trongsố cáccon của nó Do đó, thỏa mãncông thức truy hồi

Công thức truy hồi có lời giảivới [5] Nói cách khác, bất kỳđườngthẳng dọccắt vùngtrong kd-trees Tương tự, có thểchứng minhrằngtổng số vùngcắt bởiđườngthẳng nganglà Tổng sốvùngcắtbởicácbêncủa phạm vitruy vấnhình chữ nhậtcũng được giới hạn bởi

Trang 32

Định lí2.3 Cho làtập hợp điểmtrongmặt phẳng Range trees của sử dụnglưu

trữ và đượcxây dựngtrong thời gian Với truy vấnrange trees

có thểbáo cáocácđiểmcủa nằmtrong phạm vitruy vấnhình chữ nhậttrongthời gian , với làsốđiểmbáo cáo [5]

Thật vậy, điểm trong được lưu trữtrongcấu trúcliên kếtcủa cácnúttrênđường đi trong về phíaláchứa Do đó, với tất cảcác nútởchiều

sâucủa , điểmp được lưu trữtrongcấu trúcliên kết Vìrange tree một chiềusử

dụnglưu trữtuyến tínhtheo saunó cácliên kếtcấu trúcđó củatất cả các nútởchiều

sâubất kỳcủaTcũngsử dụnglưu trữ Chiều sâucủa là Do đó, tổng

số lượnglưu trữcần thiếtđược giới hạn bởi

Tạimỗinút trongcâychính chi phí thời gianhằng sốđểquyết địnhnơi mà cácđường đitìm kiếmtiếp tụcvàcó thểgọi1DRANGEQUERY Theo Định lí 2.1 chi phícho lời gọiđệ quynàylà , với làsố điểmbáo cáo Tổng thời gianchi phí là tínhtổng làhơntất cả cácnúttrongcây chính đượcthăm Hơn nữa, các đường đitìm kiếmcủa và trongcây

2.1.3 Mô hình quản lí đối tượng nhiều chiều

2.1.3.1 Kd-trees nhiều chiều

Kd-trees cũng có thể được sử dụng cho tập hợp các điểm trong không gian ba chiều hoặc với chiều cao hơn Thuật toán xây dựng kd-trees là giống như trường hợp trong mặt phẳng: Tại gốc, chia tập hợp các điểm thành hai tập con có kích thước gần bằng nhau của cùng một siêu phẳng vuông góc với trục tọa độ Tại các con của gốc sự phân chia dựa trên tọa độ thứ hai (tọa độ ), tại các nút ở chiều sâu hai trên tọa độ thứ ba (tọa độ ) và cứ thực hiện như thế cho đến khi tại chiều sâu chia trên tọa độ cuối cùng (tọa độ ) Ở chiều sâu bắt đầu lại tất cả, chia trên tọa độ thứ nhất Sự đệ quy dừng lại cho đến khi chỉ còn một điểm trái, sau đó được lưu trữ như một lá Vì kd-trees chiều cho tập hợp gồm điểmlà câynhị phânvới lá, không gian lưu trữlà và thời gianxây dựnglà , với làhằng số

Các nút trong kd-trees chiều tương ứng với các vùng như trong mặt phẳng Thuật toántruy vấnthămcác nútcó các vùngđược cắt bởi phạm vitruy

Trang 33

vấnvàduyệtcác cây con(báo cáocác điểmlưu trữtrong các lá)đó làgốc tạicác nútmà vùngđược chứa hoàn toàntrongphạm vitruy vấn Điều đócó thểđượcchỉ rarằng thời giantruy vấngiới hạn bởi [5]

2.1.3.2 Range trees nhiều chiều

Để khái quát từ range treeshai chiều đến range trees với số chiềucao hơn

là khá đơn giản Cho làtập hợpcácđiểmtrong không gian chiều Xây dựngcâynhị phântìm kiếmcân bằngtrên tọa độ thứ nhấtcủacácđiểm Tập con chính qui củanút trongcây mức đầu tiên - cây chính, bao gồmcácđiểmđược lưu trữtrong lácủacây concó gốc là Đối vớimỗi nút cầnxây dựngcấu trúcliên kết ; câymức thứ hai - range trees chiều chocác điểmtrong , giới hạn tọa độ cuối cùng của chúng Range trees

chiều này được xây dựngđệ quytrongcùng một cách: đó làcâynhị phântìm kiếmcân bằngtrêntọa độ thứ haicủa các điểm, trongđómỗi nútcómộtcon trỏ trỏ tớirange trees chiều củacácđiểmtrongcây con, giới hạn tọa độ cuối cùng Sự đệ quy sẽ dừng lạikhiở tại phía trái cácđiểmgiới hạn của tọa độ cuối cùng, chúng đượclưu trữtrongrange treesmột chiều

Thuật toántruy vấncũngtương tự nhưtrường hợphai chiều Sử dụngcâymức đầu tiênđểxác định vị trí nútcó các tập con chính quicùng chứatất cảcácđiểmcótọa độthứ nhấtnằmtrongphạm vi Nhữngtập con chính quiđượctruy vấn xa hơnbằng cáchthực hiệnphạm vi truy vấntương ứngcác cấu trúc mứcthứ hai Trong mỗicấu trúcmức thứ hai, chọn tập con chính qui Các cấu trúc mức thứ ba lưu trữcáctập con chính quisau đó được yêu cầuvới truy vấncóphạm vichotọa độ thứ ba, và cứ thực hiện như vậycho đến khinhận đượccác câymột chiều Trong nhữngcâynày cần tìmcácđiểmcó tọa độcuối cùngnằmtrongphạm vivàbáo cáo chúng

Định lí2.4Cho làtập hợp điểmtrong không gian chiều, với Range treescho sử dụnglưu trữ vàđượcxây dựngtrong thời gian

Range trees có thểbáo cáocácđiểm của nằmtrongphạm vihình chữ nhậtvới thời gian , với làsốđiểmbáo cáo [5]

Thật vậy, gọi làthời gianxây dựngrange treestrêntậphợp điểmtrong không gian chiều Ta biết Việc xây dựngrange trees chiều bao gồmxây dựngcâynhị phântìm kiếmcân bằngvà xây dựngcấu trúc liên kết Tạicácnútởchiều sâubất kỳcủacâymức thứ nhất,mỗi điểmđượclưu trữtrongcấu

Trang 34

trúcliên kết Thời giancần thiếtđểxây dựngtất cả cáccấu trúcliên kếtcủacácnútvớichiều sâulà – , thời giancần thiếtđểxây dựngcấu trúcliên kếtở gốc Do đó, tổng thời gian xây dựngrange trees chiềuthỏa

thức truy hồi có lời giảivới [5]

Gọi làthời gian chi phí chotruy vấnrange trees chiều trên điểm, khôngkểthời gianbáo cáo các điểm Truy vấnrange trees chiềuliên quan đếnviệc tìm kiếmtrongcâymức thứ nhất, mấtthời gian vàtruy vấncủarange

Công thức truy hồicó lờigiải với , cộngvới thời gian cần thiếtđểbáo cáocác điểm là [5]

2.1.3.3 Cải tiến range trees

Trongphần trướcmô tảcấu trúc dữ liệurange trees cho cáctruy vấnphạm vihình chữ nhậttrong mặt phẳngcóthời giantruy vấnlà , với làsốđiểmđược lưu trữ trongcấu trúcdữ liệuvà làsố điểmbáo cáo.Trongphần nàymô tảkỹ thuậtđược gọi là phân tầng(fractional cascading), giảmthời giantruy

Gọi và làhaitậphợp các đối tượng, trong đó mỗi đối tượngcókhóa (key) là mộtsố thực.Các tập hợpđượclưu trữtheo thứ tựsắp xếptrongcác mảng và Giả sửcần báo cáotất cảcác đối tượng trong và cócác khóanằmtrong phạm vi truy vấn Trước tiênthực hiện tìm kiếmnhị phânvới trong đểtìm khóa nhỏ nhất mà lớn hơnhoặcbằng Từđóduyệtmảng sang phải,báo cáocácđối tượngđã duyệt qua, cho đến khi gặp được khóalớn hơn Cácđối tượngtừ có thểđược báo cáo tương tự Nếutổng các đối tượngđược báo cáolà thìthời giantruy vấnsẽlà cộng vớithời gianchohaitìm kiếmnhị phân, trong và Tuy nhiên, nếucác khóacủacác đối tượng trong làtập concủacác khóacủacác đối tượng trong thì có thểtránhviệc tìm kiếmnhị phânthứ hainhư sau Thêmcác con trỏtừcác mụctrong đếncác mụctrong : nếu lưu trữđối tượng vớikhóa thìlưu trữcon trỏđếnmục trong vớikhóa nhỏ nhấtlớnhơnhoặcbằng Nếu không cókhóanhư thế thìcon trỏtừ lànil [5]

Bằng cách nàocó thểsử dụngcấu trúcnàyđểbáo cáocác đối tượng

Trang 35

trong và cócác khóa nằm trongkhoảngtruy vấn ? Báo cáocác đối tượng

phânvới trong vàduyệt sang phảicho đến khigặp được một khóa lớnhơn

Để báo cáocácđiểmtừ tiến hành nhưsau Tìm trong kết thúctại

nhấttrong lớnhơnhoặcbằng Khicáckhóatừ tập con củacác khóa từ , có nghĩalàcon trỏtừ phảitrỏđếnkhóa nhỏ nhấttừ lớnhơnhoặcbằng Vì vậy có thể theocon trỏ nàyvàtừđóbắt đầuđiđếnbên phảiqua Tương tự,tìm kiếmnhị phân trong làtránh đượcvàbáo cáocácđối tượngtừ chỉ mấtthời gian , với sốcâu trả lờibáo cáo [5]

3 10 19 23 30 37 59 62 70 80 100 105

Hình 2.7 - Tăng tốc độ tìm kiếm bằng cách thêm các con trỏ

Trong hình 2.7, ví dụ thực hiệntruy vấnvớiphạm vi[20: 65].Trước tiênta tìm kiếmnhị phântrong đểtìm23, khóanhỏ nhấtlớnhơnhoặcbằng20 Từ đóduyệtvề phía bên phảicho đến khigặpmộtkhóa lớn hơn65 Các đối tượngđượcduyệt qua cócác khóa nằm trongphạm vi, vì vậychúngđược báo cáo.Sau đó,theocon trỏtừ23đến , nhận đượckhóa , đólà khóa nhỏnhấtlớnhơnhoặcbằng20trong Từ đócũngduyệtđếnbên phảicho đến khigặp mộtkhóa lớnhơn65vàbáo cáocácđối tượngtừ ở trong phạm vi [5]

Trình bày quan trọnglàcác tập con chính qui và cả hai đều làcác tập concủa Gọi làrange treestrêntập hợp Pgồm điểmtrongmặt

phẳng Mỗitập con chính qui được lưu trữ trongcấu trúcliên kết, thay vìsử dụngcâynhị phântìm kiếm như cấu trúcliên kết, ta lưucác điểmvào mảng đượcsắp xếp theotọa độ củacácđiểm Hơnnữa, mỗimục trongmảng lưu trữhaicon trỏ: mộtcon trỏtrỏđến vàmộtcon trỏ trỏ đến Giả sử lưu trữđiểm Sau đó,lưu trữcon trỏtừ đếncác

nhấtlớnhơnhoặcbằng Do đó,nếu cótọa độ nhỏ nhấtlớnhơnhoặcbằngmột sốgiá trị của điểm bất kỳtrong thì cótọa độ nhỏ

Trang 36

nhấtlớnhơnhoặcbằng củabất kỳ điểm nàotrong Con trỏ trỏ vào đượcđịnh nghĩatrongcùng một cách: trỏ đến mục mà tọa độ củađiểmlưu trữcótọa độ nhỏ nhấtlớnhơnhoặcbằng [5]

(2,19) (5,80) (7,10) (8,37) (12,3) (15,99) (17,62) (21,49) (33,30) (41,95) (52,23) (58,59) (67,89) (93,70)

Hình 2.8 - Cây chínhcủarange trees phântầng: các láchỉ hiển thị các tọa

độ vàcácđiểmlưu trữđượccho ở bêndưới

Hình2.9 - Các mảngliên kếtvớicác núttrongcây chính, vớicáctọa độ của các

điểmtrong các điểm củacáctập con chính quitheo thứ tự sắp xếp

Phiên bản sửa đổi này của range trees được gọi là range trees phân tầng (layered range trees) [5] Hình 2.8 và hình 2.9là một ví dụ về range trees phân tầng Trong hình 2.9, các vị trícủa cácmảngđượcvẽtương ứngvớivị

Trang 37

trícủacácnúttrongcâychúng được liên kết: cácmảngtrên cùnglà liên kếtvớigốc, mảngtráibên dướiliên kết vớicáccontráicủagốcvà cứ thực hiện như vậy Không phải tất cả các con trỏ đều được hiển thị trong hình

Bằng cách nào đểtrả lờimộttruy vấnvớiphạm vi trongrange trees phântầng Trước khitìm với và trongcâychính đểxác định các nútcócác tập con chính qui cùng chứacácđiểmcótọa độ trongphạm vi Gọi là nút chia haiđường đitìm kiếm Các nútđang tìm là các nút ở dưới đólàconphải củamột núttrênđường đitìm kiếm với cóđường điđến trái, hoặccontráicủamộtnúttrênđường đitìm kiếmvới cóđường điđến phải Tại tìm nhữngmục trong cótọa độ là tọa độ nhỏ nhấtlớnhơnhoặcbằng Trong khitìm xa hơnvới và trongcáccây chính, rồi tiếp tụctheo dõicácmụctrongcácmảngliên kếtmàtọa độ làtọa độ nhỏ nhấtlớnhơnhoặcbằng Gọi là một trong nútđượcchọn, phảibáo cáocácđiểmlưu trữ trong có tọa độ nằm trongphạm vi Tìm nhữngđiểmcó tọa độ nhỏ nhất lớnhơnhoặcbằng ; từ đóduyệt quamảng, báo cáocác điểmsao chotọa độ nhỏhơnhoặcbằng Do đó, có thểbáo cáocácđiểm cótọa độ y nằm trongphạm vi trongthời gian , với làsố câu trả lờibáo cáocủa nút Tổng thời giantruy vấntrở

Phântầngcũng giúp cải thiệnthời giantruy vấncủarange tree chiềucao hơn bởi yếu tốlogarit Truy vấn phạm vi chiều đượcgiải quyếtbằng cáchchọnnhững điểmcótọa độ thứ trongphạm vichính xác với tập con chính quivàgiải quyếttruy vấn chiềutrêncáctập con Truy vấn chiềuđược giải quyếtbằng đệ quytrongcùng mộtcách [5] Tiếp tụccho đến khiđượctruy vấnhai chiều có thểđượcgiải quyếtnhưmô tảở trên

Định lí2.5Cho làtập hợpgồm điểmtrong không gian chiều, với Range trees phân tầng của sử dụnglưu trữ và có thể đượcxây dựngtrong thời gian Range treescó thểbáo cáocácđiểm của nằmtrong phạm vitruy vấnhình chữ nhậtvớithời gian , với làsố điểm báo cáo

[5]

2.2 Cấu trúc dữ liệu hình học

Trongtương laihầu hết cácxe hơisẽ được trang bịhệ thống định vịphương

Trang 38

tiện giúp xác địnhvị trívàchỉ dẫn đến đích Như mộthệ thống lưu trữ bản đồ đường bộ, cho biếttoàn bộnước Mĩ.Hệ thống không chỉ theo dõi chúng ta đang ở đâu, còn cóthểhiển thịcácthành phầnthích hợptrên bản đồtại bất cứ thời giannàotrênmàn hìnhmáy tính;đó sẽ là mộtvùngquanh hình chữ nhậtở vị tríhiện tại Tuy nhiên, hệ thống vẫn thấy một phần bản đồ đó là vùng hình chữ nhật, hoặc cửa sổ, xác định một phầnbản đồ nằm trongcửa sổ được hiển thị Đây là truy vấn cửa sổ [5]

Hình 2.10 - Truy vấn cửa sổ trong bản đồ của U.S

Truy vấncửa sổlà giống nhưtruy vấnphạm vi nhưng khác nhaulàloạidữ liệuđượcxử lí: dữ liệutrong các truy vấnphạm vi làcác điểm, dữ liệutrong cáctruy vấncửa sổlàđoạnthẳng,đa giác, đường cong.Ngoài ra, đối vớicác truy vấnphạm vithườngxử lívớikhông gian tìm kiếm nhiều chiều, trong khiđó đối vớitruy

vấncửa sổkhông giantìm kiếmthườnglàhaihoặcbachiều

2.2.1 Interval trees

2.2.1.1 Phát biểu bài toán

Giả sử cửa sổ truy vấn là một hình chữ nhật song song với trục tọa độ, tức

là hình chữ nhật có các cạnh song song với trục tọa độ Cho tập hợp gồm đoạn thẳng song song với trục tọa độ và yêu cầu báo cáocác đoạn thẳng cắt cửa

sổ truy vấn Để giải quyết truy vấn cửa sổ ta cần xây dựngmột cấu trúc dữ liệu lưu trữ mà có thể báo cáo các đoạn thẳng cắt một cách hiệu quả

Quan sát hình vẽ ta thấy có bốn trạng tháicủa một đoạn thẳng với cửa sổ : đoạn thẳng có thể nằm hoàn toàn bên trong , đoạn thẳng có thể cắt biên

Trang 39

của một lần, đoạn thẳng có thể cắt biên hai lần hoặc một phần đoạn thẳng

có thể chồng lên biên của Trong hầu hết các trường hợp đoạn thẳng có ít nhất một điểm đầu mút nằm trong Có thể tìm thấy các đoạn thẳng đó bằng cách thực hiện một loạt truy vấn với trong tập hợp điểm đầu mút của các đoạn thẳng trong Nếu ta thực hiện truy vấn phạm vi với trong tập hợp các điểm đầu mút của đoạn thẳng thì báo cáo các đoạn thẳng mà có hai điểm đầu mút nằm trong hai lần Điều này có thể tránh được bằng cách đánh dấu một đoạn thẳng khi báo cáo lần đầu tiên và chỉ báo cáo các đoạn thẳng mà chưa được đánh dấu Ngoài ra, khi tìm thấy một điểm đầu mút của đoạn thẳng nằm trong

có thể kiểm tra xem điểm đầu mút còn lạicó nằm trong không Nếu không có điểm đầu mút nằm trong thì báo cáo đoạn thẳng đó Nếu điểm đầu mút còn lại không nằm trong thì chỉ báo cáo đoạn thẳng khi điểm đầu mút hiện tại là điểm đầu mút ngoài cùng bên trái hoặc phía dưới

Để tìm các đoạn thẳng không có điểm đầu mút nằm trong cửa sổ truy vấn Đoạn thẳng này hoặc là đi qua biên của hai lần hoặc có chứa một cạnh của biên Khi đoạn thẳng là dọc sẽ đi qua cả hai cạnh ngang của biên Khi đoạn thẳng là ngang sẽ đi qua cả hai cạnh dọc của biên Có thể tìm thấy các đoạn thẳng đó bằng cách báo cáo tất cả các đoạn thẳng cắt cạnh trái của biên và tất cả các đoạn thẳng cắt cạnh dưới của biên Để chính xác chỉ nên báo cáo các đoạn thẳng mà không có một điểm đầu mút nằm trong , vì chúng đã được báo trước

đó Xem xét vấn đề tìm các đoạn thẳng ngang cắt bởi cạnh trái của ; để xử lí với cạnh ở trên chỉ có thể thay đổi vai trò của tọa độ và tọa độ

Gọi là đường thẳng truy vấn Một đoạn thẳng ngang

được cắt bởi khi và chỉ khi khi đó ta chỉ quan tâm đến tọa độ , vấn đề sẽ trở thành một chiều: cho tập hợp các khoảng trên đường thẳng thực và yêu câu báo cáo các khoảng chứa điểm truy vấn

2.2.1.2 Thuật toán và cấu trúc dữ liệu

đường thẳng thực Gọi là điểm giữa của điểm đầu mút của các khoảng,

vì vậy một nửa các điểm đầu mút của các khoảng nằm bên trái và một nửa các điểm đầu mút của các khoảng nằm ở bên phải Nếu giá trị truy vấn nằm bên trái của thì các khoảng nằm hoàn toàn bên phải của rõ ràng

là không chứa Các cây con phải của cây lưu trữ trên tập hợp gồm các

Trang 40

khoảng nằm hoàn toàn bên phải và các cây con trái lưu trữ trên tập hợp gồm các khoảng nằm hoàn toàn ở bên trái Các cây con được xây dựng theo cùng một cách, khả năng có thể lưu trữ các khoảng trong cả hai cây con Cuối cùng, khoảng có thể được lưu trữ rất nhiều lần và số lượng lưu trữ có thể là rất lớn Để tránh sự gia tăng các khoảng phải xử lí với các vấn đề khác nhau: lưu tập hợp của các khoảng chứa trong cấu trúc riêng và liên kết có cấu trúc với gốc của cây

Hình 2.11 - Phân loại các đoạn thẳng liên quan đến

Cấu trúc liên kết cho phép đưa ra các khoảng trong chứa Cho tập hợp gồm các khoảng và yêu cầu tìm các khoảng có chứa Giả sử nằm bên trái của , các điểm đầu mút phải của tất cả các khoảng trong nằm bên phải của Vì vậy, được chứa trong khoảng khi và chỉ khi Tương tự, khi nằm bên phải của có thể duyệt danh sách sắp xếp giảm dần theo các điểm đầu mút phải của các khoảng, vì chúng được duyệt nếu điểm truy vấn nằm ở bên phải của Cuối cùng, khi báo cáo tất cả các khoảng trong

Cấu trúc dữ liệu lưu trữ các khoảng trong được gọi là interval trees

 Nếu thì interval trees là lá

 Ngược lại, gọi - điểm giữa các điểm đầu mút trong các khoảng và gọi

Interval trees bao gồm nút gốc được lưu trữ Hơn nữa,

 tập hợp được lưu trữ hai lần; trong danh sách được sắp xếp theo các điểm đầu mút trái và trong danh sách được sắp xếp

Ngày đăng: 25/03/2015, 09:52

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. I. Ahmed and M. A. Islam, “Algorithms in Computational Geometry”, Department of Computer Science and Engineering(BUET), Dhaka Sách, tạp chí
Tiêu đề: Algorithms in Computational Geometry”
2. J. L. Bentley (1975), “Multidimensional binary search trees used for associative searching”, Commun. ACM, 18, pp. 509-517 Sách, tạp chí
Tiêu đề: Multidimensional binary search trees used for associative searching”, "Commun. ACM
Tác giả: J. L. Bentley
Năm: 1975
3. J. L. Bentley (1977), “Solutions to Klee’s rectangle problems”, Technical report, Carnegie-Mellon Univ., Pittsburgh, PA Sách, tạp chí
Tiêu đề: Solutions to Klee’s rectangle problems”
Tác giả: J. L. Bentley
Năm: 1977
4. J. L. Bentley (1979), “Decomposable searching problems”, Inform. Process. Lett., 8, pp. 244-251 Sách, tạp chí
Tiêu đề: Decomposable searching problems”, "Inform. "Process. Lett
Tác giả: J. L. Bentley
Năm: 1979
5. M. de Berg, O. Cheong, M. van Kreveld, M. Overmars (2000), Computational Geometry: algorithms and applications, Springer Sách, tạp chí
Tiêu đề: Computational Geometry: algorithms and applications
Tác giả: M. de Berg, O. Cheong, M. van Kreveld, M. Overmars
Năm: 2000
6. B. Chazelle (1986), “Filtering search: A new approach to query- answering”, SIAM J.Comput., 15, pp. 703-724 Sách, tạp chí
Tiêu đề: Filtering search: A new approach to query-answering"”, SIAM J.Comput
Tác giả: B. Chazelle
Năm: 1986
7. B. Chazelle (1989), “Lower bounds on the complexity of polytope range searching”, J. Amer. Math. Soc., 2, pp. 637-666 Sách, tạp chí
Tiêu đề: Lower bounds on the complexity of polytope range searching”, "J. Amer. Math. Soc
Tác giả: B. Chazelle
Năm: 1989
8. B. Chazelle (1993), “Cutting hyperplanes for divide-and-conquer”, Discrete Comput. Geom., 9, pp. 145-158 Sách, tạp chí
Tiêu đề: Cutting hyperplanes for divide-and-conquer”, "Discrete Comput. Geom
Tác giả: B. Chazelle
Năm: 1993
9. B. Chazelle, H. Edelsbrunner, L. Guibas, and M. Sharir (1994), “Algorithms for bichromatic line segment problems and polyhedral terrains”, Algorithmica, 11, pp. 116-132 Sách, tạp chí
Tiêu đề: Algorithms for bichromatic line segment problems and polyhedral terrains”, "Algorithmica
Tác giả: B. Chazelle, H. Edelsbrunner, L. Guibas, and M. Sharir
Năm: 1994
10. B. Chazelle, M. Sharir, and E. Welzl (1992), “Quasi-optimal upper bounds for simplex range searching and new zone theorems”, Algorithmica, 8, pp.407-429 Sách, tạp chí
Tiêu đề: Quasi-optimal upper bounds for simplex range searching and new zone theorems”, "Algorithmica
Tác giả: B. Chazelle, M. Sharir, and E. Welzl
Năm: 1992
11. B. Chazelle and E. Welzl (1989), “Quasi-optimal range searching in spaces of finite VC-dimension”, Discrete Comput. Geom., 4, pp. 467-489 Sách, tạp chí
Tiêu đề: Quasi-optimal range searching in spaces of finite VC-dimension”, "Discrete Comput. Geom
Tác giả: B. Chazelle and E. Welzl
Năm: 1989
12. J. Chen (1996), Computational Geometry: Methods and applications, Computer Science Department, Texas A&M University Sách, tạp chí
Tiêu đề: Computational Geometry: Methods and applications
Tác giả: J. Chen
Năm: 1996
13. T. H. Cormen, C. E. Leiserson, R. L. Rivest and C. Stein (2001), Introduction to Algorithms, Second Edition, MIT Press, Cambridge Sách, tạp chí
Tiêu đề: Introduction to Algorithms
Tác giả: T. H. Cormen, C. E. Leiserson, R. L. Rivest and C. Stein
Năm: 2001
14. H. Edelsbrunner (1980), “Dynamic data structures for orthogonal intersection queries”, Report F59, Inst. Informationsverarb., Tech. Univ.Graz, Graz, Austria Sách, tạp chí
Tiêu đề: Dynamic data structures for orthogonal intersection queries”, "Report F59, Inst. Informationsverarb., Tech. Univ
Tác giả: H. Edelsbrunner
Năm: 1980
15. H. Edelsbrunner and H. A. Maurer (1981), “On the intersection of orthogonal objects”, Inform. Process. Lett., 13, pp. 177-181 Sách, tạp chí
Tiêu đề: On the intersection of orthogonal objects”, "Inform. Process. Lett
Tác giả: H. Edelsbrunner and H. A. Maurer
Năm: 1981
16. H. Edelsbrunner and E. Welzl (1986), “Halfplanar range search in linear space and query time”, Inform. Process. Lett., 23, pp. 289-293 Sách, tạp chí
Tiêu đề: Halfplanar range search in linear space and query time”, "Inform. Process. Lett
Tác giả: H. Edelsbrunner and E. Welzl
Năm: 1986
17. R. L. Graham (1972), “An efficient algorithm for determining the convex hull of a finite planar set”, Inform. Process. Lett., 1, pp.132-133 Sách, tạp chí
Tiêu đề: An efficient algorithm for determining the convex hull of a finite planar set”, "Inform. Process. Lett
Tác giả: R. L. Graham
Năm: 1972
18. D. Haussler and E. Welzl (1987), “Epsilon-nets and simplex range queries”, Discrete Comput. Geom., 2, pp. 127-151 Sách, tạp chí
Tiêu đề: Epsilon-nets and simplex range queries”, "Discrete Comput. Geom
Tác giả: D. Haussler and E. Welzl
Năm: 1987
19. R. A. Jarvis (1973), “On the identification of the convex hull of a finite set of points in the plane”, Inform. Process. Lett., 2, pp. 18-21 Sách, tạp chí
Tiêu đề: On the identification of the convex hull of a finite set of points in the plane”, "Inform. Process. Lett
Tác giả: R. A. Jarvis
Năm: 1973
20. D. T. Lee and C. K. Wong (1980), “Quintary trees: A file structure for multidimensional database systems”, ACM Trans. Database Syst., 5, pp.339-353 Sách, tạp chí
Tiêu đề: Quintary trees: A file structure for multidimensional database systems”, "ACM Trans. Database Syst
Tác giả: D. T. Lee and C. K. Wong
Năm: 1980

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w