Clasificación
La clasificación de algoritmos informáticos puede hacerse de varias formas, dependiendo de los criterios que se consideren. Aquí está una clasificación basada en diferentes enfoques:
Clasificación por estructura de datos
- Algoritmos de ordenación: Organizar un conjunto de elementos en orden ascendente o descendente.
- Por ejemplo, ordenación rápida (quick sort).
- Algoritmos de búsqueda: Localizar un elemento específico dentro de una estructura de datos.
- Por ejemplo, búsqueda lineal (linear search) y búsqueda binaria (binary search).
Clasificación por estrategia de resolución
- Algoritmos de divide y vencerás: Resolver un problema dividiéndolo en problemas más pequeños y resolviéndolos de forma recursiva.
- Por ejemplo, algoritmo de Karatsuba (para multiplicación de números grandes).
- Algoritmos de programación dinámica: Resolver problemas almacenando resultados de subproblemas para evitar cálculos redundantes.
- Por ejemplo, el cálculo del número de Fibonacci (Fibonacci Sequence)
- Algoritmos voraces (greedy algorithms): Estrategia de resolución de problemas en la que se toma la decisión óptima local en cada paso con la esperanza de que estas decisiones locales lleven a una solución óptima global.
- Algoritmos de backtracking: Explorar todas las posibles soluciones y retroceder cuando se detecta que una opción no es viable.
- Por ejemplo, el problema de las reinas (N-Queens Problem)
- Algoritmos de búsqueda y optimización: Buscar soluciones óptimas o explorar el espacio de soluciones para problemas complejos.
Clasificación por paradigma
- Algoritmos iterativos: Utilizan bucles para repetir un conjunto de operaciones hasta que se cumple una condición.
- Algoritmos recursivos: Resuelven problemas llamando a la misma función dentro de sí misma, normalmente para dividir el problema en problemas más pequeños.
- Algoritmos concurrentes y paralelos: Realizan múltiples tareas simultáneamente para mejorar la eficiencia y el tiempo de ejecución.
- Algoritmos MapReduce: Para procesamiento paralelo de grandes conjuntos de datos.