MỞ ĐẦU Bài toán xây dựng tam giác phân Delaunay là một trong các bài toán cơ bản trong hình học tính toán và nó được sử dụng trong rất nhiều lĩnh vực như thông tin địa GIS, phần tử hữu
Trang 1Trêng §¹i häc Vinh
Trang 2Vinh - 2011
Trang 3Trang
M Ở ĐẦ 4U
TAM GIÁC PHÂN DELAUNAY 6
1.1 nh ngh a v các tính ch t c a tam giác phân DelaunayĐị ĩ à ấ ủ 6
1.2 Phép tam giác phân Delaunay 10
1.3 Độ ph c t p c a thu t toánứ ạ ủ ậ 15
CHƯƠNG II THU T TOÁN TÌM TAM GIÁC PHÂN DELAUNAYẬ 18
2.1 Thu t toán s d ng bao l i dậ ử ụ ồ ưới trong R3 để tìm tam giác phân Delaunay 18
2.3 So sánh thu t toán s d ng bao l i dậ ử ụ ồ ưới trong R3 để tìm tam giác phân Delaunay v thu t toán t ng dân ng u nhiên tìm tam giác phân Delaunayà ậ ă ẫ 40
K T LU NẾ Ậ 42
TÀI LI U THAM KH OỆ Ả 43
Trang 4MỞ ĐẦU
Bài toán xây dựng tam giác phân Delaunay là một trong các bài toán
cơ bản trong hình học tính toán và nó được sử dụng trong rất nhiều lĩnh vực như thông tin địa (GIS), phần tử hữu hạn, đồ họa máy tính và đa phương tiện
… Năm 1934 nhà toán học người Nga B.Delaunay (1890-1980) đã đưa ra bài toán xây dựng tam giác phân Delaunay (xem [3]) Vì những ứng dụng to lớn của tam giác phân Delaunay trong các lĩnh vực nói trên nên nhiều nhà toán học đã nghiên cứu đưa ra thuật toán xây dưng tam giác phân Delaunay Điển hình là các công trình của Dwyer với thuật toán chia để trị, thuật toán quét (Sweep line) của Fortunne (1987) thuật toán tăng dần (Incremental) của Preparata và Shamos (1985)…(xem [4]) Với các thuật toán nói trên, trên cơ bản đã xây dựng được tam giác phân Delaunay từ tập các điểm đã cho, nhưng
độ phức tạp thời gian của chúng khá lớn Do vậy, một số nhà toán học đã tìm thuật toán tăng dần ngẫu nhiên nhằm mang lại hiểu quả cao hơn đáp ứng với yêu cầu của cuộc sống hiện đại như xử lí các vấn đề ở tốc độ cao và số lượng lớn Cũng xuất phát từ yêu cầu đó trong luận văn này tác giả trình bày lại thuật toán tăng dần ngẫu nhiên tìm tam giác phân Delaunay (xem [3]) va có đưa thêm thuật toán sử dụng bao lồi dưới trong R3 tìm tam giác phân Delaunay (xem [3]) để so sánh với thuật toán trên
Luận văn gồm hai chương
Chương I Tam giác phân Delaunay
1.1 Định nghĩa và các tính chất của tam giác phân Delaunay
1.2 Phép tam giác phân Delaunay
1.3 Độ phức tạp của thuật toán
Chương II Thuật toán tìm tam giác phân Delaunay
Trang 52.2 Thuật toán tăng dần ngẫu nhiên tìm tam giác phân Delaunay
phân Delaunay và thuật toán tăng dân ngẫu nhiên tìm tam giác phân Delaunay
Luận văn được hoàn thành vào tháng 10 năm 2011 tại khoa đào tạo sau đại học và khoa toán trường Đại học Vinh dưới sự hướng dẫn của PGS.TS Phan Thành An Tác giả xin bày tỏ lòng biết ơn sâu sắc đến thầy, người đã tận tình chỉ dẫn, giảng dạy chúng tôi trong suốt quá trình học tập và nghiên cứu
Tác giả xin chân thành cảm ơn PGS.TS Nguyễn Hữu Quang, PGS.TS Phạm Ngọc Bội, TS Nguyễn Duy Bình đã giảng dạy, chỉ bảo những vấn đề có liên quan đến đề tài nghiên cứu
Tác giả xin chân thành cảm ơn các GS, PGS, TS… khoa sau đại học
và khoa toán Đại học Vinh, Viện Toán Học, những người đã tham gia quản
lý, giảng dạy giúp đỡ và hướng dẫn tác giả trong suốt quá trình học tập và nghiên cứu
Tác giả cũng gửi lời cảm ơn tới tập thể K17 Hình Học - Tôpô, gia đình, bạn bè, đồng nghiệp đã giúp đỡ và động viên tác giả trong quá trình hoàn thành luận văn
Trang 6CHƯƠNG I TAM GIÁC PHÂN DELAUNAY
1.1 Định nghĩa và các tính chất của tam giác phân Delaunay
1.1.1 Định nghĩa (xem [3]) Trong mặt phẳng Oxy cho tập P gồm n điểm
pipjpk∈P sao cho hai tam giác bất kì trong P không có chung điểm trong chỉ có chung cạnh hoặc chung đỉnh
Ví dụ: trong mặt phẳng Oxy cho bốn điểm p1, p2, p3, p4 là một tứ giác khi đó
có hai cách cho tam giác phân là
{p1p2p3; p1p3p4} {p1p2p4; p2p3p4}
1.1.2 Định nghĩa (xem [3]) Trong mặt phẳng Oxy cho tập P gồm n điểm
P = {p1, p2,…pn} Phép tam giác phân tập P sao cho phần trong của hình tròn qua ba đỉnh một tam giác bất kì không chứa một điểm nào khác của P, được gọi là phép tam giác phân Delaunay Kí hiệu D(P)
Mỗi tam giác phân D(P) được gọi là tam giác Delaunay, mỗi cạnh của tam giác Delaunay được gọi là cạnh Delaunay
Trang 71.1.3 Định nghĩa (xem[4] - trang 75) Một cạnh Delaunay được gọi là cạnh
trong nếu nó là cạnh chung của đúng hai tam giác Delaunay
Một cạnh Delaunay được gọi là cạnh biên nếu nó là cạnh của duy nhất một tam giác Delaunay
Tập các cạnh biên được gọi là biên của D(P)
1.1.4 Tính chất (xem [4] - trang 89) Biên của D(P) là biên của bao lồi tập
các điểm của P
1.1.5 Tính chất (xem [4] - trang 102) Nếu P có k đỉnh nằm trên biên của
bao lồi thì D(P) có 2n - 2 - k tam giác và 3n - 3 - k cạnh
Chứng minh
Gọi n, nv, ne lần lượt là số đỉnh, số tam giác và số cạnh của D(P) Theo giải thiết, P có k đỉnh nằm trên biên của bao lồi nên D(P) có k cạnh biên
Vì mỗi cạnh biên là cạnh của duy nhất một tam giác và mỗi cạnh trong
là cạnh chung của đúng hai tam giác nên số cạnh của D(P) là:
Từ (1) và (2) ta có điều phải chứng minh
1.1.6 Tính chất (xem [5] - trang 186) D(P) là duy nhất nếu hình tròn đi qua
ba đỉnh bất kì của P không chứa điểm nào khác của P
1.1.7 Tính chất (xem [5] - trang 186) (mối quan hệ giữa tam giác phân
Delaunay trong mặt phẳng và bao lồi của tập hữu hạn điểm trong không gian
p ,p , ,p } là tập hình chiếu của tập các điểm
P = {p1, p2,…,pn} trong mặt phẳng Oxy lên parabollid z = x2 + y2 Khi đó D(P) chính là kết quả của phép chiếu bao lồi dưới LF(P') lên mặt phẳng Oxy
Trang 81.1.8 Định nghĩa biểu đồ Voronoi (xem [2])
Cho P = {p1, p2,…pn} là tập n điểm phân biệt trong E3 gọi chúng là các
vị trí Biểu đồ Voronoi là một phân hoạch phẳng của P thành n miền Mỗi
( )i \ i j ,
1.1.9 Các tính chất của tam giác phân Delaunay và biểu đồ Voronoi
- Biên của D(P) là bao lồi của các vị trí của V(P)
- Phần trong của các mặt (các tam giác) của D(P) không chứa một vị trí nào của V(P)
- Mỗi miền V(Pi) là lồi
- V(Pi) không bị chặn nếu và chỉ nếu Pi nằm trên bao lồi của các vị trí P (tức Pi) là đỉnh cực biên của bao lồi
- Nếu đỉnh Voronoi V là chung của V(P1), V(P2), V(P3) thì V là tâm của hình tròn C(V) xác đỉnh bởi p1, p2, p3 (xem hình 1)
- Phần trong của hình tròn không chứa vị trí nào của V(P)
- Nếu pi là một vị trí kề với pj thì p p i j là một cạnh của D(P)
Hình 2 (tam giác phân Delaunay biểu diễn
Trang 9bằng các nét đứt đoạn biểu đồ Voronoi biểu diễn bằng nét liền)
1.1.10 Tính chất (xem [1]) ab ∈ V(P) nếu và chỉ nếu có một hình tròn rỗng qua a và b
Chứng minh
C(x) rỗng
b) Nếu có một hình tròn nào đó C(x) qua a và b thì bán kính của C(x) là
x a− = −x b do đó x thuộc các miền Voronoi của a và b chừng nào không có điểm khác gây chở ngại đến tính "lân cận gần nhất" Nhưng
thể di chuyển x trên phần dương của đường trung trực của đoạn ab mà vẫn giữ được tính rỗng của C(x)
Như vậy x trên phần dương của đường trung trực của cạnh Voronoi của
1.1.11 Định nghĩa (xem [3]) Cho P là đa giác đơn
+) Với a-, a, a+ là ba đỉnh liên tiếp của một đa giác đơn, b là một đỉnh khác của
đa giác đơn đó ta gọi ab là đường thẳng trong lân cận a nếu ab trong góc trong
Trang 101.1.13 Định nghĩa (xem [1])
Xét vị trí tương đối của một điểm với đường thẳng định hướng
cho a, b, c ∈ R2 trong đó a(a0, a1), b(b0, b1), c(c0, c1) Xét giá trị
S = (b0 - a0)(c1 - a1) - (b1 - a1)(c0 - a0) (*)
- Nếu S > 0 thì c bên trái abuur
- Nếu S < 0 thì c bên phải abuur
- Nếu S = 0 thì c ở trên abuur
1.1.14.Định nghĩa Trong R3 cho mặt phẳng α có phương trình ax + by + cz + d = 0 Và điểm M(x0 ;y0 ;z0) Gọi M'(x0;y0;m) là điểm thuộc mặt phẳng
α Khi đó ta nói
1.1.15 Nhận xét Gọi nα(a, b, c) là véc tơ pháp tuyến của mặt phẳng α và
c < 0 Khi đó M(x0 ;y0 ;z0) nằm phía trên (hoặc thuộc) mặt phẳng α khi và chỉ khi nα.M'M ≤ 0
Chứng minh
Ta có: M'M( 0 ; 0 ;z0 −m) ⇒nα.M'M =c(z0−m)
Do đó ta có: nα.M'M ≤ 0 ⇔c(z0 −m) ≤ 0 ⇔z0 ≥m
Vậy, theo định nghĩa 1.1.14 ta có điều phải chứng minh
1.2 Phép tam giác phân Delaunay
1.2.1 Tính chất (xem [3]) Nếu (C) là một hình tròn thì l giao với (C) được
một đoạn thẳng tại các điểm a và b, và p, q, r và s là các điểm nằm trên cùng phía l Giả sử p và q nằm trên (C) mà r nằm bên trong (C), và S nằm phía ngoài (C) thì ¶arb apb aqb asb> ¶ = ¶ > ¶ (xem hình 4)
Trang 111.2.2 Bổ đề (xem [3] - trang 195) Cho bốn điểm pi, pj, pk, pl là 1 hình tứ giác lồi và không nằm trong một hình tròn chung Giả sử (C) là hình tròn qua pi, pj,
Trang 12pk Cạnh p p i j là bất hợp pháp nếu và chỉ nếu điểm pl nằm trong hình tròn (C) (xem hình 5)
Bất hợp pháp Hình 5
1.2.3 Thuật toán thay thế tam giác phân thành một tam giác phân hợp pháp (xem [3] - trang 195).
Algorithm Legaltriangulation (T) (tam giác phân hợp pháp)
Đầu vào T là một tam giác phân nào đó của tập hợp điểm P
Đầu ra Một tam giác phân hợp pháp của P
1 while T chứa cạnh bất hợp pháp p i p j
2 do (*Thay thế p i p j *)
3 Giả sử pipjpk và pipjpl là hai tam giác tiếp giáp với p i p j
4 Bỏ đi p i p j từ T, và thêm vào p k p l thay thế
5 return T
1.2.4 Tính chất (xem [3] - trang 198) Giả sử P là một tập hợp các điểm trên
mặt phẳng Ba điểm pi, pj, pk thuộc P là các đỉnh của tam giác phân Delaunay
đồ thị của P nếu và chỉ nếu hình tròn qua pi, pj, pk không chứa điểm nào của P trong nó
1.2.5 Tính chất (xem [3] - trang 198) Giả sử P là một tập hợp các điểm
trong mặt phẳng và giả sử T là một tam giác của P Sau đó T là một tam giác
pi
pk
pj
pl
Trang 131.2.6 Bổ đề (xem [3] - trang 202) Mỗi cạnh mới tạo ra trong tam giác phân
của đồ thị Delaunay của {p-1, p-2, p0,…,pr}
Đầu tiên ta bắt đầu với một tam giác lớn hơn chứa tập hợp các điểm của P
Hình 6
Thêm hai điểm p-1 và p-2, cùng với điểm có tung độ cao nhất p0 của P, tạo thành một tam giác chứa tất cả các điểm của P (xem hình 6) Điều này có nghĩa là đang tính với một tập hợp điểm P ∪ {p-1, p-2} thay cho tập hợp điểm của P Sau đó muốn có được những tam giác phân Delaunay của P bằng cách loại bỏ p-1, p-2 cùng với tất cả các cạnh nối đến hai điểm này Để làm việc này
tam giác Delaunay của P Đặc biệt, phải đảm bảo chúng không nằm trong bất
kỳ hình tròn xác định bởi ba điểm tại P
tam giác hiện tại có chứa pr Nếu pr nằm trong tam giác thêm cạnh từ pr đến
hợp
Trang 14pr nằm bên trong ∆pipjpk pr nằm trên cạnh pipj của ∆ pipjpk
Một tam giác nhưng không nhất thiết là một tam giác phân Delaunay là
khắc phục tình trạng này, ta sử dụng trương trình con LEGALIZEEDGE để thay thế cạnh bất hợp pháp
Tiếp theo ta nói về các chi tiết của sự thay đổi tam giác nhận được sau khi dòng 9 (hoặc dòng 14) của thuật toán trong muc 2.2.2 thành một tam giác phân Delaunay Ta đã biết từ tính chất 1.2.6 rằng một tam giác là một tam giác phân Delaunay nếu tất cả các cạnh của nó là hợp pháp
thể trở thành bất hợp pháp nếu một trong các sự cố để nó có hình tam giác thay đổi Vì vậy chỉ có cạnh của tam giác mới cần được kiểm tra Điều này được thực hiện bằng cách sử dụng chương trình con LEGALIZEEDGE
1 (* Các điểm được đưa vào là pr, và p i p j là cạnh của T có thể cần *)
2 if p i p j là bất hợp pháp
3 then Giả sử pipjpk được tam giác kề
với prpipj dài hơn p i p j
Trang 154 (* Flip p i p j : *) Thay thế p i p j với p r p k
5 LEGALIZEEDGE (pr, p i p k , T)
6 LEGALIZEEDGE (pr, p k p j , T)
Các thử nghiệm ở bước 2 của thuật toán này có một cạnh là bất hợp pháp thường có thể được thực hiện bằng cách áp dụng bổ đề 1.2.2
1.3 Độ phức tạp của thuật toán
Độ phức tạp của thuật toán là thước đo để so sánh tính hiệu quả của thuật toán Một thước đo hiệu quả đó là thời gian máy tính sử dụng để giải bài toán đang xét, khi các giá trị đầu vào có một kích thước xác định Một thước
đo thứ hai đó là kích thước bộ nhớ đòi hỏi thực hiện thuật toán khi giá trị đầu vào có một kích thước cho trước
Gắn liền với thời gian tính toán là độ phức tạp thời gian và bộ nhớ là độphức tạp không gian
Xác định được độ phức tạp thời gian của thuật toán là rất quan trọng.Vì khi đó ta biết được thời gian tính toán là một phút, một năm hay một tỉ năm
để thực hiện thuật toán đó Độ phức tạp không gian của thuật toán đó cho ta biết được một bước chuẩn bị và thấy được khả năng đáp ứng trong việc tính toán của thuật toán
Trong luận văn nay chúng tôi không nghiên cứu về cơ sở dữ liệu nên ta
bỏ qua độ phức tạp không gian, chỉ nghiên cứu độ phức tạp thời gian
Để xác định độ phức tạp của thuật toán ta chỉ xét những hàm thực
làm công cụ đo Nghĩa là tồn tại số tự nhiên n0 sao cho với mọi n ≥ n0 thì f(n) > 0 Kí hiệu £ là tập hợp các hàm như vậy
1.3.1 Định nghĩa (xem [2]) Cho hàm số g(n) ∈ £, ta định nghĩa O(g(n)) là
tập hợp các hàm f(n) ∈ £ có tính chất: tồn tại hằng số dương c và số tự nhiên
Trang 16n0 sao cho với mọi n ≥ n0 thì f(n) ≤ c.g(n) Nếu f(n) ∈ O(g(n)) thì ta nói rằng f(n) là Ô lớn của g(n).
1.3.2 Tính chất (xem [2]) Nếu f1(n) ∈ O(g1(n)) và f2(n) ∈ O(g2(n)) thì f1(n) + f2(n) O(∈ g1(n) + g2(n))
Chứng minh Giả sử rằng với mọi n > n1, f1(n) ≤ c1g1(n), và với mọi n ≥ n2,
1.3.5 Xác định độ phức tạp tính toán của thuật toán (xem [2])
Ta sử dụng T là khối mã cho độ phức tạp tính toán của một toán tử riêng cũng như cho một đoạn mã chương trình Khi đoạn mã chương trình được tách biệt rõ ràng thì ta kí hiệu T(n) là độ phức tạp tính toán và là hàm
Trang 17biến số n, với n là số phép toán cơ sở Độ phức tạp tính toán được đo bằng hàm O( ) Vậy xác định độ phức tạp tính toán tức là xác định hàm
T(n) ∈ O(g(n)) cho đoạn mã chương trình đó
Các phép toán dùng để đo độ phức tạp thời gian là phép so sánh các số nguyên, phép cộng, trừ, nhân và chia hoặc bất kì một phép toán sơ cấp nào khác
Độ phức tạp thời gian của dãy liên tiếp các phép tính được xác định bởi
độ phức tạp cao nhất trong chúng
Tức là, giả sử toán tử s1 có độ phức tạp F1 và toán tử s2 có độ phức tạp
F2. Khi đó:T(s1 ∈ O(F1)), T(s2 ∈ O(F2)) ⟹ T(s1,s2) ∈ max(O(F1),O(F2))
Để dễ dàng cho việc phân tích thuật toán ta kết hợp những kí hiệu đo
độ phức tạp và phân tích trong trường hợp xấu nhất để biết được thời gian thực hiện thuật toán là bao nhiêu? Người ta đinh ra độ phức tạp của các phép toán trong trường hợp xấu nhất của thuật toán là:
Trang 18CHƯƠNG II THUẬT TOÁN TÌM TAM GIÁC PHÂN DELAUNAY
2.1 Thuật toán sử dụng bao lồi dưới trong R 3 để tìm tam giác phân Delaunay 2.1.1 Mô tả thuật toán (xem [3])
với tọa độ (xi1, xi2) ta làm như sau:
1 , ,p n
ilà hoành độ và tung độ của pi còn cao độ xi3 của pi* là xi12 +x i22
của pi* là hoành độ và tung độ của pi còn cao độ của pi* là xi3= 2
2 Xây dựng bao lồi CH(P*) của p* trong R3
3 Chiếu xuống n mặt của CH(P*) theo hướng song song trục tọa độ gốc
R2 (có chứa P) và quay trở lại
2.1.3 Ví dụ Trong mặt phẳng Oxy, cho tập P gồm 5 điểm.
P = {p0 (1;8), ( 2; 2),p1 − − p2 (1;0),p3 ( 2;1), − p4 (2;1)}
Trang 19Dùng thuật toán sử dụng bao lồi dưới trong R3 để tìm D(P)
; 2
; 2 ( )
; 0
; 1 ( )
phẳng Tuy nhiên, theo thuật toán này, khi thực hiện tính toán sẽ thực hiện
và n ikj = p p p p i* *k, i* *j
uuuuur uuuuur uur
không (dựa vào định nghĩa 1.1.14 và nhận xét 1.1.15)
Điều kiện đó tương đương với đẳng thức: uuuuur uuurp p n i* *m. ijk ≤ 0
Trang 23; 2
; 2 ( )
; 0
; 1 ( )
Trang 26- Kiểm tra các điểm * * *
Trang 27; 64
; 66 ( );
10
; 64
; 66 ( 152
Trang 29Hình 10
2.2 Thuật toán tăng dần ngẫu nhiên tìm tam giác phân Delaunay (xem
[3] – trang 200)
2.2.1 Mô tả thuật toán
Đầu tiên ta bắt đầu với một tam giác lớn chứa tập hợp các điểm của P.Thêm hai điểm p-1 và p-2 cùng với điểm có tung độ cao nhất p0 của P, tạo thành một tam giác chứa tất cả các điểm của P Điều này có nghĩa là đang tính toán một tập hợp điểm P∪{p-1; p-2} thay cho tập hợp điểm của P Sau đó
p-2 cùng với tất cả các cạnh nối đến hai đỉnh p-1 và p-2
hình tam giác Delaunay của P Đặc biệt phải đảm bảo chúng không nằm trong bất kỳ hình tròn xác định bởi ba điểm tại P