Saltar al contenido principal

Algoritmos clásicos

Los algoritmos clásicos son aquellos algoritmos que son ampliamente conocidos, estudiados y utilizados como referencia en el aprendizaje de programación y estructuras de datos, así como en la resolución de problemas computacionales fundamentales. Se consideran "clásicos" porque representan conceptos esenciales de ordenación, búsqueda, manipulación de datos que forman la base de muchas aplicaciones modernas.

En general, los algoritmos clásicos se caracterizan por ser:

  • Deterministas: producen siempre el mismo resultado para los mismos datos de entrada.
  • Bien definidos: cada paso del algoritmo está claramente especificado.
  • Fundamentales: sirven como base para algoritmos más complejos.

A continuación, se enumaeran algunos de los algoritmos clásicos más importantes.

Algoritmos de ordenación

  • Bubble Sort: compara elementos adyacentes y los intercambia si están en el orden incorrecto.
  • Insertion Sort: inserta cada elemento en su posición correcta dentro de una lista ya ordenada.
  • Selection Sort: selecciona el elemento mínimo de la lista no ordenada y lo coloca en la posición correcta.
  • Merge Sort: divide la lista en mitades, ordena cada mitad y luego las combina.
  • Quick Sort: elige un pivote, divide la lista en elementos menores y mayores al pivote y aplica recursión.

Algoritmos de búsqueda

  • Linear Search: recorre secuencialmente una lista hasta encontrar el elemento deseado.
  • Binary Search: busca un elemento en una lista ordenada dividiéndola repetidamente a la mitad.

Algoritmos de grafos

  • Breadth-First Search (BFS): recorre un grafo por niveles, explorando primero los nodos cercanos.
  • Depth-First Search (DFS): explora lo más profundo posible de cada rama antes de retroceder.
  • Dijkstra: encuentra el camino más corto desde un nodo origen a todos los demás en un grafo con pesos positivos.
  • Floyd-Warshall: calcula los caminos más cortos entre todos los pares de nodos.

Algoritmos de otros tipos

  • Karatsuba: multiplicación rápida de números grandes usando recursión.
  • Fibonacci: calcula los términos de la sucesión de Fibonacci, donde cada número es la suma de los dos anteriores.
  • Factorial: calcula el factorial de un número.
  • Euclides: cálculo del máximo común divisor (MCD).
  • Algoritmos de hashing: técnicas para distribuir datos en tablas de manera eficiente.

Estos algoritmos no solo son históricos o teóricos; muchos conceptos derivados de ellos siguen presentes en librerías modernas y sistemas de software.