WikiDer > Покровное дерево
В Покровное дерево это тип структура данных в Информатика который специально разработан для ускорения поиск ближайшего соседа. Это усовершенствованная структура данных Navigating Net, связанная с множеством других структур данных, разработанных для индексации низкоразмерных данных.[1]
Дерево можно представить как иерархию уровней, на верхнем уровне которой находится корень. точка и нижний уровень, содержащий каждую точку в метрическом пространстве. Каждый уровень C связано с целым числом я это уменьшается на единицу по мере того, как дерево спускается. Каждый уровень C в дереве обложки имеет три важных свойства:
- Вложенность:
- Покрытие: За каждую точку , существует точка такое, что расстояние от к меньше или равно и ровно один такой является родителем .
- Разделение: По всем пунктам , расстояние от к больше, чем .
Сложность
найти
Как и другие метрические деревья дерево покрытия позволяет искать ближайшего соседа в где - константа, связанная с размерностью набора данных, а n - мощность. Для сравнения простой линейный поиск требует , что гораздо хуже зависит от . Однако в многомерном метрические пространства то Константа является нетривиальной, что означает, что ее нельзя игнорировать при анализе сложности. В отличие от других деревьев показателей, дерево покрытия имеет теоретическую границу своей константы, которая основана на параметрах набора данных. постоянная расширения или константа удвоения (в случае приблизительного поиска NN). Граница времени поиска составляет где - константа расширения набора данных.
Вставить
Хотя деревья покрытия обеспечивают более быстрый поиск, чем наивный подход, это преимущество необходимо сопоставить с дополнительными затратами на поддержание структуры данных. При наивном подходе добавление новой точки в набор данных тривиально, потому что порядок не нужно сохранять, но в дереве обложки это может занять время. Однако это верхний предел, и были реализованы некоторые методы, которые, кажется, улучшают производительность на практике.[2]
Космос
Дерево обложки использует неявное представление для отслеживания повторяющихся точек. Таким образом, для этого требуется только O (n) пространства.
Смотрите также
использованная литература
- Заметки
- ^ Кеннет Кларксон. Поиск ближайшего соседа и измерения метрического пространства. У Г. Шахнаровича, Т. Даррелла и П. Индик, редакторы, Методы ближайшего соседа для обучения и видения: теория и практика, страницы 15-59. MIT Press, 2006.
- ^ http://hunch.net/~jl/projects/cover_tree/cover_tree.html
- Список используемой литературы
- Алина Бейгельзимер, Шам Какаде и Джон Лэнгфорд. Прикрывайте деревья для ближайшего соседа. В Proc. Международная конференция по машинному обучению (ICML), 2006 г.
- Страница обложки JL. На странице Джона Лэнгфорда есть ссылки на документы и код.
- Реализация C ++ Cover Tree на GitHub.
- Реализация дерева обложек на Java.