Suponha que eu tenha uma matriz 2D M[n][n]
de números inteiros (de fato, binário é bom, mas duvido que isso importe). Estou interessado em consultas repetidas do formulário: dado um par de coordenadas, o que é
Obviamente, todos esses valores podem ser calculados no tempo total e, depois disso, as consultas recebem . No entanto, minha matriz é mutável e cada vez que altero um valor, a solução óbvia exige uma atualização .
Podemos criar uma quad-tree over M
; o pré-processamento leva, e isso nos permite fazer consultas em e atualizações em .
Minha pergunta é:
Podemos melhorar significativamente as consultas sem sacrificar muito as atualizações?
Estou especialmente interessado em obter as operações de atualização e consulta sub-lineares e, em particular, obtê-las em .
Edit: para obter mais informações, embora eu ache o problema interessante, mesmo sem essa restrição adicional, espero fazer aproximadamente consultas e sobre . O objetivo ideal é reduzir o tempo de execução completo para . Portanto, uma situação em que uma atualização usa enquanto uma consulta usa também seria interessante para mim.