Yo entiendo que los árboles de segmentos se pueden utilizar para encontrar la suma de sub conjunto de . Y que esto se puede hacer en tiempo O ( log n ) de acuerdo con el tutorial aquí .
Sin embargo, no puedo demostrar que el tiempo de consulta es de hecho . Este enlace (y muchos otros) dicen que podemos probar que en cada nivel, el número máximo de nodos procesados es 4 y, por lo tanto, O ( 4 log n ) = O ( log n ) .
Pero, ¿cómo probamos esto, tal vez por contradicción?
Y si es así, si tuviéramos que usar árboles de segmentos para la suma a distancia de matrices de dimensiones superiores, ¿cómo se ampliaría la prueba?
Por ejemplo, puedo pensar en encontrar una suma de submatrices dividiendo la matriz original en 4 cuadrantes (similar a los intervalos a la mitad en matrices lineales) construyendo un árbol de segmento de cuadrante, pero la prueba me elude.
fuente
Respuestas:
Considere el árbol de segmentos que se muestra a continuación.
fuente