Qual è la complessità della creazione di uno trie di un elenco di parole e qual è la complessità della ricerca di altri set di parole in quel trie? Devo usare trie per la ricerca di stringhe, quando ho hashtable?Trie complessità e ricerca
14
A
risposta
14
La complessità della creazione di un trie è O(W*L)
, dove W
è il numero di parole, e L
è una lunghezza media della parola: è necessario eseguire L
ricerche in media per ciascuna delle W
parole del set.
Lo stesso vale per la ricerca di parole successive: si eseguono i passaggi L
per ciascuna delle parole W
.
Hash inserzioni e ricerche hanno la stessa complessità: per ogni parola è necessario controllare l'uguaglianza, che prende O(L)
, per la complessità complessiva di O(W*L)
.
Se è necessario cercare parole intere, la tabella hash è più semplice. Tuttavia, non è possibile cercare le parole in base al loro prefisso utilizzando una tabella hash; Se le ricerche basate su prefissi non ti interessano, usa una tabella hash; altrimenti, usa un trie.
Problemi correlati
- 1. Complessità della ricerca di Lucene
- 2. Complessità temporale ricerca alfa beta
- 3. Trie e sottosezioni
- 4. Trie tree match performance nella ricerca di parole
- 5. Alla ricerca di una buona introduzione su trie
- 6. complessità di un algoritmo di ricerca randomizzato
- 7. Implementazione Trie
- 8. Trie basato su disco?
- 9. Trie molto grande in Haskell
- 10. "Semplice" Implementazione Trie
- 11. Ricerca stringhe cicliche
- 12. Implementazione Trie in Guava?
- 13. Strutture dati Trie - Java
- 14. Trie vs albero rosso-nero: quale è meglio nello spazio e nel tempo?
- 15. differenza tra "complessità" metrica e "complessità/metodo" metrica
- 16. Larghezza Prima analisi della complessità del tempo di ricerca
- 17. Algoritmo di Dijkstra Vs Ricerca uniforme dei costi (Complessità temporale)
- 18. Come calcolare la complessità dello spazio per SubTree binario Ricerca
- 19. Complessità di runtime della tabella hash (inserimento, ricerca ed eliminazione)
- 20. Complessità del tempo di ricerca di un bacino
- 21. Perché la ricerca di un indice ha una complessità logaritmica?
- 22. Diverse strutture dati e complessità
- 23. Index Tessuto (a strati Patricia trie)
- 24. Come liberare struct ricorsiva (trie)
- 25. Clojure: come generare un 'trie'?
- 26. Prefix matching/trie per Java?
- 27. C'è un Trie in Java?
- 28. Trie salva spazio, ma come?
- 29. C++ - complessità unordered_map
- 30. Struttura dati ricerca IPv6
se sto cercando l'intera parola in hashtable, ho bisogno di qualche buona funzione di hash e dovremmo fare molta attenzione quando si definisce la funzione di hash. Correggetemi se ho torto ... – Varun
@var A causa dell'uso diffuso delle stringhe come chiavi delle tabelle hash, sono state inventate ottime funzioni di hashing per le stringhe. Una rapida ricerca su Internet ti darà una mezza dozzina di suggerimenti eccellenti. Vorrei andare con quello che usa Microsoft, o quello incorporato nelle stringhe Java, perché sono stati ottimizzati molto. – dasblinkenlight