Eu entendo que as árvores segmento pode ser usado para encontrar a soma de sub variedade de . E isso pode ser feito no tempo O ( log n ) de acordo com o tutorial aqui .
No entanto, não sou capaz de provar que o tempo de consulta é realmente . Esse link (e muitos outros) diz que podemos provar que, em cada nível, o número máximo de nós processados é 4 e, portanto, O ( 4 log n ) = O ( log n ) .
Mas como provamos isso, talvez por contradição?
E se sim, se usássemos árvores de segmentos para soma variada de matrizes dimensionais mais altas, como a prova seria estendida?
Por exemplo, eu posso pensar em encontrar uma soma sub-matriz dividindo a matriz original em 4 quadrantes (semelhante a intervalos de metade em matrizes lineares) construindo uma árvore de segmentos de quadrante, mas a prova me escapa.
fonte
Respostas:
A alegação é que existem no máximo nós que são expandidos em cada nível. Vamos provar isso por contradição.2
Considere a árvore de segmentos fornecida abaixo.
fonte