~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 4AE8C650B7829336BD21DDC81DB3E0BE__1673760660 ✰
Заголовок документа оригинал.:
✰ BK-tree - Wikipedia ✰
Заголовок документа перевод.:
✰ БК-дерево — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/BK-tree ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/4a/be/4ae8c650b7829336bd21ddc81db3e0be.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/4a/be/4ae8c650b7829336bd21ddc81db3e0be__translat.html ✰
Дата и время сохранения документа:
✰ 02.07.2024 03:54:50 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 15 January 2023, at 08:31 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

БК-дерево — Википедия 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
Номер скриншота №: 4AE8C650B7829336BD21DDC81DB3E0BE__1673760660
URL1:https://en.wikipedia.org/wiki/BK-tree
Заголовок, (Title) документа по адресу, URL1:
BK-tree - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)