Найближча сусідська структура даних для неєвклідового простору конфігурації


15

Я намагаюся реалізувати структуру найближчого сусіда для використання в планувальнику руху RRT. Для того, щоб зробити краще, ніж лінійний брутальний пошук найближчого сусіда, я хотів би реалізувати щось на кшталт kd-дерева. Однак, схоже, що класична реалізація дерева kd передбачає, що кожен вимір простору можна розділити на "лівий" і "правий". Це поняття, схоже, не стосується, наприклад, неєвклідових просторів, таких як SO (2).

Я працюю з рукою послідовного маніпулятора з повністю обертовими зв'язками, тобто кожен вимір простору конфігурації робота є SO (2), а отже, не євклідовим. Чи можна змінити алгоритм kd-tree для обробки таких типів підпросторів? Якщо ні, чи існує інша структура найближчого сусіда, яка може обробляти ці неєвклідові підпростори, одночасно просте оновлення та запит? Я також подивився на FLANN , але з їх документації мені не було зрозуміло, чи можуть вони обробляти неєвклідові підпростори.


До речі, приблизні найближчі сусіди теж добре (навіть кращі, якщо швидкість значна)
giogadi

1
Хоча ви прийняли чудову відповідь, зазвичай корисно почекати кілька днів, перш ніж приймати відповідь, щоб не відмовляти від подальших відповідей, які можуть запропонувати інші варіанти.
Марк Бут

Дякую Марку, я насправді не знав, як довго чекати, перш ніж приймати відповідь.
giogadi

Відповіді:


6

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

Класична робота - на бальних деревах , які потім були узагальнені на метричні дерева .

Існує якась нова робота під назвою покриття дерев, яка навіть має код GPL'ed. Я хотів розглянути характеристики продуктивності між цими деревами та kd-деревами вже більше двох років.

Сподіваємось, це відповідає вашій заявці.


Вибачте за неприйняття; просто слідуючи черговій раді коментатора, щоб дати це питання ще кілька днів, щоб «тушкувати». Я дійсно знайшов вашу відповідь корисною, хоча!
giogadi

Буо. Жартую. Я просто радий, що ти знайшов це корисним.
Кріс Менслі

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