Покровное дерево
Дерево покрытий — это тип структуры данных в информатике , специально разработанный для ускорения поиска ближайшего соседа . Это усовершенствованная структура данных Navigating Net, связанная с множеством других структур данных, разработанных для индексации данных низкой размерности. [1]
Дерево можно рассматривать как иерархию уровней, где верхний уровень содержит корневую точку , а нижний уровень содержит каждую точку метрического пространства. Каждый уровень C связан с целочисленным значением i , которое уменьшается на единицу по мере спуска по дереву. Каждый уровень C в дереве покрытий имеет три важных свойства:
- Вложенность:
- Покрытие: Для каждой точки , существует точка такое, что расстояние от к меньше или равно и ровно один такой является родителем .
- Разделение: По всем точкам , расстояние от к больше, чем .
Сложность [ править ]
Найти [ править ]
Как и другие деревья метрик, дерево покрытий позволяет осуществлять поиск ближайших соседей. где — константа, связанная с размерностью набора данных, а n — мощность. Для сравнения базовый линейный поиск требует , что является гораздо худшей зависимостью от . Однако в многомерных метрических пространствах константа нетривиальна, а это значит, что ее нельзя игнорировать при анализе сложности. В отличие от других метрических деревьев, дерево покрытий имеет теоретическую границу своей константы, основанную на константе расширения набора данных или константе удвоения (в случае приближенного поиска NN). Ограничение времени поиска составляет где — константа расширения набора данных.
Вставить [ править ]
Хотя деревья покрытий обеспечивают более быстрый поиск, чем наивный подход, это преимущество необходимо сопоставлять с дополнительными затратами на поддержание структуры данных. При простом подходе добавление новой точки в набор данных тривиально, поскольку не требуется сохранять порядок, но в дереве покрытия это может занять время. Однако это верхний предел, и были реализованы некоторые методы, которые, похоже, улучшают производительность на практике. [2]
Космос [ править ]
Дерево покрытия использует неявное представление для отслеживания повторяющихся точек. Таким образом, для этого требуется только пространство O(n).
См. также [ править ]
Ссылки [ править ]
- Примечания
- ^ Кеннет Кларксон. Поиск ближайших соседей и размерность метрического пространства. В Г. Шахнаровиче, Т. Даррелле и П. Индике , редакторах, «Методы ближайшего соседа для обучения и видения: теория и практика», страницы 15–59. МИТ Пресс, 2006.
- ^ «Покровное дерево» .
- Библиография
- Алина Бейгельзимер, Шам Какаде и Джон Лэнгфорд. Обложка деревьев для ближайшего соседа. В Proc. Международная конференция по машинному обучению (ICML), 2006 г.
- Страница дерева обложек JL . Страница Джона Лэнгфорда ссылается на документы и код.
- Реализация C++ Cover Tree на GitHub .
- Реализация дерева покрытий на Java.