Dizionario implementazione (Balance Binary Search albero vs tabella di hash)

voti
1

In quali circostanze sarebbe meglio per implementare un ADT Dizionario utilizzando un equilibrato albero binario di ricerca, piuttosto che una tabella hash?

La mia ipotesi è che è sempre meglio usare un albero binario di ricerca a causa del suo ordinamento naturale.

Ma è vero che la tabella di hash tempo di ricerca può essere buono come O (1), vs O (log n) per l'albero binario.

quindi non sono sicuro di quello che sarebbero le circumtaces.

È pubblicato 15/04/2011 alle 02:13
fonte dall'utente
In altre lingue...                            


3 risposte

voti
0

La tua domanda contiene già la risposta:

Se non si richiede alcun ordinamento intrinseco quindi utilizzare una tabella hash per migliorare le prestazioni. Se le vostre esigenze richiedono un qualche tipo di ordine, allora considerare l'utilizzo di un albero.

Risposto il 15/04/2011 a 02:16
fonte dall'utente

voti
1

Le tabelle hash potrebbero avere un problema di prestazioni quando vengono riempiti e la necessità di riallocare la memoria (nel contesto di un sistema hard real-time) alberi .binary non hanno questo problema. Le tabelle hash hanno bisogno di più memoria rispetto a quello realmente utilizzato, dove, come alberi binari usano la quantità di memoria di cui hanno bisogno.

Risposto il 15/04/2011 a 02:19
fonte dall'utente

voti
0

La complessità di tempo per Dictionary è:

-----------------------------------------
| Operation   |  Dictionary |    BST    | 
-----------------------------------------
| Insert      |  O(1)       | O(log(n)) |
-----------------------------------------
| Delete      |  O(1)       | O(log(n)) |
-----------------------------------------
| Search      |  O(1)       | O(log(n)) |
-----------------------------------------

Allora, dove si usa BST vs dizionario? Qui ci sono alcuni vantaggi principali di BST.

  • Con BST si ha sempre un'operazione O (log (n)), ma il ridimensionamento di una tabella hash è un'operazione costosa
  • Se avete bisogno di ottenere le chiavi in ​​un ordinamento è possibile ottenere l'attraversamento in ordine simmetrico dell'albero. L'ordinamento non è naturale per un dizionario
  • Facendo le statistiche, come trovare l'elemento più vicino inferiore e superiore, o query gamma.
Risposto il 29/01/2019 a 21:47
fonte dall'utente

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