| calcolo della copertura | top |
Esaminando l'
[algoritmo di copertura] si osserva che l'idea dell'algoritmo è di scorrere
tutto
T, analizzando le basi una per una o eventualmente,
se si cade nel caso 1, anche saltando alcune brevi sequenze.
Diventa importante il parametro
l: affinchè il confronto
delle sequenze
S e
T sia significativo in termini
statistici, cioè, affinchè le sequenze selezionate per la copertura
abbiano una buona probabilità di essere significative e non siano
semplicemente state prese per caso, occorre utilizzare un
l
superiore a
logk(n).
Più è grande
l, più il risultato della copertura è attendibile.
Di contro però, con l'aumentare dell'attendibilità, diminuisce la sensibilità.
Questo perchè si ignorano tutte le sequenze più piccole di
l che possono aver
avuto il ruolo evolutivo che si va cercando.
Occorre quindi selezionare accuratamente un valore di
l a seconda
del rapporto sensibilità/attendibilità che si desidera ottenere.
Nella maggior parte dei test eseguiti è stato scelto di utilizzare
l=
2 logk(n).
Se nell'applicazione dell'algoritmo cado nel caso 1 il tempo
necessario per concludere l'iterazione è:
- nel caso di fallimento, e quindi avanzando poi da 1 fino a
l
posizioni, il tempo di eseguire il match di una sequenza lunga fino a
l.
- nel caso di successo trovando una sequenza lunga
z,
e quindi avanzando poi di
z caratteri, il tempo di eseguire
il match di una sequenza lunga
l e poi di un'altra lunga
z.
Se nell'applicazione dell'algoritmo cado invece nel caso 2 il tempo
necessario per concludere l'iterazione è:
- nel caso di fallimento, e quindi avanzando poi di 1 sola
posizione, il tempo di eseguire due match di una sequenza lunga fino a
l
per determinare massimo suffisso e massimo prefisso, nel caso pessimo
si dovranno poi eseguire fino ad altri
l-1 match
lunghi fino a
l.
- nel caso di successo trovando una sequenza non sovrapposta lunga
z,
e quindi avanzando poi di
z caratteri, il tempo di eseguire
il match di una sequenza lunga
z.
- nel caso di successo trovando una sequenza sovrapposta lunga
z,
e quindi avanzando poi da 1 fino a
z-1 caratteri, il tempo può arrivare
ad essere lo stesso richiesto da un fallimento.
Il tempo richiesto nel caso medio per terminare la computazione
dipende dalla probabilità di verificarsi dei casi e dei sottocasi: per
l elevati, ottenendo dati attendibili ma poco sensibili, ci
si imbatte principalmente nel caso 1 dell'algoritmo, per
l inferiori ci si imbatte invece più di frequente nel caso 2,
questo porta a stime medie di tempo diverse tra di loro.
Statistiche :
[influenza della lunghezza minima l] nel
calcolo della copertura.
Le stime sui casi medi sono state fatte utilizzando
l>
2 logk(n).
Le risorse di tempo sono:
- caso pessimo :
O(m l2)
- caso medio (sequenze casuali) :
O(m)
- caso medio (sequenze genetiche umane, k=4) :
O(m)
Mentre le risorse di spazio sono:
- caso generico :
O(n+k)
- caso biologico (k=4) :
O(n)