Ближайший сосед в Postgis
Подход Postgis заключается в использовании R-деревьев с пользовательским алгоритмом поиска.Спускаясь по дереву, как в обычном запросе, они отслеживают минимальное и максимальное расстояние до объектов в ограничивающих областях, с которыми они сталкиваются в дереве.Каждая встреченная ветвь дерева добавляется в список активных ветвей ( ABL ), который сокращается с использованием метрик расстояния.
Они выбирают ограничивающую область ветви в ABL и применяют алгоритм рекурсивно.На листе (объект, похожий на отрезок) он обновляет переменную ближайшие .При возвращении из рекурсии они применяют переменную ближайшие для дополнительного сокращения ABL , повторяя, пока ABL не станет пустым.
Теоретический наихудший случай - линейный для запроса, но на практике он дает гораздо лучшие результаты.