2010-09-07 13 views
12

Sto cercando un'implementazione efficiente (spaziale) di un algoritmo LCS da utilizzare in un programma C++. Gli input sono due sequenze di accesso casuale di interi.
Attualmente sto usando l'approccio di programmazione dinamica dalla pagina di wikipedia su LCS. Tuttavia, questo ha il comportamento di O (mn) nella memoria e nel tempo e muore su di me con errori di memoria insufficienti per input più grandi.
Ho letto sull'algoritmo di Hirschberg, che migliora considerevolmente l'utilizzo della memoria, Hunt-Szymanski, Masek e Paterson. Dal momento che non è banale implementarli, preferirei provarli sui miei dati con un'implementazione esistente. Qualcuno sa di una tale biblioteca? Immagino poiché gli strumenti di diff di testo sono piuttosto comuni, dovrebbero esserci alcune librerie open source in giro?Libreria di algoritmi di sequenziamento comune più lunga efficiente?

+0

Sei interessato nel reale sottosequenza più lunga comune o semplicemente la sua lunghezza? – IVlad

+0

Ho bisogno della sequenza effettiva. – BuschnicK

+0

Siamo rimasti delusi dal fatto che alcune ricerche veloci sul web non hanno rivelato nulla di particolarmente utile (un sacco di implementazioni ad hoc per 'char' in C, ma niente con la velocizzazione dello spazio lineare di Hirschberg o il tipo di elemento basato su C++). Se trovi (o crei: D) qualcosa, per favore aggiorna! –

risposta

3

Durante la ricerca di cose del genere, prova scholar.google.com. È molto meglio trovare opere accademiche. È apparso http://www.biotec.icb.ufmg.br/cabi/artigos/seminarios2/subsequence_algorithm.pdf questo documento, un "rilevamento degli algoritmi delle sottosequenze più lunghe".

+1

Rancore +1 perché l'OP vuole davvero implementazioni di libreria di detti algoritmi, non descrizioni. Ma probabilmente una carta utile comunque. –

+0

Inoltre sarebbe utile conoscere la data di pubblicazione e altri dettagli. –

Problemi correlati