thể trùng lặp:
How to find largest triangle in convex hull aside from brute force searchtam giác lớn nhất từ một tập hợp các điểm
Tôi có một tập hợp các điểm ngẫu nhiên mà từ đó tôi muốn tìm tam giác có diện tích lớn người là verticies là mỗi trên một trong những điểm đó.
Cho đến nay tôi đã tìm ra rằng các hình tam giác lớn nhất sẽ chỉ nằm trên các điểm bên ngoài của đám mây điểm (hoặc lồi) vì vậy tôi đã lập trình một chức năng để thực hiện điều đó (sử dụng Graham scan trong thời gian nlogn).
Tuy nhiên đó là nơi tôi bị kẹt. Cách duy nhất tôi có thể tìm ra cách để tìm tam giác lớn nhất từ những điểm này là sử dụng sức mạnh vũ phu ở thời điểm n^3 mà vẫn được chấp nhận trong một trường hợp trung bình vì thuật toán thân lồi thường đá ra phần lớn các điểm. Tuy nhiên, trong trường hợp xấu nhất trong đó các điểm nằm trên một vòng tròn, phương pháp này sẽ thất bại thảm hại.
Có ai biết thuật toán để thực hiện việc này hiệu quả hơn không?
Lưu ý: Tôi biết rằng CGAL có thuật toán này ở đó nhưng chúng không đi vào bất kỳ chi tiết nào về cách thực hiện. Tôi không muốn sử dụng thư viện, tôi muốn tìm hiểu và tự mình lập trình (và cũng cho phép tôi tinh chỉnh nó theo đúng cách tôi muốn nó hoạt động, giống như quét graham, trong đó các triển khai khác nhận điểm collinear tôi không muốn).
Tên của quy trình trong CGAL thực hiện điều này là gì? – andand
@andand: maximum_area_inscribed_k_gon_2, tôi nghĩ vậy. – Faken
@Faken: Mã nguồn không cho biết thuật toán CGAL :: maximum_area_inscribed_k_gon_2 sử dụng. Tuy nhiên, bạn có thể muốn xem qua nó (http://www.cgal.org/Manual/latest/include/CGAL/extremal_polygon_2.h) và xem liệu bạn có thể xây dựng lại logic được không. – andand