Tesi Robotica Un co-processore per Stereo-Matching: Architettura | Page 38

i i “LP_Tesi” — 2011/9/9 — 21:20 — page 38 — #38 i 3.1. CREAZIONE DELLA MATRICE DEI PUNTEGGI i 38 di indice (i,j) è il massimo valore dell’allineamento che si otterrebbe avendo a disposizione due sotto stringhe di dimensione i e j. Entrando più nello specifico se i due caratteri che si trovano in posizione i e j sono uguali allora ci ritroviamo in una situazione di match, se questo non dovesse succedere è necessario esaminare i dintorni della cella (sopra e sinistra o north e west) per capire quale sia la casella che porta ad avere un allineamento con valore maggiore. 3.1 Creazione della matrice dei punteggi Passiamo ora alla descrizione dell’algoritmo in pseudo-codice per il riempimento della matrice dei punteggi, una prima versione è disponibile alla consultazione in Alg:3.1. Algoritmo 3.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 } In output riceveremo una matrice di dimensioni n ∗ m, dove n e m sono rispettivamente la lunghezza di sequence1 e sequence2. A questo punto le stringhe vengono analizzate sequenzialmente comparando carattere per carattere. Come detto prima se i due caratteri sono identici alla casella viene dato un punteggio equivalente alla casella sulla diagonale (sopra a sinistra) più il valore di match (stabilito precedentemente con tecniche ben determinate), in caso contrario al valore della cella sulla diagonale viene aggiunto il valore di mismatch e viene i i i i