Ho due array di 100 caratteri (massimo, potrebbe essere inferiore o inferiore alle stesse dimensioni) che desidero allineare. Voglio aggiungere un "-" quando c'è un personaggio diverso dall'altro. Ho trovato l'algoritmo Needleman–Wunsch, che si basa sulla programmazione dinamica, e l'algoritmo Smith–Waterman che è un metodo di allineamento locale generale basato anch'esso sulla programmazione dinamica ma che sembra troppo complesso per quello che voglio fare. Ho solo bisogno di un semplice algoritmo in Java forse su meno di 50 righe, questo codice sarà tradotto in linguaggio assembly dopo, quindi perché ho bisogno di un algoritmo semplice.Algoritmo di allineamento dei caratteri Java
C'è un modo per eseguire questo tipo di allineamento con un algoritmo diff? Se sì, qualcuno può indicarmi come farlo? Ho cercato nella sezione di biostar, ma sembra che ho bisogno di usare i due algoritmi che ho citato.
L'inglese non è la mia lingua madre, quindi ho cercato le parole chiave sbagliate.
Il mio programma funziona già con l'algoritmo di Needleman e le sue circa 200 righe (ish) di codice.
Esempio di ingresso/uscita desiderato:
Input
Array 1 : MKNLASREVNIYVNGKLV
Array 2 : QMASREVNIYVNGKL
Output
Array 1 (or a simple print) : -MKNLASREVNIYVNGKLV
Array 2 (or a simple print) : QM---ASREVNIYVNGKL-
Grazie
è l'uscita corretta? 'IY' è scomparso, mentre' Q' rimane ancora? L'ordine di Array 2 è rilevante o semplicemente segue l'ordine di Array 1? –
Ho modificato l'uscita di input per chiarire il problema e l'ordine è pertinente. – metraon
Nell'articolo di Wikipedia, http://en.wikipedia.org/wiki/Sequence_alignment, questi sono fondamentalmente gli unici algoritmi elencati. È improbabile che gli interni siano in grado di trovare qualcosa di meglio. Inoltre, qual è il tuo scenario problematico ** più semplice ** rispetto al caso generale di allineamento della sequenza? –