Differenza tra alberi AVL e albero splay

voti
31

Sto studiando su vari alberi, e mi sono imbattuto alberi AVL e albero splay. voglio sapere

  1. Qual è la differenza tra alberi AVL e albero splay?
  2. Su quali basi si fa a selezionare questi alberi?
  3. Quali sono di positive e di negative di questi alberi?
  4. Quali sono le prestazioni di questi alberi in termini di o-grande?
È pubblicato 19/09/2011 alle 07:12
fonte dall'utente
In altre lingue...                            


2 risposte

voti
3

1) Qual è la differenza tra alberi AVL e albero splay?

Essi sono simili nella struttura e le operazioni che chiamiamo su di loro. La differenza è che in albero splay, dopo ogni operazione, cerchiamo di mantenere l'albero quasi perfettamente bilanciato in modo che le operazioni future impiega meno tempo.

2) Su quali basi si fa a selezionare questi alberi?

albero splay sono sempre meglio di alberi binari di ricerca quando, vostra applicazione si occupa un sacco di dati nella struttura, ma, avrà bisogno di accedere a un sottoinsieme dei dati molto frequentemente di altri. In questo caso i dati si accede frequentemente arriverà vicino alla radice come risultato della splay. Inoltre, ogni nodo può quindi essere letta con meno tempo rispetto a prima.

Come regola generale per la selezione di questi alberi, se avete bisogno di log (n) "Media" per un periodo di operazioni albero quindi utilizzare albero splay. albero binario non può garantire questo.

3) Quali sono di positive e di negative di questi alberi?

Positivi per entrambi è che si ottiene in giro log (n) in entrambe queste strutture di dati teoricamente.

Come albero splay menzionati hanno log media (n) su una serie di operazioni. Ciò significa che, forse hai n complessità temporale per un'operazione almeno una volta in quella retata. Ma questo sarà compensato quando si accede alle voci frequenti.

Il negativo della albero binario di ricerca è che, è necessario essere fortunati ad avere log (n) sempre. Se i tasti non sono casuali, poi l'albero si ridurrà a una lista come modulo con un solo lato.

4) Quali sono le prestazioni di questi alberi in termini di o-grande?

albero Splay log (n), in media, per un gruppo di operazioni di alberi. Albero binario di log (n) solo se le chiavi sono in corso in casuale.

I risultati sul tempo di esecuzione sono evidenti qui splay albero runtime profiling È possibile vedere la differenza runtime nella ricerca con e senza divaricazione.

Risposto il 18/01/2012 a 04:40
fonte dall'utente

voti
61

  1. Entrambi albero splay e alberi AVL sono binari alberi di ricerca con ottime garanzie di rendimento, ma differiscono per il modo in cui il raggiungimento di tali garantire che le prestazioni. In un albero AVL, la forma dell'albero è vincolato in ogni momento tale che la forma albero è bilanciato, il che significa che l'altezza dell'albero non supera mai O (log n). Questa forma è mantenuta su inserzioni e delezioni, e non cambia durante le ricerche. albero splay, d'altra parte, mantenere efficiente da rimodellare l'albero in risposta alle ricerche su di esso. In questo modo, gli elementi a cui si accede più di frequente salire verso la cima dell'albero e hanno tempi migliori di ricerca. La forma di albero splay non è vincolato, e varia in base a ciò che le ricerche vengono eseguite.

  2. Non esiste una regola hard-and-fast su questo. Tuttavia, una differenza fondamentale tra le strutture è che gli alberi AVL garantiscono ricerca veloce (O (log n)) su ogni operazione, mentre gli alberi splay possono solo garantire che qualsiasi sequenza di n operazioni richiede al massimo O (n log n). Questo significa che se avete bisogno di ricerche in tempo reale, l'albero AVL è probabile che sia meglio. Tuttavia, albero splay tendono ad essere molto più veloce, in media, quindi se si vuole ridurre al minimo il tempo di esecuzione totale di ricerche albero, l'albero splay è probabile che sia meglio. Inoltre, albero splay supportano alcune operazioni quali la scissione e fusione molto efficiente, mentre le corrispondenti operazioni albero AVL sono più coinvolti e meno efficiente. albero splay sono più memoria-efficiente di alberi AVL, perché non hanno bisogno di memorizzare le informazioni equilibrio nei nodi. Però, alberi AVL sono più utili in ambienti multithread con un sacco di ricerche, perché le ricerche in un albero AVL può essere fatto in parallelo, mentre non possono in albero splay. Perché albero splay rimodellare si basano su ricerche, se avete solo bisogno di accedere ad un piccolo sottoinsieme degli elementi della pianta, o se si accede alcuni elementi molto più di altri, l'albero splay sorpasserà l'albero AVL. Infine, albero splay tendono ad essere più facile da implementare rispetto alberi AVL, poiché la logica di rotazione è molto più facile. l'albero splay sorpasserà l'albero AVL. Infine, albero splay tendono ad essere più facile da implementare rispetto alberi AVL, poiché la logica di rotazione è molto più facile. l'albero splay sorpasserà l'albero AVL. Infine, albero splay tendono ad essere più facile da implementare rispetto alberi AVL, poiché la logica di rotazione è molto più facile.

  3. Vedere (2)

  4. inserimento AVL albero, la cancellazione, e le ricerche prendono O (log n) ciascuno. albero splay hanno queste stesse garanzie, ma la garanzia è solo in senso ammortizzato. Qualsiasi lunga sequenza di operazioni avrà al massimo O (n log n), ma singole operazioni potrebbe richiedere fino a O (n).

Spero che questo ti aiuti!

Risposto il 04/02/2012 a 23:06
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more