(Luận văn thạc sĩ) một số kiểu dữ liệu trừu tượng ứng dụng trong hình học tính toán - Pdf 70

ĐẠ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


ĐẠ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Ĩ


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


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


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


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


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


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



47

49


4
Số

Tên hình


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


5

MỞ ĐẦU

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


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ó

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


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

, với

. Đoạn thẳng có hướng
, kí hiệu



[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


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




,

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ự

,



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


- 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


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

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
của hoặc nằm trong phần trong của .

hoặc nằm trên biên


12
p10

p10


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,


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ừ

).


13
3.

PUSH

4.

PUSH

5.

PUSH

6.

for

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.


Thật vậy, dịng1chi phíthời gian

. Dịng2chi phíthời gian là


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


. 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


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


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



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





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



,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à

,



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ề.


16
PR

PL

pL

= CLOSEST_PAIR(

3.
4.

thành

) và

thành



.

= 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


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



[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 độ .


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 độ



. 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


quyvà


Do đó



[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à

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].


18



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


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


.

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



bao gồm

. Để tìm các lá giữa








10

37

3

3

30

19
10

19

23

30

62
49

37

89

59

62



, 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ừ


)

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.




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í

vàtọa độ

. Giả sửrằngkhơng cóhaiđiểmtrong

.Mộtđiểm


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

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



Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status