Jump to content

БК-дерево

(Перенаправлено из дерева Бк )

BK -дерево — это метрическое дерево, предложенное Уолтером Остином Буркхардом и Робертом М. Келлером. [1] специально адаптирован к дискретным метрическим пространствам .Для простоты рассмотрим целочисленную дискретную метрику . Тогда BK-дерево определяется следующим образом. произвольный элемент a В качестве корневого узла выбирается . Корневой узел может иметь ноль или более поддеревьев. k поддерево рекурсивно строится из всех элементов b таких, что . BK-деревья можно использовать для приблизительного сопоставления строк в словаре. [2] [ нужен пример ]

Пример БК-дерева

На этой картинке изображено БК-дерево для набора. слов {"книга", "книги", "торт", "бу", "благо", "повар", "торт", "накидка", "телега"}, полученных с помощью расстояния Левенштейна

  • каждый узел помечается строкой ;
  • каждая дуга помечен где обозначает слово, присвоенное .

БК-дерево строится так, что:

  • для всех узлов в BK-дереве веса, присвоенные его выходным дугам, различны;
  • для всех дуг помечены , каждый потомок из удовлетворяет следующему уравнению: :
    • Пример 1. Рассмотрим дугу от «книги» к «книгам». Расстояние между словом "книга" и любым словом в {"books", "boo", "boon", "cook"} равно 1;
    • Пример 2. Рассмотрим дугу от «книг» до «бу». Расстояние между словом «books» и любым словом в { «boo», «boon», «cook»} равно 2.

Примитив вставки используется для заполнения BK-дерева. по дискретной метрике .

Вход:

  • : БК-дерево;
    • обозначает вес, присвоенный дуге ;
    • обозначает слово, присвоенное узлу );
  • : дискретная метрика, используемая (например, расстояние Левенштейна );
  • : элемент, в который нужно вставить ;

Выход:

  • Узел соответствующий

Алгоритм:

  • Если пусто:
    • Создать корневой узел в
    • Возвращаться
  • Набор в корень
  • Пока существует:
    • Если :
      • Возвращаться
    • Находить ребенок такой, что
    • Если не найден:
      • Создайте узел
      • Создайте дугу
      • Возвращаться

Учитывая искомый элемент , примитив поиска обходит BK-дерево, чтобы найти ближайший элемент . Основная идея – ограничить исследование к узлам, которые могут улучшить только лучшего кандидата, найденного на данный момент, используя преимущества организации BK-дерева и неравенства треугольника (критерий отсечения).

Вход:

  • : БК-дерево;
  • : соответствующая дискретная метрика (например, расстояние Левенштейна );
  • : искомый элемент;
  • : максимально допустимое расстояние между лучшим совпадением и , по умолчанию ;

Выход:

  • : ближайший элемент к хранится в и согласно или если не найден;

Алгоритм:

  • Если пусто:
    • Возвращаться
  • Создавать набор узлов для обработки и вставьте корень в .
  • Пока :
    • Вытолкнуть произвольный узел от
    • Если :
    • Для каждой выходной дуги :
      • Если : (критерий отсечения)
        • Вставлять в .
  • Возвращаться

Пример алгоритма поиска

[ редактировать ]

Рассмотрим пример 8-узлового дерева BK, показанный выше, и установите "прохладный". инициализируется как содержащий корень дерева, который впоследствии извлекается как первое значение с = «книга». Дальше так как расстояние от «книги» до «круто» равно 2, а поскольку это лучшее (то есть наименьшее) расстояние, найденное на данный момент. Далее поочередно рассматривается каждая исходящая от корня дуга: дуга от «книги» к «книгам» имеет вес 1, и так как меньше, чем , узел, содержащий «книги», вставляется в для дальнейшей обработки. Следующая дуга, от «книги» до «торта», имеет вес 4, и поскольку не меньше, чем , узел, содержащий "торт", не вставляется в . Таким образом, поддерево с корнем «торт» будет исключено из поиска, поскольку слово, наиболее близкое к «крутому», не может появиться в этом поддереве. Чтобы понять, почему такая обрезка правильна, обратите внимание, что слово-кандидат появление в поддереве «торта» с расстоянием менее 2 до «крутого» нарушит неравенство треугольника: неравенство треугольника требует, чтобы для этого набора из трех чисел (как сторон треугольника) никакие два не могли в сумме давать меньше третьего. , но здесь расстояние от "крутого" до "книжного" (а это 2) плюс расстояние от "крутого" до "книжного" (которое меньше 2) не может достичь или превысить расстояние от «книги» до «торта» (которое равно 4). Поэтому можно смело игнорировать все поддерево, основанное на «торте».

Затем извлекается узел, содержащий «книги». и сейчас , расстояние от «крутого» до «книги». Как , остается установленным на 2, и рассматривается единственная исходящая дуга из узла, содержащего «книги». Затем узел, содержащий «boo», извлекается из и , расстояние от «круто» до «бу». Это опять же не улучшает . Теперь учитывается каждая исходящая дуга от «бу»; дуга от «бу» до «благо» имеет вес 1, и поскольку , к слову добавляется «благо» . Аналогично, поскольку , к слову "повар" также добавляется .

Наконец, каждый из двух последних элементов в рассматриваются в произвольном порядке: предположим, что узел, содержащий слово «cook», извлекается первым, что улучшает на расстояние 1, то последним вытаскивается узел, содержащий «благо», который находится на расстоянии 2 от «крутого» и, следовательно, не улучшает лучший результат. Наконец, в качестве ответа возвращается «повар». с .

См. также

[ редактировать ]
[ редактировать ]
  • Реализация BK-дерева в Common Lisp с результатами тестов и графиками производительности.
  • Объяснение BK-деревьев и их связи с метрическими пространствами [3]
  • Объяснение BK-деревьев с реализацией на C# [4]
  • Реализация BK-дерева в Lua [5]
  • Реализация BK-дерева в Python [6]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 4d9669cc8017441992448f1d8b38677e__1673760660
URL1:https://arc.ask3.ru/arc/aa/4d/7e/4d9669cc8017441992448f1d8b38677e.html
Заголовок, (Title) документа по адресу, URL1:
BK-tree - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)