Hộp nhỏ nhất theo trục có chứa điểm


11

Đầu vào: Một tập hợp điểm trong và một số nguyên .nR3kn

Đầu ra: Hộp giới hạn liên kết trục âm lượng nhỏ nhất chứa ít nhất trong số điểm này.kn

Tôi tự hỏi nếu có bất kỳ thuật toán được biết đến cho vấn đề này. Điều tốt nhất tôi có thể nghĩ đến là thời gian , lỏng lẻo như sau: lực lượng vũ phu trên tất cả các giới hạn trên và dưới có thể cho hai trong ba chiều; đối với mỗi khả năng , chúng ta có thể giải quyết phiên bản chiều tương ứng của vấn đề trong thời gian bằng thuật toán cửa sổ trượt.O(n5)O(n4)1O(n)


Chúng ta không thể tính một bảng có kích thước cho số điểm với ? Việc tính toán số điểm và âm lượng có thể được thực hiện với số lượng hoạt động và chúng ta có thể sử dụng lập trình động với bảng có kích thước và có thể có được thuật toán . n3pp.x<x,p.y<y,p.z<zkn3O(kn3)
Kaveh

Đồng ý. Trong trường hợp này, , bạn không thể thực sự hy vọng sẽ làm tốt hơn . Bởi vì, có hộp khác nhau và theo đối số trung bình (trên giá trị ngẫu nhiên là k), có hộp chứa chính xác k điểm. Trừ khi bạn bằng cách nào đó có thể sử dụng âm lượng lớn để bằng cách nào đó thu nhỏ không gian tìm kiếm, nhưng bằng cách nào đó có vẻ lạc quan ...k=Θ(n)n5n6n5
Sariel Har-Peled

Trong trường hợp của bạn, BTW, bạn có thể nhận được một hộp chứa điểm và nhỏ hơn hộp tối ưu chứa điểm trong thời gian. Với đây thực chất là thời gian polylog., ..(1ϵ)kkO(((n/k)/ϵ2logn)O(1))k=Θ(n)
Sariel Har-Peled

Câu trả lời:


11

Đối với điểm có các ô trống , xem phần giới thiệu của bài viết này http://www.cs.uwm.edu/facemony/ad/maximal.pdf . Người ta có thể tính toán các hộp này trong khoảng thời gian này (xem phần giới thiệu cho ref).nO(n3)

Đối với vấn đề của bạn, hãy lấy một mẫu điểm ngẫu nhiên, trong đó mọi điểm được chọn với độ khả dụng . Một mẫu ngẫu nhiên như vậy có kích thước (trong kỳ vọng) [và vì lợi ích của mâu thuẫn giả định rằng nó là]. Có các ô trống có các điểm từ ở hai bên, ở trên. Đối với mỗi hộp như vậy, sử dụng cấu trúc dữ liệu tìm kiếm phạm vi trực giao để tính toán chính xác có bao nhiêu điểm. Lặp lại quá trình này lần. Với xác suất cao, một trong những hộp bạn đã thử là hộp mong muốn.1/kn/kO((n/k)3)RO(k6logn)

Nhìn chung, thời gian chạy của nó là .O((n/k)3k6polylogn)=O(n3k3logO(1)n)

Để xem tại sao điều này làm việc, hãy xem xét hộp tối ưu. Nó có 6 điểm P trên ranh giới của nó. Xác suất mẫu ngẫu nhiên chọn sáu điểm này và không có điểm nào trong hộp ít nhất là . Do đó, nếu bạn lặp lại quá trình lần, với xác suất cao, một trong các mẫu ngẫu nhiên sẽ tạo ra hộp mong muốn dưới dạng hộp trống.1k6(11/k)k61/k6=pO((1/p)logn)

Vì rất chặt chẽ về số lượng ô trống (xem phần giới thiệu ở trên để biết các tài liệu tham khảo có liên quan), có vẻ như không thể có thuật toán nhanh hơn đáng kể.Θ(n3)

[Trong tài liệu tham khảo mà tôi đã đưa ra, họ đề cập rằng [17] cung cấp thuật toán liệt kê tất cả các ô trống tối đa trong số các điểm trong 3d trong thời gian , đây là hộp đen bạn cần cho ở trên .]O(n3log2n)


Cảm ơn - điều này thật tuyệt vời! Một chi tiết mà tôi thực sự nên đề cập (xin lỗi!) Là cho mục đích của tôi, vì vậy chỉ tốt bằng . Tuy nhiên, mặc dù vậy, có rất nhiều ý tưởng rất hay ở đây có thể hữu ích cho phiên bản lớn ...k=Θ(n)O(n3k3)O(n6)k
GMB
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.