Algoritmo BreakPointReversalSort
Qui di seguito verrà descritto l'algoritmo
BreakpointReversalSort(π) che elimina tanti breakpoints quanto è possibile
ad ogni passaggio al fine di raggiungere l'identity permutation.
Successivamente verranno definite le strips per evitare l’immissione di nuovi
breakpoints definendo anche dei teoremi inerenti.
BreakPointReversalSort(π)
1. while b(π) > 0
2. Tra tutte le possibili
inversioni,sceglie l'inversione p che minimizza b(π ∙ p)
3. π ← π ∙ p
4. output π
5. return
Il problema con questo algoritmo non è ben chiaro perché BRS è un miglior
algoritmo di approssimazione di SRS. Comunque il vero problema è che BRS può
lavorare per sempre! Come possiamo essere certi del fatto che eliminando alcuni
breakpoints non se introducano degli altri dando vita ad un circolo senza fine?
Definiamo strip, un intervallo
tra due breakpoints consecutivi in una permutazione, e cioè ogni massimo
segmento privo di breakpoints. Gli Strip si dividono in strip decrescente, striscia di elementi in ordine
decrescente e strip crescente, striscia
di elementi in ordine crescente. Per esempio la permutazione 0 2 1 3 4 5 8 7 6 9 consiste di 5
strips: 0, 2 1, 3 4 5, 8 7 6, e 9. Gli strips inoltre possono essere
divisi in strips crescenti (3 4 5) e strips decrescenti (2 1) e (8 7 6). Una
striscia costituita da un unico elemento può essere definita sia crescente che
decrescente. Noi sceglieremo di definirla sempre decrescente con l’eccezione
delle strips con 0 e n+1 ( che sono classificate come strips
crescenti). Presentiamo dunque i seguenti teoremi in primo luogo per dimostrare
che i cicli infiniti di eliminazione dei breakpoints non possono avvenire e in
secondo luogo per dimostrare che la percentuale di approssimazione
dell’algoritmo è 4. Sebbene la nozione di “teorema” e di “prova” può sembrare
oltremodo formale per quello che in fondo è un problema biologico, è importante
considerare che abbiamo modellato l’intero processo biologico in termini matematici.
Stiamo provando analiticamente che l’algoritmo va incontro ad alcune
aspettative. Questa nozione di prova senza sperimentazione è molto diversa da
quello che normalmente un biologo intende per prova, ma diviene invece
importante quando si lavora in bioinformatica.
Ridurre il numero di breakpoints