Comprendere la memorizzazione della posizione e gli algoritmi di query?


9

Uno degli aspetti più importanti di un database dotato di GIS è che offre all'utente la possibilità di eseguire rapidamente query per tutti i punti all'interno di un'area geografica arbitraria che soddisfano alcuni criteri aggiuntivi. (Ad esempio "Trovami i 3 ristoranti più vicini a questo punto su una mappa.")

Qualcuno può indicarmi una discussione teorica sugli algoritmi coinvolti? Voglio imparare come funzionano.

In definitiva, voglio applicare la stessa capacità a insiemi di dati numerici generalizzati - una grande nuvola di punti in uno spazio arbitrario, n-dimensionale, non euclideo. Ad esempio, il viso di una persona può essere caratterizzato come un vettore di numeri: [distanza tra gli occhi, distanza da occhio a bocca, larghezza del viso, lunghezza del viso, ecc.]. Voglio filmare il traffico sul marciapiede, stimare le caratteristiche di ogni volto di una persona, e quindi essere in grado di fare domande ai dati in seguito come "dato il volto di questa persona, trovami i 100 volti più simili".

Esiste attualmente un software esistente che offre la possibilità di effettuare ricerche in questi spazi generalizzati?

Risposte:


4

Buoni resoconti di algoritmi in 2 e 3 dimensioni appaiono nel testo classico di Preparata & Shamos . Gli algoritmi utilizzati nel GIS sono una specialità di Hanan Samet , che ha pubblicato numerosi libri sull'argomento.

Le ricerche di dimensioni superiori sono generalmente assistite o accelerate mediante tecniche preliminari di data mining, clustering o riduzione delle dimensioni. Si tratta più di una questione di analisi dei dati e statistiche, non di GIS, che per sua natura si concentra sulle ricerche in una o quattro dimensioni euclidee. Per ulteriori informazioni, cerca nel nostro forum gemello stats.stackexchange.com termini probabili come raggruppamento , riduzione della dimensionalità e ridimensionamento multidimensionale e per termini meno ovvi come pca (analisi dei componenti principali) e svm (macchine vettoriali di supporto). Questo è anche un buon posto per chiedere informazioni sul software esistente.


4

La risposta classica (paleogeografo) è usare un albero KD per archiviare i dati (vedi http://en.wikipedia.org/wiki/Kd-tree ). Questi funzionano dimezzando approssimativamente i dati in due partizioni in ciascuna dimensione a turno mentre si sposta verso il basso l'albero. Il vantaggio è che quando trovi l'articolo più vicino puoi anche creare un elenco di articoli più vicini mentre procedi senza costi aggiuntivi, quindi rispondere a quali sono i tre ristoranti più vicini è facile come trovare quello più vicino.

Ho letto da qualche parte che eHarmony usa alberi KD per trovare "corrispondenze compatibili" in 14 dimensioni.


+1 La breve descrizione chiara di un metodo di ricerca efficiente è ben fatta.
whuber

2

Ho sentito che Netezza ha implementato alcuni algoritmi di elaborazione parallela spaziale innovativi . Il white paper è qui .

L'architettura di elaborazione asimmetrica in parallelo parallela di Netezza offre la migliore combinazione di multiprocessing simmetrico (SMP) e elaborazione in parallelo massiccia (MPP), facilitando terascale, elaborazione di query complesse di dati sia spaziali che non spaziali senza la complessità, l'ottimizzazione e le aggregazioni necessarie nei sistemi tradizionali.

Aggiornare

Ho dimenticato di menzionare che Netezza sfrutta pesantemente il teorema di Bayes . Ecco una raccolta di video qui .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.