"Уточняющее прицеливание"

From
Nickita A Startcev (2:5030/1039.8)
To
Michael Ryazanov
Date
2002-05-06T03:45:48Z
Area
RU.ALGORITHMS
Привет, Michael !


 05 May 02 , 15:09  Michael Ryazanov писал к Nickita A Startcev:

 NAS>> Есть одномерный массив элементов (x,y,data), где x,y -
 NAS>> координаты этого псевдоточечного объекта. Диапазон в котором
 NAS>> лежат координаты известен. Можно ли найти ближайший к X0,Y0
 NAS>> объект быстрее, чем за o(n) ?

 MR>    Память дополнительную можно использовать?

Да. Задача практическая, точек от 10  до 100 0000.

 NAS>> Есть ли решение более быстрое чем нижеприведенное?
 NAS>> 1) берем расстояние до первого объекта, запоминаем вместе с
 NAS>> номером объекта. 2) перебираем подряд оставшиеся объекты, если
 NAS>> попался более близкий - 'перезапоминаем' расстояние и номер.

 MR>    Если без дополнительной памяти, можно предложить некую оптимизацию
 MR> (если объектов достаточно много и расположены они более-менее
 MR> равномерно).

Не всегда, но как правило.
Пишу некоторый генератор карт 'звуздного неба' и выдачу информации по ближайшему к курсору мыши объекту.

 MR> Надо отсотрировать массив в лексикографическом порядке

Интересная идея. Попробую.

 MR> (x, y). Далее, двоичным (и т.п.) поиском находим элемент с x,
 MR> ближайшим к X0, и бежим по массиву в обе стороны, ищя минимум
 MR> расстояния. Когда |x[i] - X0| станет больше найденного минимального
 MR> расстояния, дальше можно не искать.
 MR>    Если можно использовать дополнительную память, то тут раздолье. :-)

Можно. :)

 MR> Сетку построить, деревья всякие-разные...

Какую именно сетку? Какие именно деревья?

PS: А норма abs(x2-x1)+abs(y2-y1) намного хуже стандартной геометрической или нет? :)
.                                                С уважением, Никита.
... "Начальники и некоторые другие невротизированные люди"
--- GoldED+/LNX 1.1.4.7
 * Origin: Люди Билли не любили... (c) (2:5030/1039.8)