Diciamo che avete questi due sequenze di stringheC++: suggerimenti su una funzione hash per una sequenza di stringhe in cui l'ordine delle corde è irrilevante
abc cba bc
bc abc cba
sto cercando per creare una mappatura per tali sequenze (la sequenza è anche una stringa) in modo che le due sequenze di cui sopra siano mappate nello stesso bucket.
Il mio primo pensiero sarebbe quello di aggiungere i risultati di una funzione di hashing che viene applicata a ciascuna stringa separatamente. In questo modo il loro ordine non ha importanza. Se avessi applicato la funzione di hashing alla stringa di sequenza nel suo complesso, allora ovviamente il risultato dell'hash sarebbe diverso.
Tuttavia, sono molto nuovo nel mondo delle funzioni di hashing delle stringhe e non ho idea se questo approccio sarebbe efficiente.
In questo sito http://www.partow.net/programming/hashfunctions/index.html
ho trovato molte implementazioni diverse per l'hashing della stringa, ma non sono sicuro quale sarebbe il "migliore" per le mie esigenze.
Alcuni dettagli tecnici su ciascuna stringa nella sequenza sono che ognuno di essi non avrà più di 25 caratteri. Inoltre, ciascuna sequenza non avrà più di 3 stringhe.
Domande
1.
Sarebbe questo approccio di aggiungere i risultati di una funzione di hashing stringa per ciascuna stringa del lavoro successione?
2.
In caso affermativo, quale funzione di hashing dello stringhe dovrei usare per ottenere una bassa quantità di collisioni ed essere anche efficiente nel tempo?
Grazie in anticipo
Potrebbe essere utile applicare la funzione di hashing a una copia ordinata della sequenza di stringhe? –
qual è la dimensione dell'alfabeto (cioè quale set di caratteri sarà usato)? – didierc
Li vuoi nello stesso secchio, ma NON scontrarti? Ordine di altezza. – WhozCraig