26. Региональный поиск. Алгоритм с предобработкой. Оценки.

Задачи регионального поиска

Есть множество объектов и некоторая область.

1) Сколько объектов принадлежат области?

Предположим, есть n точек на плоскости. Область – прямоугольник со сторонами параллельными осям координат (условие параллельности необходимо, если область составлена из нескольких прямоугольников).

В общем случае данная задача решается за O(n).

Ном можно ускорить О(logn).

Выберем точку Р, тогда числом векторного доминирования I(P) называется количество точек, которые лежат левее и ниже точки Р.

Количество точек внутри прямоугольника вычисляется по формуле

К = I(P2)-I(P3)-I(P1)+I(P0)

Найдем область, где I(P) постоянно. Через каждую точку проводим вертикальную и горизонтальную прямые(время решения O(n^2)). Внутри одной ячейки I(P) постоянно. То есть для решения основной задачи необходимо заранее вычислить I(P) каждой ячейки и определенным образом их упорядочить.

Затем определяется принадлежность вершин прямоугольника(области) ячейкам методом бинарного поиска(деления пополам) за время О(logn). Находим по формуле число К.

Таким образом на предобработку требуется O(n^3), на обработку одного запроса О(logn). Если множество точек не меняется, а запросов много, то применяем этот метод.

Недостаток метода-объем памяти для хранения данных O(n^2).

Hosted by uCoz