Đa giác trong bài toán tổng quát hóa đa giác


9

Tôi muốn xin lỗi tất cả các bài viết dưới đây. Chọn các diễn đàn sai để đăng này trong ban đầu. Tuy nhiên, thay vì biến điều này thành một sự lãng phí hoàn toàn, tôi đã làm lại câu hỏi để trở thành một vấn đề "Khoa học máy tính lý thuyết" thực sự.

Vấn đề: Tạo một thuật toán lấy một tập hợp n điểm theo thứ tự trong mặt phẳng 2D tạo thành đường viền của đa giác A đơn giản có thể hoặc không thể lõm và tạo đa giác B mới với m điểm sao cho:

  1. tất cả các điểm trong A được chứa trong B
  2. 3 <= m <n
  3. B là đa giác trong tập hợp tất cả các Bs có diện tích nhỏ nhất
  4. B phải là một đa giác đơn giản (nghĩa là không có giao điểm tự).
  5. Đầu vào của thuật toán là đa giác A và "m".
  6. Sự trùng hợp của các phân đoạn trong B với các phân khúc trong A được cho phép.

Một số ví dụ đầu vào và đầu ra dự kiến:

  1. Nếu A là hình vuông và m là 3 thì B sẽ là tam giác có diện tích bề mặt nhỏ nhất chứa A.
  2. Nếu A là một hình lục giác và m là 4 thì B sẽ là một hình tứ giác có diện tích bề mặt nhỏ nhất chứa A.

Chúc may mắn cho tất cả những người thử vấn đề này. Tôi có thể hứa với bạn điều này sẽ rất khó khăn đặc biệt là bây giờ giải pháp phải tối ưu.


1
@Joe: Không đúng: Nếu A là hình vuông, thì Thirian đang yêu cầu tam giác có diện tích tối thiểu chứa A. Mặt khác, nếu A là tam giác ( ) thì thực sự không có giải pháp hợp lệ. n= =3
Jeffε

3
Thêm 17 vào bình luận đầu tiên của tôi, tôi đoán. Tại sao 20?
Jeffε

3
Không phải FFT là một ngưỡng thấp cho "phức tạp" sao?
Sasho Nikolov

2
Tôi không nghĩ hoàn toàn đúng là vấn đề hoàn toàn không thay đổi nếu bạn (nói) đặt m = 3. Vấn đề là bạn có thể yêu cầu số mũ theo thời gian tính bằng m, và điều đó tốt nếu m được cố định ở một số nào đó, nhưng không ổn nếu m là một phần của đầu vào.
Suresh Venkat

5
"Mọi người đều biết vấn đề là gì" không đúng. Chúng tôi đang hỏi bởi vì các lựa chọn không được chỉ định sẽ tạo ra sự khác biệt.
Suresh Venkat

Câu trả lời:


10

Tôi không biết các đa giác của bạn trông như thế nào, nhưng có lẽ một phiên bản đơn giản hóa của thuật toán RamerTHER DouglasTHER Peucker là đủ:

  • với mỗi phần lồi , hãy tính diện tích của các tam giác P i P i + 1 P i + 2 được tạo bởi ba điểm liên tiếp;MộtjPTôiPTôi+1PTôi+2
  • BkPTôiPTôi'PTôi+1PTôi+1PTôi+2'PTôi+2PTôi,PTôi+2PTôi+1
  • tính toán và xóa điểm tương ứng (và các điểm dịch chuyển nếu thao tác được thực hiện trên phần lõm);mTôin{Mộtj,Bk}
  • vòng lặp cho đến khi điểm đã bị xóa.n-m

nhập mô tả hình ảnh ở đây
Đường viền của đa giác ( tam giác xanh, B k tam giác đỏ). Bên phải, đường viền sau khi loại bỏ hai điểm.MộtjBk

Đối với các thuật toán phức tạp hơn, bạn có thể tìm kiếm " các kỹ thuật tổng quát hóa đa giác " mặc dù điều kiện đầu tiên của bạn (các điểm trong A được chứa trong B) ngụ ý một số thao tác chia tỷ lệ bổ sung.


@Suresh: Tôi khá chắc chắn rằng 4 upvote hiện tại là vì tính minh bạch, không phải cho thuật toán (gần như tầm thường) :)
Marzio De Biasi

1
Điều này gặp phải vấn đề tương tự như thuật toán Ramer-Douglas-Peucker: Đầu ra không được đảm bảo là một đa giác đơn giản!
Jeffε

1
@Jeffe: bạn đúng, nhưng (không tối ưu nếu đa giác phức tạp) người ta có thể tránh được sự đơn giản hóa dẫn đến xung đột . Cuối cùng, nếu có những điểm khác phải loại bỏ nhưng đa giác không đơn giản không thể tránh được, hãy sử dụng phương pháp giải quyết xung đột (ví dụ: tính toán các điểm giao nhau và loại bỏ hoàn toàn các "lỗ hổng"). Tuy nhiên tôi muốn xem một ví dụ thực tế từ OP.
Marzio De Biasi

1
@MarzioDeBiasi Điều đó có thể làm việc. Nhưng nó có thể không. Tôi nghĩ rằng mọi sự đơn giản hóa mà bạn mô tả đều có thể gây ra sự tự giao nhau. Và "vứt bỏ các vòng lặp" có thể làm cho mọi thứ tồi tệ hơn, không tốt hơn. Đây có lẽ là một giải pháp tốt trong thực tế, nhưng hãy nhớ chúng ta đang ở đâu!
Jeffε

Cảm ơn Marzio, bây giờ tôi ít nhất biết những loại vấn đề này được gọi là gì bây giờ! Đáng buồn thay, giải pháp bạn đưa ra là những gì (3) và (4) trong các giải pháp được đề xuất của tôi và (4) có vấn đề với nó. Elipses rất căng, và do đó có đầu nhọn với góc khoảng 30 độ trở xuống, sẽ dễ dàng vi phạm yêu cầu (1).
Thirlan

6

Tôi đã viết một bài báo từ lâu, chi tiết thuật toán thời gian tuyến tính để tìm tam giác diện tích nhỏ nhất bao quanh một tập hợp điểm (hoặc đa giác):

J. O'Rourke, Alok Aggarwal, Sanjeev Maddila, Michael Baldwin, "Một thuật toán tối ưu để tìm các tam giác bao quanh tối thiểu," J. Al Thuậtms , 1986, 7 : 258--269. Liên kết .

Công việc của chúng tôi được theo sau bởi một thuật toán chung:

"Đa giác đăng ký diện tích tối thiểu," Alok Aggarwal, JS Chang và Chee K. Yap, Máy tính trực quan , Tập 1, Số 2 (1985), 112-117. Liên kết .

Bạn có thể sử dụng Google Scholar để theo dõi những bài báo sau trích dẫn những điều này để tìm ra những cải tiến và công việc liên quan.

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.