У чому різниця між деревом KD та деревом R?


81

Я подивився визначення KD-дерева та R-дерева. Мені здається, вони майже однакові.

Яка різниця між деревом KD та деревом R?

Відповіді:


60

R-дерева та k d-дерева базуються на схожих ідеях (розділення простору на основі вирівняних по осі областей), але ключові відмінності полягають у:

  • Вузли в k d-деревах представляють розділові площини, тоді як вузли в R-деревах представляють обмежувальні рамки.
  • k d-дерева розділяють весь простір на регіони, тоді як R-дерева розбивають лише підмножину простору, що містить цікаві точки.
  • k d-дерева представляють непересічний розділ (точки належать лише одній області), тоді як області в R-дереві можуть перекриватися.

(Є багато подібних типів деревних конструкцій для перегородки простору: квадрати, BSP-дерева, R * -дерева тощо).


106

Вони насправді зовсім різні. Вони служать подібним цілям (регіональні запити щодо просторових даних), і вони обидва є деревами (і обидва належать до сімейства обмежувальних індексів ієрархії томів), але це приблизно все, що у них спільне.

  • R-дерева збалансовані , kd-дерева - ні (якщо не завантажені навалом). Ось чому R-дерева є кращими для зміни даних, оскільки kd-дерева, можливо, доведеться перебудувати для повторної оптимізації.
  • R-дерева орієнтовані на диск . Вони фактично впорядковують дані в областях, які безпосередньо відображаються на представлення на диску. Це робить їх більш корисними в реальних базах даних та для роботи поза пам'яттю. kd-дерева орієнтовані на пам'ять і нетривіальні для розміщення на сторінках диска
  • kd-дерева елегантні при масовому завантаженні (слава SingleNegationElimination, щоб вказати на це), тоді як R-дерева краще змінюють дані (хоча вони отримують вигоду від масового завантаження при використанні зі статичними даними).
  • R-Trees не охоплюють весь простір даних. Порожні ділянки можуть бути відкриті. kd-дерева завжди покривають весь простір.
  • kd-дерева двійково розділяють простір даних, R-дерева розділяють дані на прямокутники . Двійкові розщеплення, очевидно, не перетинаються; в той час як прямокутники дерева R можуть перекриватися (що насправді іноді добре, хоча намагається мінімізувати перекриття)
  • kd-дерева набагато легше впровадити в пам'ять, що насправді є їх ключовою перевагою
  • R-дерева можуть зберігати прямокутники та багатокутники , kd-дерева зберігають лише точкові вектори (оскільки для багатокутників потрібне перекриття)
  • R-дерева поставляються з різними стратегіями оптимізації, різними розділеннями, масовими завантажувачами, стратегіями вставки та повторної вставки тощо.
  • kd-дерева використовують одновимірну відстань до розділюючої гіперплощини як пов'язану; R-дерева використовують d-мірну мінімальну відстань до обмежуючого гіперпрямокутника для обмеження (вони також можуть використовувати максимальну відстань для деяких запитів підрахунку, щоб відфільтрувати справжні позитиви).
  • kd-дерева підтримують квадратну евклідову відстань та норми Мінковського, тоді як Rreees також підтримують геодезичну відстань (для знаходження поблизу точок на геоданих).

37

Основна різниця між двома, не згаданими у цій відповіді, полягає в тому, що дерева KD ефективні лише в ситуаціях масового завантаження. Після побудови, модифікація або перебалансування дерева KD є нетривіальним. R-дерева не страждають від цього.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.