Algoritmo eficiente para calcular áreas no mapa geográfico com a maior densidade de pontos

Digamos que eu tenho um mapa geográfico, onde os pontos são representados por latitude \ longitude. Eu tenho vários pontos neste mapa e os pontos podem ser adicionados \ excluídos \ movidos a qualquer momento.

O que eu preciso é obter os "pontos mais quentes" - as áreas que incluem o maior número de pontos dividido por área - ou, em outras palavras, as áreas com a maior densidade de pontos.

Preciso de uma estrutura de dados eficiente e também de um algoritmo que recalcule os pontos mais quentes de qualquer alteração. A complexidade computacional e a complexidade da memória devem ser mínimas, pois o número de pontos pode ficar muito alto.

Desejo conhecer e manter uma lista dos pontos mais quentes em ordem decrescente - a área mais movimentada primeiro, depois as áreas menos movimentadas. Não há problema em ter uma lista de tamanho limitado - por exemplo, os 100 locais mais quentes.

Obviamente, para evitar 100% de densidade em um ponto isolado, há uma área mínima (definida como constante).

A definição de "área" aqui é qualquer área perceptível no mapa que contenha pontos. Pode ser o mapa inteiro, mas o algoritmo não deve ver isso como um hot spot, é claro =)

Obrigado pela frente! Se precisar de algum esclarecimento, diga-o ...

questionAnswers(3)

yourAnswerToTheQuestion