Tesi Robotica Analisi, progettazione e implementazione... | Page 65

i i “LP_Tesi” — 2013/10/17 — 18:27 — page 65 — #65 i 2.2. N-W ALGORITHM i 65 Algoritmo 2.1 Needleman–Wunsch 1 2 3 for i = 1 to length(sequence1){ for j = 1 to length(sequence2){ north <- M(i-1,j) + gap 4 if( character1 = character2 ) diagonal <- M(i-1,j-1) + match else diagonal <- M(i-1,j-1) + mismatch endif 5 6 7 8 9 10 west <- M(i,j-1) +gap 11 12 M(i,j) <- max(north, diagonal, west) 13 } 14 15 } fra questi tre diventerà il contenuto della casella analizzata. Ecco un esempio (Tab:2.1) di come la matrice può presentarsi alla fine della computazione, avendo come input: sequence1 = EDECE, sequence2 = ADCE, match = 2, mismatch = 0, gap = -1. - A D C E 0 -1 -2 -3 -4 E -1 0 -1 -2 -1 D -2 -1 2 1 0 E -3 -2 1 2 3 C -4 -3 0 3 2 E -5 -4 -1 2 -5 Tabella 2.1: Allineamento Ma questa è solo una delle possibili implementazione dell’algoritmo, a voler essere precisi, pur essendo molto semplice, alcune specializzazioni di questo algoritmo in campo didattico sono molto utili, primo fra tutti l’algoritmo per la ricerca della più lunga sotto sequenza comune (LCS), basta fissare match=1, i i i i