Входные данные: набор из точек в и целое число .
Выход: наименьший ограничивающий прямоугольник, выровненный по оси объема, который содержит не менее из этих точек.
Мне интересно, если какие-либо алгоритмы известны для этой проблемы. Лучшее, что я мог придумать, было время , примерно следующее: грубая сила по всем возможным верхним и нижним границам для двух из трех измерений; для каждого из этих возможности, можно решить соответствующую - мерный вариант задачи в времени с использованием алгоритма скользящего окна.
cg.comp-geom
GMB
источник
источник
Ответы:
Для точек есть пустых ящиков, см. Введение к этой статье http://www.cs.uwm.edu/faculty/ad/maximal.pdf . Можно вычислить эти блоки примерно за это время (см. Введение для ссылок).n O(n3)
Для вашей задачи возьмите случайную выборку точек, где каждая точка выбрана с портативностью . Такая случайная выборка имеет размер (в ожидании) [и ради противоречия предположим, что это так]. Имеется пустых ящиков с точками из на их сторонах, как указано выше. Для каждого такого блока используйте структуру данных поиска с ортогональным диапазоном, чтобы вычислить, сколько именно точек оно содержит. Повторите этот процесс раз. С большой вероятностью одна из пробных коробок является желаемой.1/k n/k O((n/k)3) R O(k6logn)
В целом, время выполнения этого .O((n/k)3∗k6∗polylogn)=O(n3k3logO(1)n)
Чтобы понять, почему это работает, рассмотрим оптимальную коробку. На его границе 6 точек P. Вероятность того, что случайная выборка выберет эти шесть точек, и ни одна из точек внутри прямоугольника, равна по крайней мере . Таким образом, если вы повторите процесс раз, с высокой вероятностью одна из случайных выборок вызовет желаемое поле как пустое поле.1k6(1−1/k)k−6≈1/k6=p O((1/p)logn)
Поскольку ограничено числом пустых ящиков (см. Введение в приведенной выше статье для соответствующих ссылок), маловероятно, что возможен значительно более быстрый алгоритм.Θ(n3)
[В ссылке, которую я дал, они упоминают, что [17] предоставляет алгоритм, который перечисляет все максимально пустые поля среди точки в 3d за времени, который является черным ящиком, который вам нужен для вышеупомянутого .]O(n3log2n)
источник