Che cos’è un albero splay?

Un albero splay è un albero di ricerca binario ottimizzato o un albero di dati basato su nodi, che si autoregola e consente di accedere a elementi e nodi cercati di recente. È possibile eseguire cinque funzioni sull’albero splay, consentendo all’utente di manipolare i nodi. Questo albero ha un footprint molto ridotto, quindi è necessaria poca memoria per memorizzare i dati. Uno svantaggio di questo albero è che è costruito in modo lineare, quindi i nodi memorizzati verso il basso impiegheranno più tempo per accedere.

Gli alberi di visualizzazione sono alberi binari che memorizzano nodi di dati; di solito si tratta di dati binari, anche se possono contenere anche file. A differenza di un normale albero di ricerca binario, che consente agli utenti di cercare attraverso i nodi, uno splay tree si sposta per rendere la ricerca molto più veloce. Tutti i nodi aperti di recente verranno disposti vicino alla parte superiore dell’albero, quindi è necessario meno tempo per trovare e aprire il nodo. Questa riorganizzazione significa che gli alberi splay sono utili per le cache – la memoria del computer che contiene i dati a cui si è avuto accesso di recente – e per gli algoritmi creati per eliminare i dati inutilizzati.

Cinque funzioni possono essere utilizzate sull’albero. L’operazione splay è come un’operazione di join, perché l’accesso di un nodo viene connesso con un altro nodo. La funzione di divisione prende un nodo e lo divide in due o più nodi. Con join, due nodi vengono trasformati in uno. Insert prende parte di un nodo e lo inserisce in un altro, mentre la funzione delete cancella una sezione del nodo dall’albero splay.

Uno splay tree utilizza pochissima memoria, il che consente agli utenti di creare alberi di grandi dimensioni senza occupare una quantità enorme di spazio sul disco rigido. Gli alberi Splay sono semplici e non richiedono molto codice per essere compilati, quindi non richiedono la stessa quantità di memoria richiesta dagli alberi più complessi. Le informazioni contabili, che di solito sono necessarie ad altri alberi per tenere traccia del posizionamento dei dati, non sono necessarie a causa della natura di riorganizzazione automatica dell’albero.

Sebbene lo splay tree occupi poca memoria e possa accedere facilmente ai nodi recenti, la velocità può essere un problema. I nodi possono essere organizzati solo in modo lineare, il che significa che alcuni nodi saranno in basso sull’albero, mentre i nodi recenti sono in alto. Questi nodi inferiori saranno difficili da raggiungere, perché l’albero deve cercare dall’alto verso il basso finché non vengono trovati i nodi inferiori. Questo perché non ci sono dati contabili, con conseguenti ricerche lente per i nodi bassi.