Задача поиска двух ближайших точек из данного набора может быть решена с помощью стратегии "разделяй и властвуй" за время
. Описание этого алгоритма (на английском) можно поглядеть
здесь (pdf).
Ключевой момент алгоритма состоит в том, что на прямоугольнике
можно расположить не более 6 точек так, чтобы расстояние между любыми двумя из них не превышало
. Поэтому в отсортированном массиве точек проверяются расстояния от каждой точки только до пяти последующих.
Но расположить шесть точек можно лишь единственным образом:
вот так. И в этом случае минимальное расстояние между точками будет в точности равно
. Но ведь
определена как минимальное найденное на данный момент расстояние. Следовательно, нам нужно искать лишь расстояния, строго меньшие, чем
. Значит, в алгоритме достаточно проверять не далее четырёх точек от текущей.
Я прав? Если нет, то где ошибка? Если да, то почему везде в Интернете предлагают проверять 5 (а то и даже 7) точек?