Source: http://bioc.polytechnique.fr/biocomputing/courses/Alignements_M2.pdf