В настоящее время я работаю над проблемой оптимизации, которая требует нахождения всех точек, превышающих (или в некоторых случаях меньше) конкретную точку во всех кардинальных направлениях. Например, в 2D, мне может потребоваться найти все точки, которые удовлетворяют условию:
x > x* and y < y*
for an arbitrary point (x*,y*)
(например, если синяя точка на графике ниже (x *, y *), мне нужны все точки в поле, определяемом синими пунктирными линиями).
Примечание. Мне нужно, чтобы это была N-мерная структура/поиск, так как моя фактическая проблема оптимизации имеет более двух целей, которые необходимо решить. Типичное пространство поиска будет порядка 1000-5000 точек и будет иметь от 2 до 5 измерений.
Есть ли какая-либо конкретная структура данных, хорошо подходящая для этой цели? Раньше я использовал kd-деревья для поиска ближайших соседей и всех точек в радиусе, однако в этом случае мне нужен направленный поиск. Похоже, что какая-то форма R-Tree может сделать трюк, где мой прямоугольник поиска будет идти от x *, y * до некоторых в значительной степени положительных и в значительной степени отрицательных значений соответственно. Есть ли лучшая структура данных, характерная для такого рода поиска?