Cấu trúc dữ liệu bốn cạnh (Delaunay / Voronoi)


18

2 câu hỏi cho các phép đo địa lý hoặc đại số tính toán:

Tôi mới bắt đầu đi sâu vào hình học tính toán và tôi yêu nó =)

Tôi đang cố gắng đọc bài báo nổi tiếng của Guibas và Stolfi có tên là "Nguyên thủy cho việc thao túng các phân khu chung và tính toán của Biểu đồ Voronoi" để thực hiện thuật toán tam giác Delaunay. Tôi muốn bỏ qua tất cả các công cụ lý thuyết và chỉ cần đọc mô tả về cấu trúc dữ liệu bốn cạnh của họ để tiết kiệm thời gian. Tuy nhiên, tôi nghĩ có thể đáng để hiểu tất cả các phép toán trong bài viết nếu cấu trúc được sử dụng rộng rãi, hoặc chỉ vì nó có thể đẹp.

Toán học là một chút để dày đặc cho tôi. Tôi không hoàn toàn không biết gì về cấu trúc liên kết, nhưng mô tả về đại số cạnh của chúng đòi hỏi kiến ​​thức về đại số trừu tượng mà tôi không có.

Hai câu hỏi của tôi là: Những ứng dụng nào khác của cấu trúc bốn cạnh ngoài tính toán Delaunay / Voronoi? Có vẻ như một công cụ cực kỳ mạnh mẽ.

Câu hỏi thứ hai; Đại số trừu tượng là gì? Sẽ thật tuyệt nếu bạn có thể cho tôi một tài liệu tham khảo để giới thiệu về đại số trừu tượng, vừa đủ để tôi có thể hiểu phần trên đại số cạnh của họ.

Cảm ơn bạn!


3
Chỉ cần điền vào các khoảng trống: đại số trừu tượng là nghiên cứu các tập hợp các yếu tố tôn trọng các quy tắc nhất định. Như bạn có thể đoán các quy tắc mà các tập hợp này thỏa mãn là các thuộc tính như đóng, các phần tử nhận dạng, sự tồn tại của nghịch đảo duy nhất và khi tiến hành giao hoán, kết hợp, v.v. Đó là nghiên cứu về đại số trên các tập không nhất thiết phải hoạt động như các số thực (một ví dụ tốt là hoán vị).
Ross Snider


Tôi đoán câu hỏi thứ hai của tôi là một chút bỏ lỡ. Tôi biết một số lý thuyết nhóm. Tôi biết thế nào là một chiếc nhẫn và lĩnh vực. Chỉ là trong bài báo họ định nghĩa một đại số trừu tượng: "Đại số cạnh là một Đại số trừu tượng (E, E *, Onext, Rot, Flip) thỏa mãn các tính chất E1 - E5 và F1 - F5"
bigmonachus

[...] Và tôi không biết điều đó có nghĩa là gì. Nó không phải là đại số trên một lĩnh vực phải không?
bigmonachus

Câu trả lời:


32

Tôi nghĩ rằng hình thức đại số cạnh của Guibas và Stolfi là một chút không cần thiết.

Tất cả những gì thực sự cần thiết là ghi nhớ sự khác biệt giữa đồ thị nguyên thủy và đồ thị kép. Mỗi mặt của đồ thị nguyên thủy có một đỉnh kép tương ứng ; mỗi cạnh của đồ thị nguyên thủy có cạnh kép tương ứng ; và mỗi đỉnh của đồ thị nguyên thủy có một mặt kép tương ứng . Các cạnh nguyên thủy kết nối các đỉnh nguyên thủy và các mặt nguyên thủy riêng biệt; các cạnh kép kết nối các đỉnh kép và các mặt kép riêng biệt. Sự đối ngẫu của bất cứ điều gì là điều ban đầu. Xem hình 4 trong bài báo của Guibas và Stolfi:f e e v v ff*ee*vv*

Đồ thị nguyên thủy và kép

Guibas và Stolfi đề xuất suy nghĩ về từng cạnh (có thể là nguyên thủy hoặc kép) như là một bộ gồm bốn cạnh được định hướng, định hướng ; Để đơn giản, tôi sẽ gọi những phi tiêu này . Mỗi phi tiêu chỉ từ một đuôi điểm cuối ( e ) đến điểm cuối khác và tách cục bộ hai mặt trái ( e )phải ( e ) . Lựa chọn điểm cuối nào để gọi đuôi ( e )hướng của phi tiêueđuôi(e)cái đầu(e)trái(e)đúng(e)đuôi(e)và lựa chọn mặt nào để gọi hướng của nó . (Guibas và Stolfi sử dụng Hồi Org và và Dest Dest Thay thay vì đuôi đuôi và đầu bếp, nhưng tôi thích các nhãn ngắn hơn, vì Chữ viết tắt không cần thiết là xấu xa.)trái(e)

Đối với mọi phi tiêu , Guibas và Stolfi liên kết ba phi tiêu liên quan:e

  1. : Phi tiêu rờitiếp theo theo thứ tự ngược chiều kim đồng hồ sau.đuôi(e)eđuôi(e)e
  2. e trái ( e ) phải ( e )lật(e) : Các “cùng” phi tiêu như , nhưng với và tráo đổi.etrái(e)đúng(e)
  3. equay(e) : Phi tiêu kép thu được bằng cách cho một phần tư quay ngược chiều kim đồng hồ quanh điểm giữa của nó.e

tailNext, xoay và lật

Ba chức năng này đáp ứng tất cả các loại danh tính tuyệt vời, như sau:

  • đúng(đuôi(e))= =trái(e)
  • đúng(lật(e))= =trái(e)
  • đúng(quay(e))= =cái đầu(e)*
  • lật(lật(e))= =e
  • quay(quay(quay(quay(e))))= =e
  • đuôi(quay(đuôi(quay(e))))= =e

Để biết danh sách đầy đủ, xem trang 83 của bài báo (nhưng hãy cẩn thận rằng các tác giả sử dụng ký hiệu hậu tố , có lẽ vì nó gần với mã khai báo hơn ). Guibas và Stolfi gọi bất kỳ bộ ba hàm nào thỏa mãn tất cả các danh tính này là đại số cạnh .e FtôiTôipe.Flip

Hơn nữa, với ba chức năng này, người ta có thể định nghĩa một số chức năng hữu ích khác như

  • đảo ngược(e)= =quay(lật(quay(e))) - trao đổi đỉnh đầu và đuôi
  • bên trái(e)= =quay(đuôi(quay(quay(quay(e))))) - phi tiêu tiếp theo sau theo thứ tự ngược chiều kim đồng hồ quanh mặtetrái(e)

Cuối cùng, việc biết các hàm này cho bạn biết tất cả mọi thứ về cấu trúc liên kết của phân khu và bất kỳ phân vùng đa giác nào của bất kỳ bề mặt nào (có thể định hướng hay không) có thể được mã hóa bằng ba hàm này.

Cấu trúc dữ liệu bốn cạnh là một biểu diễn đặc biệt thuận tiện của biểu đồ bề mặt cung cấp quyền truy cập vào tất cả các chức năng này, cùng với một số hoạt động liên tục khác như chèn, xóa, ký hợp đồng, mở rộng và lật cạnh; tách hoặc hợp nhất các đỉnh hoặc mặt; và thêm hoặc xóa tay cầm hoặc mũ chéo.

Chúc vui vẻ!


Tôi đã sử dụng OmniGraffle.
Jeffε
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.