Существует ли какой-либо (эффективный) алгоритм для выбора поднабора из точек из набора из точек ( ), чтобы они «покрывали» большую часть области (по всем возможным подмножествам размера )?
Я предполагаю, что точки находятся в 2D плоскости.
Наивный алгоритм прост, но непомерен с точки зрения временной сложности:
for each subset of N points
sum distance between each pair of points in the subset
remember subset with the maximum sum
Я ищу более эффективный или даже приблизительный метод.
Пример, вот плоскость с некоторыми случайными точками в ней:
Для я ожидаю выбора точек, подобных этим:
Обратите внимание, что выбранные точки (красные) разбросаны по всей плоскости.
Я нашел статью « Эффективный выбор пространственно распределенных ключевых точек для визуального отслеживания », которая связана с этой проблемой. Однако это предполагает, что баллы взвешены.
Ответы:
Вот примерное решение. Поскольку N так велико, а M так мало, как насчет следующего:
Интуиция в этом заключается в том, что, поскольку N >> M , и вы хотите, чтобы точки были как можно дальше друг от друга, они, вероятно, будут близки к краям данных, поэтому вы могли бы также начать с корпуса, а затем итеративно пробейся оттуда.
Также, начиная с корпуса, вы уменьшаете начальный поиск с N до N 1/2 .
ОБНОВИТЬ
Если шаги 3 и 4, описанные выше, занимают слишком много времени (поскольку вы итеративно тестируете внутреннюю часть своего набора данных), мне пришло в голову еще две идеи, чтобы ускорить вашу проблему.
источник
Если мы хотим избежать преобладающего выбора точек на периферии, другая цель может оказаться полезной. Максимизация минимального расстояния между точками является таким критерием. Связанные проблемы обсуждались в StackOverflow , Computer Science SE , Math.SE и MathOverflow .
источник
Итак, вы хотите выбрать M точек из заданного набора из N точек на евклидовой плоскости, чтобы сумма парных расстояний выбранных точек была максимальной, верно?
Стандартный алгоритм локального поиска довольно быстрый и предлагает довольно хорошее приближение. Время выполнения является линейным по N и квадратичным по M. Его отношение аппроксимации составляет 1 - 4 / M. Это означает, что отношение становится лучше с ростом М. Например, для M = 10 он получает оптимальное значение в 60%, а для M = 50 - оптимальное значение в 92%.
Алгоритм работает также для евклидовых пространств общей размерности. В этом случае проблема NP-трудна. Но в самолете неизвестно, является ли он NP-сложным.
Источник этой статьи . Надеюсь это поможет! Бест, Альфонсо
источник
Одним из решений является:
Сделайте M искусственно распределенными точками внутри этого ограничивающего прямоугольника, некоторые M сложнее, чем другие. В вашем случае четыре в углах прямоугольника и один в центре
источник