Ho cercato online un'implementazione di sottostringa comune più lunga del C++ ma non sono riuscito a trovarne uno decente. Ho bisogno di un algoritmo LCS che restituisca la sottostringa stessa, quindi non è solo LCS.Come trovare la sottostringa comune più lunga usando C++
Mi chiedevo, tuttavia, su come posso farlo tra più stringhe.
La mia idea era quella di controllare il più lungo tra 2 stringhe, e quindi andare a controllare tutti gli altri, ma questo è un processo molto lento che richiede la gestione di molte stringhe lunghe sulla memoria, rendendo il mio programma piuttosto lento.
Qualche idea di come questo può essere accelerato per più stringhe? Grazie.
Modifica Importante Una delle variabili che sono dato determina il numero di stringhe più lunghe sottostringa comune deve essere in, così ho può essere dato 10 corde, e trovare le LCS di tutti loro (K = 10), o LCS di 4 di loro, ma non mi viene detto quale 4, devo trovare il migliore 4.
Se è necessario eseguire questa operazione con più stringhe, non si dovrebbe seguire il proprio approccio. Considera che la LCS complessiva potrebbe non essere un sottoinsieme della LCS tra due stringhe particolari [ej. "123asdfg", "asdfg123", "123"; se esegui LCS sui primi due otterrai "asdfg", che non ha caratteri in comune con l'ultima stringa]. A partire dalla restituzione della sottostringa LCS effettiva, l'algoritmo comune termina con una tabella che è possibile camminare per creare tale stringa in tempo lineare (sulla dimensione della LCS) –
http://www.markusstengel.de/text/en/ i_4_1_5_3.html – Nick
Controlla qui per [Analisi della corrispondenza della sottostringa comune più lunga] (http://www.msccomputerscience.com/2014/10/analysis-of-longest-common-substring_18.html) – ARJUN