Розуміння алгоритмів зберігання місцеположень та запитів?


9

Одним із найважливіших аспектів бази даних, оснащених ГІС, є те, що вона надає користувачеві можливість швидко запитувати всі точки в межах будь-якої довільної географічної області, що відповідають деяким додатковим критеріям. (Наприклад, "Знайди мені найближчі 3 ресторани до цієї точки на карті.")

Чи може хто-небудь вказати мені на теоретичне обговорення алгоритмів? Я хочу дізнатися, як вони працюють.

Зрештою, я хочу застосувати ту саму здатність до узагальнених наборів числових даних - велика хмара точок у довільному, n-мірному, неевклідовому просторі. Наприклад, обличчя людини можна охарактеризувати як вектор чисел: [відстань між очима, відстань від очей до рота, ширина обличчя, довжина обличчя тощо]. Я хочу знімати трафік тротуару, оцінювати особливості кожної людини, а потім зможу робити запити до даних пізніше, таких як "з огляду на обличчя цієї людини, знайди мені 100 найбільш схожих облич".

Чи існує в даний час програмне забезпечення, яке забезпечує можливість пошуку в цих узагальнених просторах?

Відповіді:


4

Хороші рахунки алгоритмів у 2 та 3 вимірах відображаються в класичному тексті фірми Preparata & Shamos . Алгоритми, які використовуються в ГІС, є спеціальністю Ханана Самета , який опублікував декілька книг на цю тему.

Пошуки більш великих розмірів зазвичай допомагають або прискорюються за допомогою попередніх методів вилучення даних, кластеризації або зменшення розмірів. Це скоріше питання аналізу даних та статистики, а не ГІС, яка за своєю природою фокусується на пошуку в одному та чотирьох евклідових вимірах. Для отримання додаткової інформації шукайте наш сестринський форум stats.stackexchange.com щодо можливих термінів, таких як кластеризація , зменшення розмірності та багатовимірне масштабування, а також для менш очевидних, таких як pca (аналіз основних компонентів) та svm (підтримуючі векторні машини). Це також гарне місце, щоб запитати про наявне програмне забезпечення.


4

Класична відповідь (палеогеограф) - використовувати дерево KD для зберігання даних у (див. Http://en.wikipedia.org/wiki/Kd-tree ). Вони працюють, грубо вдвічі зменшуючи дані на два розділи в кожному вимірі по черзі, рухаючись вниз по дереву. Їх перевага полягає в тому, що, коли ви знайдете найближчий предмет, ви також можете створити список найближчих предметів, коли ви їдете без зайвих витрат, тож відповідати, що є трьома найближчими ресторанами, так само просто, як знайти найближчий.

Десь я читав, що eHarmony використовує дерева KD для пошуку "сумісних матчів" у 14 вимірах.


+1 Короткий чіткий опис ефективного способу пошуку добре зроблений.
whuber

2

Я чув, що Netezza реалізував деякі інноваційні алгоритми просторової паралельної обробки. Біла папір тут .

Асиметрична архітектура масивної паралельної обробки Netezza забезпечує найкраще поєднання симетричної багатопроцесорної обробки (SMP) та масово паралельної обробки (MPP), полегшуючи теракосферу, складну обробку запитів як просторових, так і непросторових даних без складності, настройки та агрегації, необхідної в традиційних системах.

Оновлення

Я забув згадати, що Нетеца сильно використовує теорему Байєса . Ось колекція відео тут .

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