UPD: Mi sono trasferito domanda iniziale per https://codereview.stackexchange.com/questions/127055/building-tree-graph-from-dictionary-performance-issuesPhp implementazione albero prefisso contro gamma assoc
Ecco una versione corta, senza codici.
Sto provando a creare un albero prefisso dal dizionario. Quindi, utilizzando il seguente dizionario 'and','anna','ape','apple'
, il grafico dovrebbe essere simile al seguente: Ho provato 2 approcci: utilizzando array associativo e utilizzando classi di albero/nodo autodidatta.
Nota: il dizionario originale è qualcosa di circa 8 MB e contiene> 600000 parole.
Domanda: c'è qualche buon modo (veloce/efficiente) per farlo?
io ho provato finora:
array associativi php (non sono molto flessibili per il lavoro futuro con questo grafico).
Classi Tree/Node autodefinite (problemi di prestazioni - il tempo di esecuzione sale fino a 7 volte, l'utilizzo della memoria aumenta di 2x anche senza implementare nulla tranne la semplice funzione
inserting
).
codici di esempio sono disponibili sul CodeReview (il primo collegamento in questione)
Entrambi hanno lo stesso codice/complessità di esecuzione, non lo stesso footprint di memoria e velocità di esecuzione. A seconda della versione di PHP che si esegue in classi, si utilizza anche più o meno memoria. Se stai cercando prestazioni migliori e non solo materiale didattico, ti suggerisco di esaminare i set annidati. Troverà anche le implementazioni PHP pronte all'uso: http://stackoverflow.com/questions/272010/searching-for-the-best-php-nested-sets-class-pear-class-excluded –
Questa domanda è più adatta per [code review] (http://codereview.stackexchange.com) – nickb
@Sergiu Paraschiv - Lo guarderò io – haldagan