Jump to content

М-дерево

В информатике , М-деревья — это древовидные структуры данных похожие на R-деревья и B-деревья . Он построен с использованием метрики и основан на неравенстве треугольника для запросов эффективного диапазона и k-ближайшего соседа (k-NN). Хотя М-деревья могут хорошо работать во многих условиях, дерево также может иметь большое перекрытие, и не существует четкой стратегии, как лучше всего избежать перекрытия. Кроме того, его можно использовать только для функций расстояния , которые удовлетворяют неравенству треугольника, в то время как многие расширенные функции несходства, используемые при поиске информации, этому не удовлетворяют. [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. разделения Алгоритм следующий:

Algorithm Insert
  Input: Node N of M-Tree MT, Entry 
  Output: A new instance of MT containing all entries in original MT plus 
  's routing objects or objects
  if N is not a leaf then
  {
       /* Look for entries that the new object fits into */
       let  be routing objects from 's set of routing objects  such that 
       if  is not empty then
       {
          /* If there are one or more entry, then look for an entry such that is closer to the new object */
          
       }
       else
       {
          /* If there are no such entry, then look for an object with minimal distance from */ 
          /* its covering radius's edge to the new object */
          
          /* Upgrade the new radii of the entry */
          
       }
       /* Continue inserting in the next level */
       return insert();
  else
  {
       /* If the node has capacity then just insert the new object */
       if N is not full then
       { store() }
       /* The node is at full capacity, then it is needed to do a new split in this level */
       else
       { split() }
  }
  • « ←» означает присвоение . Например, « самый большой элемент » означает, что значение самого большого изменяется на значение элемента .
  • « return » завершает алгоритм и выводит следующее значение.

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

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

Algorithm Split
  Input: Node N of M-Tree MT, Entry 
  Output: A new instance of MT containing a new partition.
  /* The new routing objects are now all those in the node plus the new routing object */
  let be NN entries of 
  if N is not the root then
  {
     /*Get the parent node and the parent routing object*/
     let  be the parent routing object of N
     let  be the parent node of N
  }
  /* This node will contain part of the objects of the node to be split */
  Create a new node N'
  /* Promote two routing objects from the node to be split, to be new routing objects */
  Create new objects  and .
  Promote()
  /* Choose which objects from the node being split will act as new routing objects */
  Partition()
  /* Store entries in each new routing object */
  Store 's entries in N and 's entries in N'
  if N is the current root then
  {
      /* Create a new node and set it as new root and store the new routing objects */
      Create a new root node 
      Store  and  in 
  }
  else
  {
      /* Now use the parent routing object to store one of the new objects */
      Replace entry  with entry  in 
      if  is no full then
      {
          /* The second routing object is stored in the parent only if it has free capacity */
          Store  in 
      }
      else
      {
           /*If there is no free capacity then split the level up*/
           split()
      }
  }
  • « ←» означает присвоение . Например, « самый большой элемент » означает, что значение самого большого изменяется на значение элемента .
  • « return » завершает алгоритм и выводит следующее значение.

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

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

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

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

Algorithm RangeSearch
Input: Node N of M-Tree MT,  Q: query object, : search radius
Output: all the DB objects such that 
{ 
  let  be the parent object of node N;

  if N is not a leaf then { 
    for each entry() in N do {
          if  then { 
            Compute ;
            if  then
              RangeSearch(*ptr()),Q,); 
          }
    }
  }
  else { 
    for each entry() in N do {
          if  then { 
            Compute ;
            if  then
              add  to the result;
          }
    }
  }
}
  • « ←» означает присвоение . Например, « самый большой элемент » означает, что значение самого большого изменяется на значение элемента .
  • « 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. Перейти обратно: Перейти обратно: а б П. Чачча; М. Пателла; Ф. Рабитти; П. Зезула. «Индексирование метрических пространств с помощью 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 дней с момента нарушения.)