Jump to content

М-дерево

В информатике , М-деревья — это древовидные структуры данных похожие на R-деревья и B-деревья . Он построен с использованием метрики и основан на неравенстве треугольника для запросов эффективного диапазона и k-ближайшего соседа (k-NN).Хотя M-деревья могут хорошо работать во многих условиях, дерево также может иметь большое перекрытие, и не существует четкой стратегии, как лучше всего избежать перекрытия. Кроме того, его можно использовать только для функций расстояния , которые удовлетворяют неравенству треугольника, в то время как многие расширенные функции несходства, используемые при поиске информации, этому не удовлетворяют. [1]

Обзор [ править ]

2D M-дерево, визуализируемое с помощью ELKI . Каждая синяя сфера (лист) содержится в красной сфере (узлах каталога). Листья перекрывают друг друга, но не слишком сильно; узлы каталогов здесь перекрываются гораздо сильнее.

Как и любая древовидная структура данных, М-дерево состоит из узлов и листьев. В каждом узле есть объект данных, который однозначно идентифицирует его, и указатель на поддерево, в котором находятся его дочерние элементы. Каждый лист имеет несколько объектов данных. Для каждого узла существует радиус который определяет шар в желаемом метрическом пространстве. Таким образом, каждый узел и лист находящийся в определенном узле находится на максимальном расстоянии от , и каждый узел и лист с родителем узла держитесь от него на расстоянии.

Построение М-дерева [ править ]

Компоненты [ править ]

М-дерево состоит из следующих компонентов и подкомпонентов:

  1. Нелистовые узлы
    1. Набор объектов маршрутизации N RO .
    2. Указатель на родительский объект Node Op .
  2. Листовые узлы
    1. Набор объектов N O .
    2. Указатель на родительский объект Node Op .
  3. Объект маршрутизации
    1. (Значение функции) объекта маршрутизации Или r .
    2. Радиус покрытия r(O r ).
    3. Указатель на покрывающее дерево T(O r ).
    4. Расстояние Or от родительского объекта d(O r , P(O r ))
  4. Объект
    1. (Значение признака) объекта O j .
    2. Идентификатор объекта oid(O j ).
    3. Расстояние O j от родительского объекта d(O j , P(O j ))

Вставить [ править ]

Основная идея состоит в том, чтобы сначала найти листовой узел N новый объект O. , которому принадлежит Если N не заполнено, просто присоедините его N. к Если N заполнено, вызовите метод для N. разделения Алгоритм следующий:

Алгоритм  Вставка  Вход: Узел  N  M-Tree  MT  ,  запись   Вывод: новый экземпляр  MT,  содержащий все записи исходного  MT  плюс 
  объекты маршрутизации или объекты   если   N  не лист  , то   {       /* Ищем записи, в которые помещается новый объект */        позволять  маршрутизировать объекты из 's набор объектов маршрутизации  такой, что        если     не пусто тогда        {          /* Если есть одна или несколько записей, ищем запись, которая находится ближе к новому объекту */                  }        еще        {          /* Если таких записей нет, то ищем объект на минимальном расстоянии от */           /* граница его радиуса покрытия до нового объекта */                     /* Обновляем новые радиусы входа */                  }       /* Продолжаем вставку на следующем уровне */        вернуть  вставку( );    еще   {       /* Если у узла есть емкость, просто вставьте новый объект */        если   N  не заполнено,  то        {  магазин( )  }       /* Узел загружен на полную мощность, значит необходимо сделать новое разделение на этом уровне */        еще        {  расколоть( )  }  } 
  • « ←» означает присвоение . Например, « самый большой элемент » означает, что значение самого большого изменяется на значение элемента .
  • « return » завершает алгоритм и выводит следующее значение.

Сплит [ править ]

Если метод разделения достигает корня дерева, он выбирает два объекта маршрутизации из N и создает два новых узла, содержащие все объекты из исходного N , и сохраняет их в новом корне. Если методы разделения достигают узла N, который не является корнем дерева, метод выбирает два новых объекта маршрутизации из N , переупорядочивает каждый объект маршрутизации в N в двух новых узлах. и и сохраните эти новые узлы в родительском узле оригинального Н. ​Разделение необходимо повторить, если не имеет достаточной емкости для хранения . Алгоритм следующий:

Алгоритм  Сплит  Вход: Узел  N  M-Tree  MT  ,  запись   Вывод: новый экземпляр  MT  , содержащий новый раздел. 
 /* Новые объекты маршрутизации теперь представляют собой все те, что находятся в узле, плюс новый объект маршрутизации */  пусть это будут  NN  записи   если   N  не является корнем  , то   {     /*Получаем родительский узел и родительский объект маршрутизации*/      позволять  быть родительским объектом маршрутизации  N,       пусть  быть родительским узлом  N   }  /* Этот узел будет содержать часть объектов узла, который нужно разделить */  Создайте новый узел  N'   /* Делаем два объекта маршрутизации из узла, который нужно разделить, новыми объектами маршрутизации */  Создавайте новые объекты  и .   Продвигать( )  /* Выбираем, какие объекты из разделяемого узла будут действовать как новые объекты маршрутизации */  Раздел( )  /* Сохраняем записи в каждом новом объекте маршрутизации */   Магазин записи в  N  и ' записи в  N'    , если   N  является текущим корнем  , то   {      /* Создайте новый узел, установите его как новый корень и сохраните новые объекты маршрутизации */       Создайте новый корневой узел       Магазин  и  в   }   еще   {      /* Теперь используем родительский объект маршрутизации для хранения одного из новых объектов */       Заменить запись  с записью  в       если     не полный тогда       {          /* Второй объект маршрутизации сохраняется в родительском объекте, только если у него есть свободная емкость */           Магазин  в       }       еще       {           /*Если свободной емкости нет, разделите уровень вверх*/            расколоть( )       }  } 
  • « ←» означает присвоение . Например, « самый большой элемент » означает, что значение самого большого изменяется на значение элемента .
  • « return » завершает алгоритм и выводит следующее значение.

Запросы M-дерева [ править ]

Запрос диапазона [ править ]

В запросе диапазона указывается минимальное значение сходства/максимального расстояния. Для данного объекта запроса и максимальное расстояние поиска запроса диапазона , диапазон (Q, r(Q)) выбирает все индексированные объекты такой, что . [2]

Алгоритм RangeSearch начинается с корневого узла и рекурсивно обходит все пути, которые нельзя исключить из числа ведущих к подходящим объектам.

Алгоритм  поиска диапазонаВходные данные: Узел  N  M-Tree MT,  Q  : объект запроса, : радиус поиска 
Вывод: все объекты БД  такие, что 
{    позволять   быть  родительским объектом узла  N  ;    если   N   не является  листом  , то  {      за каждую   запись  ( )  в   N   сделать  {           если   затем  {              Вычислить ;              если   затем                RangeSearch  (*ptr( ))  Q  , );            }    }  }   еще  {      за каждую   запись  ( )  в   N   сделать  {           если   затем  {              Вычислить ;              если   затем                добавь  к результату;           }    }  }} 
  • « ←» означает присвоение . Например, « самый большой элемент » означает, что значение самого большого изменяется на значение элемента .
  • « return » завершает алгоритм и выводит следующее значение.
  • — идентификатор объекта, который находится в отдельном файле данных.
  • является поддеревом – покрывающим деревом

k -NN запросы [ править ]

Запрос k -ближайшего соседа ( k -NN) принимает мощность входного набора в качестве входного параметра. Для данного объекта запроса Q ∈ D ицелое число k ≥ 1, запрос k -NN NN(Q, k) выбирает k индексированных объектов, которые имеют кратчайшее расстояние от Q в соответствии с функцией расстояния d. [2]

См. также [ править ]

Ссылки [ править ]

  1. ^ Чачча, Паоло; Пателла, Марко; Зезула, Павел (1997). «М-дерево: эффективный метод доступа для поиска по сходству в метрических пространствах» (PDF) . Материалы 23-й конференции VLDB, Афины, Греция, 1997 г. Исследовательский центр IBM в Альмадене: Very Large Databases Endowment Inc., стр. 426–435. р426 . Проверено 7 сентября 2010 г.
  2. ^ Jump up to: Перейти обратно: а б П. Чачча; М. Пателла; Ф. Рабитти; П. Зезула. «Индексирование метрических пространств с помощью M-дерева» (PDF) . Департамент компьютерных наук и инженерии . Болонский университет. п. 3 . Проверено 19 ноября 2013 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 0f5c814960203601f21f532c51c54cc2__1698730920
URL1:https://arc.ask3.ru/arc/aa/0f/c2/0f5c814960203601f21f532c51c54cc2.html
Заголовок, (Title) документа по адресу, URL1:
M-tree - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)