Поиск диапазона
В информатике состоит проблема поиска диапазона из обработки набора S объектов, чтобы определить, какие объекты из S пересекаются с объектом запроса, называемым диапазоном . Например, если S — набор точек, соответствующих координатам нескольких городов, найдите подмножество городов в заданном диапазоне широт и долгот .
Проблема поиска диапазона и структуры данных , которые ее решают, являются фундаментальной темой вычислительной геометрии . Приложения проблемы возникают в таких областях, как географические информационные системы (ГИС), системы автоматизированного проектирования (САПР) и базы данных .
Вариации [ править ]
Существует несколько вариантов проблемы, и для разных вариантов могут потребоваться разные структуры данных. [1] Для получения эффективного решения необходимо указать несколько аспектов проблемы:
- Типы объектов: Алгоритмы зависят от того, состоит ли S из точек , линий , отрезков линий , прямоугольников , многоугольников .... Самыми простыми и наиболее изученными объектами для поиска являются точки.
- Типы диапазонов. Диапазоны запроса также необходимо выбирать из заранее определенного набора. Некоторые хорошо изученные наборы диапазонов и названия соответствующих задач — это прямоугольники, выровненные по осям (поиск ортогонального диапазона), симплексы , полупространства и сферы / круги .
- Типы запросов. Если необходимо сообщить список всех объектов, пересекающих диапазон запроса, проблема называется отчетом о диапазоне , а запрос называется запросом отчета . Иногда требуется только количество объектов, пересекающих диапазон. В этом случае задача называется подсчетом диапазона , а запрос называется подсчетным запросом . Запрос на пустоту сообщает, существует ли хотя бы один объект, пересекающий диапазон. В полугрупповом варианте полугруппа коммутативная . ( S указывается ,+), каждой точке присваивается вес из S и требуется сообщить полугрупповую сумму весов точек, пересекающих диапазон
- Поиск в динамическом диапазоне и поиск в статическом диапазоне: в статических настройках набор S известен заранее. При динамической настройке объекты могут быть вставлены или удалены между запросами.
- Автономный поиск по диапазону: заранее известен как набор объектов, так и весь набор запросов.
Структуры данных [ править ]
Поиск ортогонального диапазона [ править ]
При поиске ортогонального диапазона набор S состоит из указывает на измерения, а запрос состоит из интервалов в каждом из этих измерений. Таким образом, запрос состоит из многомерного прямоугольника, выровненного по оси . С выходным размером , Джон Бентли использовал дерево kd для достижения (в нотации Big O ) пространство и время запроса. [2] Бентли также предложил использовать деревья диапазонов , что позволило сократить время запроса. но увеличилось пространство для . [3] Дэн Уиллард использовал нисходящие указатели — особый случай дробного каскадирования, чтобы еще больше сократить время запроса. . [4]
Хотя вышеуказанные результаты были достигнуты в модели указателя , дальнейшие улучшения были сделаны в словном ОЗУ модели вычислений в в малых размерностях (2D, 3D, 4D). Бернар Шазель использовал сжатие деревьев диапазонов для достижения время запроса и место для подсчета дальности. [5] Джозеф ДжаДжа и другие позже улучшили время запроса до для подсчета диапазона, который соответствует нижней границе и, таким образом, является асимптотически оптимальным . [6]
По состоянию на 2015 год лучшие результаты (в малых измерениях (2D, 3D, 4D)) для отчетов о диапазонах, найденные Тимоти М. Чаном , Каспером Ларсеном и Михаем Патрашку , также с использованием сжатых деревьев диапазонов в модели вычислений Word RAM: одно из следующих: [7]
- космос, время запроса
- космос, время запроса
- космос, время запроса
В ортогональном случае, если одна из границ равна бесконечности , запрос называется трёхсторонним. Если две границы бесконечны, запрос является двусторонним, а если ни одна из границ не бесконечна, то запрос является четырехсторонним.
Поиск в динамическом диапазоне [ править ]
В то время как при поиске в статическом диапазоне набор S известен заранее, поиск в динамическом диапазоне, вставка и удаление точек разрешены. В инкрементной версии проблемы разрешены только вставки, тогда как в декрементной версии разрешены только удаления. Для ортогонального случая Курт Мельхорн и Стефан Нэхер создали структуру данных для поиска в динамическом диапазоне, которая использует динамическое дробное каскадирование для достижения пространство и время запроса. [8] Как инкрементные, так и декрементные версии проблемы могут быть решены с помощью время запроса, но неизвестно, можно ли выполнить общий поиск в динамическом диапазоне за это время запроса.
Поиск цветового диапазона [ править ]
Задача подсчета цветных диапазонов рассматривает случай, когда точки имеют категориальные атрибуты. Если категории рассматриваются как цвета точек в геометрическом пространстве, то запрос заключается в том, сколько цветов встречается в определенном диапазоне. Просенджит Гупта и другие описали структуру данных в 1995 году, которая позволяла решать двумерный подсчет ортогональных цветных диапазонов в пространство и время запроса. [9]
Приложения [ править ]
Помимо рассмотрения в вычислительной геометрии , поиске диапазона и, в частности, поиске ортогонального диапазона, он имеет приложения для запросов диапазона в базах данных . Поиск по цветовому диапазону также используется и мотивируется поиском по категориальным данным. Например, определение строк в базе данных банковских счетов, которые представляют людей в возрасте от 25 до 40 лет и имеющих от 10 000 до 20 000 долларов США, может быть проблемой отчетности по ортогональному диапазону, где возраст и деньги являются двумя измерениями.
См. также [ править ]
Ссылки [ править ]
- ^ Агарвал, ПК ; Эриксон, Дж. (1999), «Поиск геометрического диапазона и его родственники» , в Шазель, Бернар ; Гудман, Джейкоб ; Поллак, Ричард (ред.), Достижения в дискретной и вычислительной геометрии: материалы совместной летней исследовательской конференции AMS-IMS-SIAM 1996 г. «Дискретная и вычислительная геометрия - десять лет спустя», 14-18 июля 1996 г., Колледж Маунт-Холиок , Современная математика, вып. 223, Издательство Американского математического общества, стр. 1–56.
- ^ Бентли, Джон (1975). «Многомерные двоичные деревья поиска, используемые для ассоциативного поиска» . Коммуникации АКМ . 18 (9): 509–517. дои : 10.1145/361002.361007 . S2CID 13091446 .
- ^ Бентли, Джон (1980). «Многомерный принцип «разделяй и властвуй» . Коммуникации АКМ . 23 (4): 214–229. дои : 10.1145/358841.358850 . S2CID 3997186 .
- ^ Уиллард, Дэн (1985). «Новые структуры данных для запросов ортогональных диапазонов». SIAM Journal по вычислительной технике . 14 (1): 232–253. дои : 10.1137/0214019 .
- ^ Шазель, Бернар (1988). «Функциональный подход к структурам данных и его использование в многомерном поиске». SIAM Journal по вычислительной технике . 17 (3): 427–462. CiteSeerX 10.1.1.133.9153 . дои : 10.1137/0217026 .
- ^ ДжаДжа, Джозеф; Мортенсен, Кристиан; Ши, Цинминь (2005). «Экономичные и быстрые алгоритмы для многомерного отчета и подсчета доминирования». Международный симпозиум по алгоритмам и вычислениям : 558–568.
- ^ Чан, Тимоти ; Ларсен, Каспер; Патрашку, Михай (2011). «Поиск ортогонального диапазона в оперативной памяти, еще раз». Симпозиум по вычислительной геометрии : 1–10. arXiv : 1103.5510 .
- ^ Мельхорн, Курт ; Нэхер, Стефан (1990). «Динамический дробный каскад» (PDF) . Алгоритмика . 5 (2): 215–241. дои : 10.1007/BF01840386 . S2CID 7721690 .
- ^ Гупта, Просенджит; Джанардан, Рави; Смид, Мишель (1995). «Дальнейшие результаты по обобщенным задачам поиска пересечений: подсчет, отчетность и динамизация». Журнал алгоритмов . 19 (2): 282–317. дои : 10.1006/jagm.1995.1038 . hdl : 11858/00-001M-0000-0014-B721-F .
Дальнейшее чтение [ править ]
- де Берг, Марк; ван Кревелд, Марк; Овермарс, Марк ; Шварцкопф, Отфрид (2000), Вычислительная геометрия (2-е изд.), Берлин: Springer-Verlag, ISBN 3-540-65620-0
- Матушек, Иржи (1994), «Поиск геометрического диапазона» , ACM Computing Surveys , 26 (4): 421–461, doi : 10.1145/197405.197408 , S2CID 17729301 .