Compreendendo o armazenamento de localização e os algoritmos de consulta?

9

Um dos aspectos mais importantes de um banco de dados equipado com GIS é que ele fornece ao usuário a capacidade de consultar rapidamente todos os pontos em alguma área geográfica arbitrária que atendem a alguns critérios adicionais. (Por exemplo, "Encontre-me os 3 restaurantes mais próximos a este ponto em um mapa.")

Alguém pode me apontar para uma discussão teórica dos algoritmos envolvidos? Eu quero aprender como eles funcionam.

Por fim, quero aplicar o mesmo recurso a conjuntos generalizados de dados numéricos - uma grande nuvem de pontos em um espaço arbitrário, n-dimensional e não euclidiano. Por exemplo, o rosto de uma pessoa pode ser caracterizado como um vetor de números: [distância entre os olhos, distância dos olhos à boca, largura do rosto, comprimento do rosto, etc.]. Quero filmar o tráfego na calçada, estimar os recursos de cada pessoa e depois fazer consultas aos dados posteriormente, como "dado o rosto dessa pessoa, encontre-me as 100 faces mais semelhantes".

Existe atualmente algum software que ofereça a capacidade de pesquisar sobre esses espaços generalizados?

John Berryman
fonte

Respostas:

4

Bons relatos de algoritmos nas dimensões 2 e 3 aparecem no texto clássico de Preparata & Shamos . Os algoritmos usados ​​no SIG são uma especialidade de Hanan Samet , que publicou vários livros sobre o assunto.

Pesquisas de alta dimensão geralmente são assistidas ou aceleradas por meio de técnicas preliminares de mineração de dados, clustering ou redução de dimensão. Isso é mais uma questão de análise e estatística de dados, não do SIG, que por sua natureza se concentra nas pesquisas em uma a quatro dimensões euclidianas. Para mais informações, procure o nosso fórum irmã stats.stackexchange.com para termos prováveis, como agrupamento , redução de dimensionalidade e escalonamento multidimensional e para as menos óbvias, como PCA (análise de componentes principais) e SVM (support vector machines). Esse também é um bom lugar para perguntar sobre o software existente.

whuber
fonte
4

A resposta clássica (paleogeógrafo) é usar uma árvore KD para armazenar os dados (consulte http://en.wikipedia.org/wiki/Kd-tree ). Eles funcionam dividindo os dados pela metade em duas partições em cada dimensão, por sua vez, à medida que você se move para baixo na árvore. A vantagem deles é que, ao encontrar o item mais próximo, você também pode criar uma lista dos itens mais próximos à medida que avança, sem nenhum custo extra; portanto, responder a quais são os três restaurantes mais próximos é tão fácil quanto encontrar o mais próximo.

Li em algum lugar que o eHarmony usa árvores KD para encontrar "correspondências compatíveis" em 14 dimensões.

Ian Turton
fonte
+1 A breve descrição clara de um método de pesquisa eficiente é bem feita.
whuber
2

Ouvi dizer que o Netezza implementou alguns algoritmos de processamento paralelo espacial inovadores . O whitepaper está aqui .

A arquitetura de processamento massivamente paralelo assimétrico da Netezza oferece a melhor combinação de multiprocessamento simétrico (SMP) e processamento paralelo massivo (MPP), facilitando o processamento em escala tercal, complexo de consultas de dados espaciais e não espaciais, sem a complexidade, o ajuste e as agregações necessários nos sistemas tradicionais.

Atualizar

Eu esqueci de mencionar que Netezza utiliza fortemente o Teorema de Bayes . Aqui está uma coleção de vídeos aqui .

Kirk Kuykendall
fonte