Splay tree con numero dispari di rotazioni


9

Quando si inserisce un elemento in un albero splay, le rotazioni vengono eseguite in coppie in base a un modello a zig-zag o zig-zig. Quando c'è un numero dispari di rotazioni da eseguire, si potrebbe fare la rotazione extra iniziando dalla foglia o salvare la rotazione extra e farlo alla radice. Importa?

Ad esempio, nell'immagine allegata inserisco un 4 in un BST e lo "splay" alla radice. Sulla parte superiore della figura, prima localizzo la coppia zig-zig sul nodo foglia ed eseguo lo zig-zag splay dal basso lasciando una rotazione destra finale alla radice. Nella parte inferiore della figura, eseguo prima la rotazione dispari a partire dalla foglia, quindi eseguo uno zig-zig splay alla radice.

Che è corretto? O entrambi porteranno alla solita esibizione di splay-tree?

due modi per eseguire lo splay per un numero dispari di rotazioni

Risposte:


4

Non importa davvero per l'analisi. Il lemma chiave per l'analisi delle prestazioni dello splay-tree è il lemma di accesso . Indica che i costi ammortizzati di un'operazione di splay (x) sono inferiori a , dove è la radice dell'albero e . Il peso di una sottostruttura è la somma dei pesi dei suoi nodi. (I pesi (positivi) saranno scelti in base all'applicazione del lemma.) La potenziale funzione utilizzata è .1+3(r(t)-r(X))tr(u): =log(peso di usottostruttura)Φ(T)=ΣX nodo di Tr(t)

La prova del lemma di accesso esamina i costi di una singola operazione a zig / zig-zag / zig-zig ecc. Hai capito

  1. I costi di un'operazione zig o zag sono , dove è l'intervallo dopo l'operazione e è il nodo ruotato verso l'alto.1+3(r+(u)-r(u))r+u

  2. I costi di zig-zig / zig-zag e operazioni simmetriche sono .3(r+(u)-r(u))

Se si sommano queste differenze per le operazioni eseguite in un singolo splay (x) , si ottiene una somma del telescopio e ciò che rimane è .1+3(r(t)-r(X))

Se cambi l'ordine delle rotazioni otterrai la stessa somma. L'unica differenza è che ora il '' +1 '' proviene dalla prima rotazione e non dall'ultima rotazione. Potresti anche fare la rotazione zig nel mezzo. Tutte le ulteriori analisi (classiche) si basano sul lemma di accesso.

Tuttavia, il motivo per cui esegui l'ultima rotazione singola è che non sai se la profondità del nodo è pari o dispari in anticipo.

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.