Я новичок в кодировании, и сегодня я выполнил тривиальное решение проблемы ближайшей пары в двумерном пространстве. (2 для циклов)
Однако я отказался от поиска любого решения, которое могло бы сделать это в O (n log n). Даже после исследования я все еще не понимаю, как это может быть быстрее, чем тривиальный метод.
Что я понимаю: -> Сначала мы разбиваем массив на 2 половины и сортируем все только с учетом координат X , Это можно сделать в n log n.
Далее идут рекурсивные вызовы, которые «находят две точки с наименьшим расстоянием» в каждой половине. Но как это сделать точно ниже O (n ^ 2)? В моем понимании невозможно найти наименьшее расстояние между N / 2 точками без проверки каждой из них.
В 1-D есть решение, которое для меня абсолютно логично. После сортировки мы знаем, что расстояние между двумя несмежными точками не может быть меньше расстояния не менее двух смежных точек. Однако это не так для двумерного пространства, так как у нас есть дополнительная координата Y, которая может привести к наименьшему расстоянию между двумя точками, не смежными по оси X.