2010-06-04 19 views
18

Quale proprietà rende la tabella hash, l'elenco hash e l'albero hash diversi gli uni dagli altri? Quale viene usato quando? Quando è il tavolo superiore all'albero.Tabella hash vs lista hash vs albero hash?

+1

Qual è la differenza tra le serie, liste e alberi? Ora aggiungi Hashing. –

+8

Non ho capito molto da wikipedia, ecco perché sto cercando una risposta migliore qui. –

risposta

20
  • Hashtable: si tratta di una struttura di dati in cui è possibile inserire le coppie di (chiave, valore), in cui la chiave viene utilizzata per calcolare un codice hash che è necessario per decidere dove memorizzare il valore associato con la sua chiave . Questo tipo di struttura è utile perché il calcolo di un hashcode è O (1), quindi puoi trovare o posizionare un oggetto in tempo costante. (Ricorda che ci sono avvertenze e implementazioni diverse che modificano leggermente questa performance)
  • Hashlist: è solo un elenco di hashcodes calcolati su vari blocchi di dati. Ad esempio: dividi un file in più parti e calcoli un codice hash per ogni parte, quindi li memorizzi tutti in un elenco. Quindi puoi usare quell'elenco per verificare l'integrità dei dati.
  • Hashtree: è simile ad un hashlist ma invece di avere un elenco di hash avete un albero, così ogni nodo dell'albero è un codice hash che viene calcolato sui suoi figli. Ovviamente le foglie saranno i dati da cui inizierai a calcolare gli hashcode.

Hashtable è spesso utile (sono anche chiamati HashMaps), mentre hashlists e hashtrees sono un po 'più specifico e utile ai fini della esatta ..

+0

Sto cercando di implementare Apriori Algorithm per il mio progetto di data mining e HashTree è una buona struttura dati per il calcolo del numero di supporto dei candidati generati. Qualcuno può specificare come implementare l'albero di hash (dato che non sono in grado di trovare buone informazioni su hashtree sul web). Qualsiasi aiuto sarebbe apprezzato, grazie! – saltmotor

+0

Questo presuppone che "albero hash" è un sinonimo di "albero Merkle". Esiste anche una [struttura dati generica con questo nome] (https://en.wikipedia.org/wiki/Hash_tree_%28persistent_data_structure% 29). –