Độ phức tạp để tìm một quả bóng tối đa hóa số điểm nằm trong nó


10

x1,,xnR2rri=1n1xxir

Một thuật toán vũ lực sẽ đi qua mọi điểm và đếm số điểm ở khoảng cách nhỏ hơn . Điều đó sẽ tạo ra sự phức tạp của .rO(n2)

Có một cách tiếp cận tốt hơn?


Bạn đã xem các cây phân vùng không gian nhị phân và nhị phân chưa? Tôi dự đoán rằng họ có thể đưa ra một thuật toán hiệu quả hơn trong thực tế, mặc dù tôi không biết thời gian chạy không triệu chứng trong trường hợp xấu nhất có thể là gì.
DW

(Trung tâm của balltiêu đề cần phải được đặt từ tập hợp?) Một ý tưởng có thể là ước tính bán kính có nhỏ so với khoảng cách trung bình với hàng xóm gần nhất hoặc theo thứ tự đường kính (và xem xét các cách tiếp cận cho các cực trị này (quét mặt phẳng cho nhỏ ) và không gian rộng ở giữa). r
greybeard

Tâm của quả bóng phải là một nhưng nếu có một thuật toán tốt hơn với điều kiện đó thì tôi cũng quan tâm. xi
Manuel

Có vẻ như thuật toán nhanh hơn cho Bài toán đếm phạm vi bóng chưa được biết. Tuy nhiên, nếu bạn có thể chấp nhận một câu trả lời không chính xác thì bạn có thể ước chừng một đĩa bằng một tập hợp các hình vuông có hướng khác nhau. Đối với mỗi hướng, bạn sẽ phải xây dựng Cây phạm vi ( en.wikipedia.org/wiki/Range_tree ), cho phép bạn đếm tất cả các điểm bên trong một hình vuông trong thời gian (k - một số điểm kết quả). O(n)O(log2(n)+k)
HEKTO

@HEKTO Bạn có đề xuất xây dựng cấu trúc chi phí để truy vấn nếu một điểm nằm trong hình chữ nhật với chi phí không? Sau đó đi qua tất cả các điểm để đếm xem có bao nhiêu điểm khác nằm trong quả bóng gần đúng? Điều này có thể hoạt động, nhưng sau đó, bộ nhớ cần thiết cho cấu trúc dữ liệu đó là gì? nó sẽ thấp hơn ? O(nlog(n))O(log2(n)+k)O(n2))
Manuel

Câu trả lời:


5

Nó trông giống như một sublinear thuật toán cho Đếm bóng Dải Vấn đề là không biết đến bây giờ.

Tuy nhiên, nếu bạn có thể chấp nhận một câu trả lời không chính xác thì bạn có thể ước chừng một đĩa bằng một tập hợp các hình vuông có hướng khác nhau. Đối với mỗi hướng, bạn sẽ phải xây dựng Cây phạm vi , cho phép bạn đếm tất cả các điểm bên trong một hình vuông theo thời gian (k - một số điểm kết quả).O(log2(n)+k)

Mỗi cây phạm vi sẽ yêu cầu bộ nhớ , bạn nên sử dụng xấp xỉ tốt hơn các định hướng bạn nên sử dụng. Ví dụ: hai định hướng sẽ cung cấp cho bạn một hình bát giác , xấp xỉ một đĩa có sai số diện tích nhỏ hơn 6%.O(nlog(n))


3

Câu trả lời không đơn giản như vậy, đã có nghiên cứu nâng cao về câu hỏi này trong lý thuyết phức tạp; nó dường như được nghiên cứu, ví dụ như vấn đề sau, tập trung vào các truy vấn "đếm phạm vi hình cầu" nhanh. Vâng, giới hạn lý thuyết được cải thiện là có thể, nhưng đây dường như là những thuật toán trừu tượng chưa được thực hiện bởi bất kỳ ai. Nếu bạn muốn thực hiện thực tế, đó là một câu hỏi khác nhau.

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.