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

From
Evgenij Masherov (2:5020/175.2)
To
Nickita A Startcev
Date
2002-05-06T08:37:27Z
Area
RU.ALGORITHMS
Wed May 01 2002 22:36, Nickita A Startcev wrote to All:



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

 NAS> Можно ли найти ближайший к X0,Y0 объект быстрее, чем за o(n) ?

 NAS> Есть ли решение более быстрое чем нижеприведенное?

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

0. Эта задача, практически в такой же постановке, описана у Кнута (т.3, п.
6.5)
1. Простейшее предлагаемое там решение - построить вспомогательный массив, в
котором ключом являются пары округленных значений (х,у), а по этому ключу
вызывается список точных значений (х,у), принадлежащих этому подклассу
(т.е. за О(1) находится от одной до четырех подкарт, а затем по каждой из них
делается линейгый поиск)
2. Более сложное предлагаемое там решение - бинарное дерево, причем узел его
соответствует паре (город, радиус), левая ссылка - города с расстоянием менее
радиуса, правая - более. (Уточнения к Кнуту...)

Евгений Машеров АКА СанитарЖеня

--- ifmail v.2.15dev5
 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)