Re: "Уточняющее прицеливание"
- From
- Michael Ryazanov (2:5030/1006.64)
- To
- Nickita A Startcev
- Date
- 2002-05-05T15:09Z
- Area
- RU.ALGORITHMS
▐┤E╚°' Nickita!
01.05 22:36 Nickita A Startcev, 2:5030/1039.8 -> All
NAS> Есть одномерный массив элементов (x,y,data), где x,y - координаты этого
NAS> псевдоточечного объекта. Диапазон в котором лежат координаты известен.
NAS> Можно ли найти ближайший к X0,Y0 объект быстрее, чем за o(n) ?
Память дополнительную можно использовать?
NAS> Есть ли решение более быстрое чем нижеприведенное?
NAS> 1) берем расстояние до первого объекта, запоминаем вместе с номером
NAS> объекта.
NAS> 2) перебираем подряд оставшиеся объекты, если попался более близкий -
NAS> 'перезапоминаем' расстояние и номер.
Если без дополнительной памяти, можно предложить некую оптимизацию (если объектов достаточно много и расположены они более-менее равномерно). Надо отсотрировать массив в лексикографическом порядке (x, y). Далее, двоичным (и т.п.) поиском находим элемент с x, ближайшим к X0, и бежим по массиву в обе стороны, ищя минимум расстояния. Когда |x[i] - X0| станет больше найденного минимального расстояния, дальше можно не искать.
Если можно использовать дополнительную память, то тут раздолье. :-) Сетку построить, деревья всякие-разные...
|V|uxau/\
--- -- - ·
* Origin: Ф И З Ф А К - Ч Е М П И О H ! (2:5030/1006.64)