Дерево обложки - это тип структуры данных в информатике, которая специально разработана для ускорения поиска ближайшего соседа. Это усовершенствованная структура данных Navigating Net, связанная с множеством других структур данных, разработанных для индексации низкоразмерных данных.
Дерево можно рассматривать как иерархию уровней с верхним уровнем содержащий корневую точку и нижний уровень, содержащий каждую точку в метрическом пространстве. Каждый уровень C связан с целочисленным значением i, которое уменьшается на единицу по мере спуска дерева. Каждый уровень C в дереве обложки имеет три важных свойства:
Как и другие деревья показателей, дерево покрытия позволяет выполнять поиск ближайшего соседа в где - константа, связанная с размерностью набор данных, а n - мощность. Для сравнения, базовый линейный поиск требует , что гораздо хуже зависит от . Однако в многомерных метрических пространствах константа нетривиальна, что означает, что ее нельзя игнорировать при анализе сложности. В отличие от других деревьев показателей, дерево покрытия имеет теоретическую границу своей константы, которая основана на константе расширения набора данных или константе удвоения (в случае приблизительного извлечения NN). Граница времени поиска: где - константа расширения набора данных.
Хотя покровные деревья обеспечивают более быстрый поиск, чем наивный подход, это преимущество необходимо сопоставить с дополнительными затратами на поддержание структуры данных. При наивном подходе добавление новой точки в набор данных тривиально, потому что порядок не нужно сохранять, но в дереве обложки это может занять время. Однако это верхняя граница, и были реализованы некоторые методы, которые, кажется, улучшают производительность на практике.
Покровное дерево использует неявное представление для отслеживания повторяющихся точек. Таким образом, для этого требуется всего O (n) пространства.