ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN THỊ HOA
MỘT SỐ KIỂU DỮ LIỆU TRỪU TƯỢNG
ỨNG DỤNG TRONG HÌNH HỌC TÍNH TỐN
LUẬN VĂN THẠC SĨ
Hà Nội – 2011
LUAN VAN CHAT LUONG download : add
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN THỊ HOA
MỘT SỐ KIỂU DỮ LIỆU TRỪU TƯỢNG
ỨNG DỤNG TRONG HÌNH HỌC TÍNH TỐN
Ngành
: Cơng nghệ Thơng tin
Chun ngành : Hệ thống Thông tin
Mã số
: 60 48 05
LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. LÊ MINH HOÀNG
Hà Nội – 2011
LUAN VAN CHAT LUONG download : add
1
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 TỐN............................. 6
1.1 Các bài tốn của hình học tính tốn .................................................... 6
1.2 Các đối tượng hình học ........................................................................ 8
1.3 Một số bài tố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 tố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 TỐ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
LUAN VAN CHAT LUONG download : add
2
DANH SÁCH THUẬT NGỮ VÀ GIẢI THÍCH
Số
1
Thuật ngữ
Canonical subset
Giải thích
Tập con chính qui
chiều
2
-Dimensional Kd-trees
Kd-trees
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
6
Partition trees
Cây phân vùng
7
Priority search trees
Cây tìm kiếm ưu tiên
8
Range queries
Truy vấn phạm vi
9
Range trees
Cây phạm vi
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ổ
LUAN VAN CHAT LUONG download : add
3
DANH SÁCH HÌNH VẼ
Số
Tên hình
Trang
Hình 1.1
Thứ tự giữacácđoạnthẳng với đườngthẳngqtdọc
Hình 1.2
Tập hợp
gồm các điểm và bao lồi
12
Hình 1.3
Thuật tố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.4
Các nútcủa kd-trees vàvùngmặt phẳng
24
Hình 2.5
Truy vấn trên kd-trees hai chiều
25
Hình 2.6
Range trees hai chiều
27
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.8
Cây chínhcủarange trees phântầng
34
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.12
Interval trees
39
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.16
Truy vấn của cây tìm kiếm ưu tiên
43
Hình 2.17
Đoạn thẳng lưu tại v thay vì lưu trữ tại
Hình 2.18
Segment trees: mũi têntừcácnúttrỏtới tập con chính qui
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ó
48
Hình 2.20
Mật độ dân số của Hà Lan
51
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.22
Một phân vùng đơn hình tốt
54
Hình 2.23
Phân vùng mặt phẳng đơn hình và cây tương ứng
54
Hình 2.19
9
và
47
49
LUAN VAN CHAT LUONG download : add
4
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 2.28
Tìm kiếm phạm vi tam giác
63
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
LUAN VAN CHAT LUONG download : add
5
MỞ ĐẦU
Hình học tính tốn xuất hiện từ lĩnh vực phân tích và thiết kế thuật tố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 tốn là một chuyên ngành khoa học máy tính nghiên cứu các thuật
tốn giải quyết các bài tốn hình học. Hình học tính tố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 tốn hình học đóng
vai trị cơ bản. Vấn đề hình học tính tố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 tốn hình học với quy mơ lớn hơn. Lời giải tốt cho các bài tốn
thuật tố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 tố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 tố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 tố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 tốn như các đối tượng
của hình học, một số bài tốn hình học và thuật tốn.
Chương 2 – Mơ tả kiểu dữ liệu trừu tượng trong hình học tính tố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.
LUAN VAN CHAT LUONG download : add
6
Chương 1 - TỔNG QUAN VỀ HÌNH HỌC TÍNH TỐN
1.1 Các bài tốn của hình học tính tốn
Hình họctính tốnlà mộtchun ngành củakhoa họcmáy tínhnghiên
cứucácthuật tốncó nội dung hình học. Một sốbài tốnhình họcphát sinh hồn
tồntừviệc nghiên cứu cácthuật tốnhình học tính tốnvà cácbài tốnnàycũng
đượcxemlà một phần củahình học tính tốn. Hình học tính tốn nghiên cứusự
phức tạpcủa cácbài tố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 tốncho cácbài tố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 tố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 tốntrong hình học tính tốn thành các lớp bài toán như dưới đây[1].
1.1.1 Bài toán tĩnh
Trong cácbài toántĩnhcho trướcđầu vàovàđầu ratương ứngcần phải
đượcxây dựng hoặcđược tìm thấy.Một sốbài toáncơ bảncủa loại nàylà:
Convex Hull: Cho tập hợp các điểm và yêu cầu tìm đa giác lồi nhỏ nhất
chứa tất cả các điểm đó.
Line segment intersection: Cho tập hợp các đoạn thẳng và yêu cầu tìm
điểm cắt nhau giữa các đoạn thẳng trongtập hợp cho trước.
Polygon cutting: Chia đa giác thành các dạng hình học khác với tổng
chiều dài được chia là nhỏ nhất.
Delaunay triangulation.
Voronoi diagram: Cho tập hợp các điểm và u cầu tìm phân vùng khơng
gian theo các điểm đóng.
Linear programming.
Closest pair of points: Cho tập hợp các điểm và u cầutìm cặp điểm có
khoảng cách nhỏ nhất.
Euclidean shortest path: Nối hai điểm trong không gian Euclide bởi một
đường đi ngắn nhất.
Polygon triangulation: Cho trước một đa giác và yêu cầuphân chia phần
trong của đa giác thành các tam giác.
Độ phức tạptính tốncholớp cácbài tốnnày làước tính về thời gian
LUAN VAN CHAT LUONG download : add
7
vàkhông gian cần thiết để giải quyếtmột trường hợp bài tốnnhất định.
1.1.2Bài tốn động
Thêm một lớpchínhlà các bài tốnđộng,vớimục tiêu là đểtìmthuật
tố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 tốnhình họctính tốncó thể đượcchuyển đổi thành
mộtbài tốn động.Bài tốntìm kiếmphạm vicó thểđược chuyển đổi thànhbài
tốntìm kiếmphạm vi động,bằng cách cung cấpbổ sunghoặcxóacác điểm.Cácbài
tố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 tốn truy vấn hình học
Bài tốn truy vấn hình họcthường gọi làbài tố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 tố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
tố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 tốn cho bài tố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 tố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 tố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
LUAN VAN CHAT LUONG download : add
8
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 Các đối tượng hình học
Máy tính ngày càng được sử dụng nhiều hơn để giải quyết các bài tốn có
quy mơ lớn về hình học. Các đối tượng hình học cơ bản như điểm, đoạn thẳng
và đa giác là nguồn gốc của tập đáng kể các bài toán và thuật toán.
1.2.1 Điểm
Trong không gian hai chiều, đối tượng cơ sở là điểm được biểu diễn bởi
một cặp số nguyên – tọa độ của điểm đó trong hệ trục tọa độ Descart. Một điểm
trong mặt phẳng có tọa độ và tọa độ , kí hiệu
[13].
1.2.2 Đoạn thẳng
Một tổ hợp lồi của hai điểm phân biệt
một điểm bất kỳ
sao cho
Đoạn thẳng
và
.
là tập hợp mọi tổ hợp lồi của
các điểm đầu mút của đoạn thẳng
đoạn thẳng
là
. Hay viết dưới dạng khác
với
và
và
được định hướng từ
đến
và
, kí hiệu
, với
. Đoạn thẳng có hướng
, kí hiệu
là
[13].
1.2.3 Vectơ
Vectơ là một đoạn thẳng có hướng. Vectơ có điểm đầu
được kí hiệu
và điểm cuối ,
. Khi không cần chỉ rõ điểm đầu, điểm cuối ta kí hiệu
Tọa độ của vectơ là
=
với
;
[13].
.
1.3 Một số bài tốn hình học và thuật tố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
LUAN VAN CHAT LUONG download : add
9
dọc và khơng có ba đoạn thẳng nào giao nhau tại một điểm.
1.3.1.2 Thuật tốn
Một thứ tự hồn tồn (total order) trên các đoạn thẳng cắt nhau bởi đường
thẳng quét dọc được định nghĩa như sau[13].
- Hai đoạn thẳng
là có thể so sánh được tại
- Nếu
và
là có thể so sánh tại
ở cao hơn với giao điểm của
quét tại
ở trên
tại , kí hiệu
và giao điểm của
.
e
g
b
i
c
h
t
với đường thẳng
với cùng đường thẳng qt đó thì ta nói
d
a
r
nếu đường thẳng qt
cắt cả hai đoạn thẳng đó.
dọc tại ví trí
rằng
và
f
u
z
v
w
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ệ
,
; Đoạn thẳng
và
khác, hình 1.1a. Khi đoạn thẳng
và
,
không so sánh được với các đoạn thẳng
giao nhau,
đường thẳng quét đi qua vùng bóng mờ đều có
quan hệ thứ tự
,
và
nhưng
; mọi
nằm liên tiếp nhau trong
, 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.
LUAN VAN CHAT LUONG download : add
10
Các thao tác của trình trạng đường thẳng quét
- INSERT(
): chèn đoạn thẳng
vào .
- DELETE(
): xóa đoạn thẳng
khỏi .
để duy trì truy vấn.
- 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
phải nếu có nhiều điểm có cùng tọa độ
từ trái sang
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].
Algorithm ANY-SEGMENTS-INTERSECT
Input. Tập hợp gồm đoạn thẳng.
Output. Cặp các đoạn thẳng trong
cắt nhau thì giá trị True, ngược lại là False.
1.
2. 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, phân
giải trùng hợp bằng cách đặt các điểm đầu mút trái trước các điểm đầu mút
phải và kế đến phân giải trùng hợp bằng cách đặt các điểm đầu mút có tọa
độ nhỏ hơn được sắp xếp trước.
3. for mỗi điểm
4.
trong danh sách được sắp xếp của các điểm đầu mút do
if là điểm đầu mút trái của đoạn thẳng then
5.
INSERT
6.
if (ABOVE
(BELOW
7.
tồn tại và cắt ) hoặc
tồn tại và cắt s) then
return TRUE
LUAN VAN CHAT LUONG download : add
11
if là điểm đầu mút phải của đoạn thẳng then
8.
9.
if (ABOVE
và (ABOVE
10.
11.
và BELOW
cắt BELOW
đều tồn tại)
) then
return TRUE
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-SEGMENTSINTERSECT thực hiện trong thời gian
[13].
Thật vậy, dòng1thực hiện mấtthời gian là
gian là
. Dòng2thực hiện mất thời
, bằng cách sử dụngsắp xếp trộn (merge sort) hoặcheapsort.
điểm biến cố, vịng lặp forcủadịng3-11thực hiện nhiều nhất là
Khicó
.
, vìmỗihoạt động cây đỏđen mấtthời
Mỗilần lặpmất thời gian
vàbằng cách sử dụngcácphương phápkiểm tra mỗigiao điểmcần
gian
thời gian
. Vì vậy, thời gianthực hiện thuật tốn là
.
1.3.2 Bài tố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].
q
p
lồi
Bao lồi của tập hợp
p
không lồi
bất kỳ là giao của tất cả các tập lồi chứa
bằng trực quan hơn, tập lồi nhỏ nhất chứa , kí hiệu
, hay
[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 .
LUAN VAN CHAT LUONG download : add
12
p10
p10
p11 p9
p11 p9
p7 p6 p5 p4
p8
p2
p12
p3
p12
p8
p7 p6 p5
p4
p3
p2
p1
p1
p0
p0
gồm các điểm và bao lồi
Hình 1.2 -Tập hợp
1.3.2.2 Thuật tốn
Thuật tốn qt Graham và thuật tốn bước Jarvis tìm bao lồi của tập hợp
gồm điểm trong mặt phẳng. Cả hai thuật toán quét Graham và bước Jarvis đều
sử dụng kỹ thuật “quét quay trịn”, các đỉnh được xử lí theo thứ tự của các góc
giữa tạo với một đỉnh tham chiếu.
Thuật tốn qt GRAHAM [13, 17]
Thuật tốn qt Grahamgiải quyết bài tố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
đẩylênđầu ngăn xếpvàcác điểmkhơng phải làđỉnhcủa
ngăn
xếpsau
xáccácđỉnhcủa
cùng.
Khithuật
tốnkết
thúc,
được
được loại bỏ khỏi
ngăn
xếp chứachính
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
2.
trái trong trường hợp đồng hạng.
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ừ
).
LUAN VAN CHAT LUONG download : add
13
3.
PUSH
4.
PUSH
5.
PUSH
6.
for
7.
to
do
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.
9.
10.
POP
PUSH
return
Thuật toán bước Jarvis [12, 13, 19]
Thuật toán bước Jarvis tính tố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 độ
2.
Chọn
là một điểm trong tập hợp
mà góc giữa đoạn thẳng
nhỏ nhất.
với trục
hồnhlà nhỏ nhất.
3.
Return
4.
5.
6.
while
Chọn
do
là điểm trong tập hợp
mà góc giữa
là lớn nhất.
7.
8.
Return
1.3.2.3 Phân tích độ phức tạp
Định lí 1.2 Cho tập hợp
thuật tốn qtGrahamlà
gồm
điểm trong mặt phẳng. Thời gianthực hiện
, 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à
LUAN VAN CHAT LUONG download : add
14
, 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
độc lập vớimất thời gian cho vịng lặpwhile của dịng7-8vàvì thếtồn
gian
bộ vịnglặp for mấtthời gian
chỉ có mộtvịng lặp while lồng nhau.
mỗiđiểm được đẩyvàongăn xếp đúng một lần, cónhiều
Với
nhất một tốn tử POPứng vớimỗitố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à
gianđược thực hiện bởivịng lặpwhile là
tốn là
Định lí 1.3 Cho
vàkhi
tổng thời
. Như vậy, thời gianthực hiệnthuật
.
là tập hợp gồm
thuật toán bước Jarvis là
Thật vậy, với
điểm trong mặt phẳng. Thời gian thực hiện
, trong đó
đỉnh của
[13].
, 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à
trịtrong thời gian
là số đỉnh của bao lồi
. Ta có thểtính tốnít nhất giá
.Như
nếumỗi lần so sánhchi phí thời gian là
vậy,thuật tốn bướcJarvisđược thực hiện với chi phí thời gianlà
.
1.3.3 Bài tốn tìm cặp điểm gần nhất
Bài tố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 tốn hình học khoảng cáchEuclide:khoảng cáchgiữa các điểm
và
.Mộtthuật tốnđơn giản tìm cặpđiểm gần nhấtlàxem
là
xéttất cả
cặpđiểm với chi phí về thời gian là
nàysẽmơ tảthuật tốn chia để trị với chi phí vềthời gian là
.Trongphần
.
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
LUAN VAN CHAT LUONG download : add
15
Mỗilời gọiđệ quycủa thuật tố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
tọa độ
trong
(
với điểm giữa của
và
bởi đường thẳng dọc tất cả
,
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
mảng
và
trênhoặc
tự,mảng
cácđiểmcủa và
của .Mảng được
phải
,chứacác điểm của và
Tương
.
bên
được
chia
thànhcác
tương ứng,sắp xếp tăng dần theo tọa độ
chia
thànhcác
mảng và
,
chứa
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
.Cácđầu vào củalời gọi đầu tiênlà tập con ,
khác tìmcặpđiểmgần nhấttrong
và ; lời gọi thứ hainhận các đầu vào
mảng
cáchcặp
điểm gần nhấttrả
lạicủa và
,
và
tương ứng
. Gọicác khoả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
dọc rộng
, đó là mảng
được loại bỏ. Mảng
- Với mỗi điểm trong mảng
vị
của . Chỉ có 7 điểm trong
khoảng cách từ
được sắp xếp theo tọa độ , cũng như .
, tìm các điểm trong
sau
được nằm trong đơn
cần được xem xét. Thuật tốn tính
đế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
- Nếu
với tất cả các điểm không nằm trong dải
đã tìm trên các cặp điểm trong mảng .
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ề.
LUAN VAN CHAT LUONG download : add
16
PR
PL
pL
PR
PL
các điểm trùng
nhau, một trong
PL, một trong PR
pR
các điểm trùng
nhau, một trong
PL, một trong PR
Hình1.3 - Thuật tố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
2. Tìm
và
; chia
= CLOSEST_PAIR(
3.
4.
thành
) và
thành
và
.
= CLOSEST_PAIR(
).
.
Tính khoảng cách giữa các điểm mà một điểm nằm trong
điểm nằm trong
4.1 Mảng
trong
cặp điểm gần nhất
4.3 Nếu
)và một
thực hiện như sau:
- các điểm của
4.2 Với mỗi điểm
(
nằm trong dải dọc
, chỉ có
điểm trong
, sắp xếp theo tọa độ .
được so sánh, khoảng cách
.
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ề.
5.
Return
1.3.3.3 Phân tích độ phức tạp
Định lí 1.4Cho tập hợp gồm điểm trong mặt phẳng. Thời gian thực hiện thuật
toán tìm cặp điểm gần nhất là
Thời gianthực hiện là
bảo đảmcác mảng
và
[13].
. Khó khănchính ở việc
được truyền chocác lời gọiđệ quyđược sắp xếp
theocáctọa độthích hợp vàcũnglàmảng được sắp xếp theo tọa độ .
LUAN VAN CHAT LUONG download : add
17
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
được sắp xếp theo tọa độ
và
. 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
, thêmđiểm này vàocuốimảng ;ngược lại,
[13].
1.
2. for
3.
to
if
do
then
4.
5.
6.
else
7.
Bằng cách nàocó được cácđiểmsắp xếpở vị trí đầu tiên, mộtcách đơn giản
làsắp xếp trước chúng.Vì vậy, nếugọi
là thời gianthực hiệncủa mỗi bướcđệ
làthời gianthực hiện của tồn bộ thuật tốn thì nhận được
quyvà
và
Do đó
và
[13].
1.4 Kết luận
Trong chương này giới thiệu về các vấn đề của hình học tính tốn, các đối
tượng cơ bản của hình học và các thuật tốn kinh điển của hình học tính tốn
trong khơng gian hai chiều. Thuật tốn xác định cặp đoạn thẳng bất kỳ cắt nhau
được đưa ra bởi Shamos và Hoey [28] với độ phức tạp về thời gian là
.
Thuật tốn tìm bao lồi của tập hợp các điểm trong mặt phẳng sử dụng phương
pháp quét là thuật tốn qt Graham [17] với chi phí thời gian là
và
thuật tốn bước Jarvis [19] với chi phí thời gian là
. Có nhiều phương
pháp để giải quyết bài tốn tìm cặp điểm gần nhất với độ phức tạp khác nhau, sử
dụng thuật tốn chia để trị tìm cặp điểm gần nhất thì thời gian thực hiện là
được đưa ra bởi Shamos và xuất hiện trong Preparata và Shamos
[27].
LUAN VAN CHAT LUONG download : add
18
Chương 2 - KIỂU DỮ LIỆU TRỪU TƯỢNG TRONG
HÌNH HỌC TÍNH TỐN
2.1 Tìm kiếm phạm vi trực giao
Ngay từ đầu có vẻ nhưcơ sở dữ liệ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
độ.
Lương
Nguyễn Thị Lan, 35 tuổi,
lương 5000000
6000000
4000000
30
50
Tuổi
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à 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
LUAN VAN CHAT LUONG download : add
19
đượ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ấnu 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 tốn [5].
6000000
4000000
4
2
30
50
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
[26]. Các lá của lưu
một chiều hiệu quả là cây nhị phân tìm kiếm cân bằng
trữ các điểm của
và các nút trong của
kiếm, nút lưu trữ giá trị chia
nhỏ hơn hoặc bằng
Gọi
và
. Giả sử cây con trái nút
chứa tất cả các điểm
và cây con phải chứa tất cả các điểm lớn hơn
.
là hai lá nơi mà tìm kiếm kết thúc tương ứng với
Trước tiên tìm theo
và trong
. Các điểm trong phạm vi
điểm được lưu trữ tại các lá ở giữa
lưu trữ tại
lưu trữ các giá trị chia hỗ trợ việc tìm
và lưu trữ tại
và
bao gồm
. Để tìm các lá giữa
và
và
và
.
là những
, có thể chứa điểm
, trước tiên cần phải tìm
LUAN VAN CHAT LUONG download : add
20
chia các đường đi tìm kiếm với
các nút
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.
49
23
80
10
37
3
3
30
19
10
19
23
30
62
49
37
89
59
62
70
100
89
70
59
80
100
105
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
FINDSPLITNODE(
)
Input. Cây T và hai giá trị và
Output. Nút
với
.
nơi chia các đường đi đến điểm và
, hoặc lá nơi mà cả hai
đường đi kết thúc.
1.
2.
3.
while
khơng là lá và(
if
hoặc
) do
then
4.
5.
else
6.
return
Bắt đầutừ
theo đường đitìm kiếmvới , tại mỗinútvới đường đi bên
trái vàbáo cáotất cảcáclátrongcây conphải. Tương tự, theođường đi tìm kiếm
với vàbáo
cáocác
látrongcây contráicủacác
nút.
Cuối cùng,phảikiểm
tracácđiểmlưu trữtạicáclánơicác đường đi kết thúc, các điểm này có thể nằm
trong hoặckhôngnằmtrong khoảng
.
LUAN VAN CHAT LUONG download : add
21
root(T)
các cây con được chọn
Thuật tố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].
Algorithm 1DRANGEQUERY(
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.
← FINDSPLITNODE(
1.
)
2.
if
là một lá then
3.
Kiểm tra nếu điểm lưu trữ tại
4.
else (∗ Theo đường đi đến và báo cáo các điểm trong cây con phải của
thì phải được báo cáo.
đường đi.∗)
5.
6.whileν không là lá do
7.
8.
if
then
REPORTSUBTREE(
)
9.
10.
else
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.
LUAN VAN CHAT LUONG download : add
22
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
, như vậycác điểmtrong phạm vi truy vấncó thểbáo
gian xây dựng
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
Trongtrường hợpxấu nhấttất cảcác điểmcó thểnằm
trongthời gian
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í
.Các nútcịn lạiđượcthămlà các núttrênđường đitìm
trongtất cảcác lời gọilà
kiếmcủa hoặc . Vì làcân bằng, các đường đicóchiều dài
phí trongmỗi nút là
.Thời gianchi
, tổng thời gianchi phícho các nút là
vậy thời giantruy vấnlà
[5].Như
.
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 tố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
.Mộtđiểm
và
cùngtọa độ
vàtọa độ
nằmtrong hình chữ nhậtkhi và chỉ khi
[5].
y
y’
p
py
y
x
x
px x’
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 độ .
LUAN VAN CHAT LUONG download : add
23
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
gồm các điểm ở bên phải đường thẳng chia, được lưu
contrái và tập hợp
trữ trong cây con phải. Cứ thực hiện q 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 tố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
dọchoặcđường thẳng ngang. Thủ tụctrả vềgốc của kd-trees.
Algorithm BUILDKDTREE(
Input. Tập hợp các điểm
bởi đườngthẳng
)
và chiều sâu hiện tại
.
Output. Gốc của kd-trees được lưu trữ .
1.
2.
3.
4.
if chỉ chứa một điểm then
return lá lưu trữ điểm này
else if
là chẵn then
Chia
tọa độ
hoặc nằm trên
thành hai tập con bởi đường thẳng dọc
của các điểm trong
và
Gọi
đi qua điểm giữa
là tập hợp các điểm bên trái
là tập hợp các điểm bên phải .
LUAN VAN CHAT LUONG download : add