Prova della complessità temporale per l'implementazione dell'albero dei segmenti del problema della somma a distanza


10

Capisco che gli alberi di segmento può essere utilizzato per trovare la somma di sub matrice di . E questo può essere fatto in tempo secondo il tutorial qui .O ( registro n )AO(logn)

Tuttavia, non sono in grado di dimostrare che il tempo di interrogazione è effettivamente . Questo link (e molti altri) dicono che possiamo dimostrare che ad ogni livello, il numero massimo di nodi elaborati è e quindi .4 O ( 4 log n ) = O ( log n )O(logn)4O(4logn)=O(logn)

Ma come possiamo dimostrarlo, forse per contraddizione?

E se fosse così, se dovessimo usare gli alberi di segmenti per la somma a distanza di array di dimensioni superiori, come sarebbe estesa la dimostrazione?

Ad esempio, posso pensare di trovare una somma di matrice secondaria dividendo la matrice originale in 4 quadranti (simile a dimezzare gli intervalli in matrici lineari) costruendo un albero di segmenti di quadrante ma la prova mi sfugge.


la costruzione dell'albero dei segmenti è O (n), l'interrogazione è O (registro n) e l'aggiornamento è O (registro N). Il suo vantaggio sull'array di somma sta nella sua complessità di aggiornamento.
Nurlan,

Risposte:


11

L'affermazione è che ci sono al massimo nodi che sono espansi ad ogni livello. Lo dimostreremo per contraddizione.2

Considera l'albero dei segmenti riportato di seguito.

Albero del segmento

Diciamo che ci sono nodi che sono espansi in questo albero. Ciò significa che l'intervallo va dal nodo più colorato a sinistra al nodo più colorato a destra. Si noti che se l'intervallo si estende fino al nodo più a destra, viene coperto l'intero intervallo del nodo centrale. Pertanto, questo nodo restituirà immediatamente il valore e non verrà espanso. Pertanto, dimostriamo che ad ogni livello, espandiamo al massimo nodi e poiché ci sono livelli , i nodi che vengono espansi sono2 log n 2 log n = Θ ( log n )32logn2logn=Θ(logn)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.