Básicamente distinguimos entre algoritmos que exploran una fracción grande del espacio de alineamientos, con costes que se aproximan al producto de las longitudes de las secuencias alineadas, y algoritmos que simplifican la búsqueda en ese espacio, que pierden sensibilidad pero requieren menos tiempo y memoria para computar alineamientos.
El primer tipo de algoritmos, más exhaustivos, suelen utilizar programación dinámica para calcular alineamientos. Sirvan de ejemplo los algoritmos de Needleman & Wunsch (1970) y Smith & Waterman (1981) para alineamientos globales y locales, respectivamente, y disponibles aquí y aquí.
En las siguientes secciones veremos ejemplos de algoritmos, y herramientas basadas en ellos, del segundo tipo.