Prueba de la complejidad del tiempo para la implementación del árbol de segmentos del problema de suma a distancia

10

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í .AO(logn)

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 ) .O(logn)4O(4logn)=O(logn)

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.

Arijit Choudhury
fuente
la construcción del árbol de segmentos es O (n), las consultas son O (log n) y la actualización es O (log N). Su beneficio sobre la matriz de suma está en su complejidad de actualización.
Nurlan

Respuestas:

11

2

Considere el árbol de segmentos que se muestra a continuación.

Árbol de segmento

32logn2logn=Θ(logn)

adijo
fuente