Algoritmi
di approssimazione
Abbiamo visto che il SimpleReversalSort non dà luogo a soluzioni
ottimali. Gli algoritmi ottimali sono infatti sconosciuti per molti problemi,
di modo che gli informatici spesso trovano un compromesso attraverso l’uso
di algoritmi di approssimazione che producono una soluzione approssimata
piuttosto che una ottimale. La percentuale di approssimazione di un algoritmo
A su input π è:
dove A(π) è la soluzione
prodotta dall’algoritmo A e OPT(π) è la soluzione ottimale
del problema.
La percentuale di approssimazione
dell’algoritmo A è definita come la sua massima percentuale di
approssimazione su tutti gli input di grandezza n. Per l’algoritmo
A che minimizza l’obiettivo (algoritmo di minimizzazione):
Per l’algoritmo
di massimazione:
in effetti un algoritmo di approssimazione dà lo scenario del
caso peggiore di quanto lontano il risultato di un algoritmo può essere
da un ipotetico algoritmo perfetto. La percentuale di approssimazione di un SRS è
almeno (n-1)/2 così il biologo non ha alcuna certezza che questo
algoritmo arrivi in qualche punto vicino alla soluzione corretta. Per esempio
se n è 1001 questo algoritmo può arrivare ad una serie di
inversioni che può essere grande 500 volte come l’ottimale.
Il nostro scopo è individuare algoritmi di approssimazione che
garantiscano performance migliori, per esempio, un algoritmo con una
percentuale di approssimazione di 2 o anche meglio di 1,01. Certo un algoritmo
con una percentuale di approssimazione pari a 1 (per definizione un algoritmo corretto e
ottimale) sarebbe l’acme della perfezione, ma tali algoritmi sono
difficili da trovare. Al momento il miglior algoritmo conosciuto per riordinare
le inversioni ha una performance garantita.