Độ phức tạp của thuật toán tam giác Delaunay


16

Trong cuốn sách "Hình học tính toán: Thuật toán và ứng dụng" của Mark de Berg và cộng sự, có một thuật toán vũ lực rất đơn giản để tính toán các tam giác Delaunay. Thuật toán sử dụng khái niệm các cạnh bất hợp pháp - các cạnh có thể không xuất hiện trong tam giác Delaunay hợp lệ và phải được thay thế bằng một số cạnh khác. Trên mỗi bước, thuật toán chỉ tìm thấy các cạnh bất hợp pháp này và thực hiện các chuyển vị cần thiết (được gọi là lật cạnh ) cho đến khi không có các cạnh bất hợp pháp.

Thuật toán hợp pháp hóa ( )T

Đầu vào . Một số tam giác của một set point . Đầu ra . Một tam giác hợp pháp của .TP
P

trong khi chứa cạnh bất hợp pháp do Đặt và là hai tam giác kề với . Xóa khỏi và thay vào đó thêm . trở lại .TpTôipj

pTôipjpkpTôipjptôipTôipj
pTôipjTpkptôi
T

Tôi đã nghe nói rằng thuật toán này chạy trong thời gian trong trường hợp xấu nhất; tuy nhiên, tôi không rõ liệu tuyên bố này có đúng hay không. Nếu có, làm thế nào người ta có thể chứng minh giới hạn trên này?Ôi(n2)


5
Trong mẫu mà bạn đã nêu ở trên, phải mất thời gian . Tuy nhiên, sử dụng ngăn xếp có thể được thực hiện trong thời gian O ( n 2 ) . Bạn có thể nhìn vào trang cuối cùng trong các ghi chú bài giảng này . Đối số cơ bản là có thể có tối đa lật cạnh. O(n3)O(n2)(n2)
rizwanhudda

2
@rizwanhudda: Tại sao không làm cho câu trả lời này?
Raphael

Câu trả lời:


8

Một tam giác Delaunay có thể được coi là thân lồi dưới của tập hợp điểm 2d được nâng lên thành paraboloid. Do đó, nếu bạn lấy tập hợp điểm 2d của mình và gán cho mọi điểm một z -coordine z i = x 2 i + y 2 1 , thì hình chiếu của thân lồi dưới vào trong x y- thủy tinh cung cấp cho bạn tam giác Delaunay.(xi,yi)zzi=xi2+y12xy

Sử dụng phối cảnh này, điều đó có nghĩa gì đối với một cạnh là bất hợp pháp? Trước hết, đối với mỗi tam giác T chúng ta có thể sử dụng bản đồ parabol để có được một bề mặt 3d (hình tam giác) rằng các dự án xuống còn T . Tất nhiên, bề mặt này không nhất thiết là lồi, nếu nó là lồi, T sẽ là tam giác Delaunay. Nói một cách đơn giản, cạnh ( p i , p j ) là một vật cản cho độ lồi của bề mặt, cạnh lõm . Khi lật cạnh này, chúng ta chỉ thay đổi tình huống trên bề mặt nâng. Vì vậy, hãy nhìn vào 4 điểm(pi,pj)TTT(pi,pj) . Trong 3d chúng tạo thành một tứ diện, chiếu xuống tứ giác. Vì hai tam giác p i p j p k p i p j p l xác định cạnh lõm ( p i , p j ) , nên các tam giác p k p l p i p k p l p j xác định cạnh lồi (pi,pj,pk,plpipjpkpipjpl(pi,pj)pkplpipkplpj . Do đó, lật một cạnh bất hợp pháp tương ứng với việc thay thế một cạnh lõm bằng một cạnh lồi trong nâng. Lưu ý rằng lật này có thể biến các cạnh lồi khác thành các cạnh lõm.(ptôi,pk)

Giải thích lật 3D Ghi chú: Hình ảnh không chính xác về mặt hình học và chỉ nên được coi là một bản phác thảo.

Hãy là tam giác sau khi lật. Bề mặt nhấc của T ' "chứa" bề mặt của T . Bằng cách này, tôi có nghĩa là nếu bạn xem hai bề mặt từ x y máy bay bạn chỉ thấy tam giác từ bề mặt của T ' (hoặc tam giác có trong cả hai bề mặt). Bạn cũng có thể nói rằng bề mặt của T chứa nhiều âm lượng hơn. Ngoài ra, cạnh ( p i , p j ) hiện nằm "phía sau" bề mặt nâng được tạo bởi T khi xem từ mặt phẳng x y .T'T'TxyT'T'(pTôi,pj)T'xy

Trong chuỗi lật chúng ta có được một chuỗi các bề mặt với khối lượng tăng nghiêm ngặt. Do đó, cạnh nằm "phía sau" tất cả các bề mặt này. Do đó, nó không bao giờ có thể xuất hiện trở lại trong quá trình lật. Vì chỉ có n chọn 2 cạnh có thể, nên chúng ta có tối đa O ( n 2 ) .(pTôi,pj)nÔi(n2)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.