parece que hay sólo un buen artículo sobre la propagación perezoso en el árbol del segmento en toda Internet y es: http://www.spoj.pl/forum/viewtopic.php?f=27&t=8296datos y propagación perezoso en el árbol segmento
entendí el concepto de actualización único nodo de consulta y marcando su niño. Pero mi pregunta es ¿qué ocurre si primero consulto el nodo hijo y luego el nodo padre?
En este árbol (junto con la ubicación en el conjunto de pila)
0->[0 9]
1->[0 4] 2->[5 9]
3->[0 2] 4->[3 4] 5->[5 7] 6->[8 9]
.....................................
primera consulta, si actualizo [0 4], sus datos serán cambiados y su hijo serán marcados. Segunda consulta, es el estado de lectura del segmento [0 9].
Aquí me encuentro con el problema. La implementación de mi árbol de segmentos es tal que el valor de cada nodo es la suma de su hijo izquierdo y derecho. Entonces, cuando actualice el valor del nodo, tengo que actualizarlo, son todos los padres. Para solucionar el problema lógico, ahora estoy actualizando todos los padres del nodo (hasta que llegue a la raíz del árbol). Pero esto está haciendo mella en el rendimiento y mi propósito de utilizar el árbol de segmentos para la actualización de lotes rápidos es que se elimine.
¿Puede alguien explicar por favor, donde me equivoco al usar el árbol de segmentos?
Cuando he implementado un árbol segmento, que tenía que hacer lo mismo. Establece el nodo [0-> 4], marca cada elemento secundario y luego actualiza los nodos principales hasta la raíz. – Justin
por lo que su actualización fue O (logN)? también, en el árbol de segmentos, si mi rango es de 2 a 7, actualizaré 3 segmentos. rt? [2 2], [3 4] [5 7] – Pranalee
Actualización de O (2 * logn). Sí, ese es el peor tipo de actualización. Me gustaría saber si alguien conoce un mejor enfoque. – Justin