COMPLEJIDAD ALGORÍTMICA

Existen muchas alternativas de solución para un problema, debemos seleccionar el algoritmo más eficiente con el mejor conjunto de pasos, que su tiempo de ejecución sea el menor y cuyas líneas de código sean las menos posibles.

A simple vista parece algo muy simple, pero a medida que un programa crece, se requiere una medición más exacta y apropiada, para esto se realizan ciertas operaciones matemáticas que establecen la eficiencia teórica del programa, al estudio de estos casos se denomina Complejidad Algorítmica.

La complejidad algorítmica representa la cantidad de recursos (temporales y espaciales) que necesita un algoritmo para resolver un problema y por tanto permite determinar la eficiencia de dicho algoritmo, pero son medidas relativas al tamaño del problema.

Un algoritmo será más eficiente comparado con otro, siempre que consuma menos recursos, como el tiempo y espacio de memoria necesarios para ejecutarlo.

1. Complejidad Temporal: Tiempo de cómputo necesario para ejecutar algún programa.

2. Complejidad Espacial: Memoria que utiliza un programa para su ejecución, indica la cantidad de espacio requerido para ejecutar el algoritmo; es decir, el espacio en memoria que ocupan todas las variables propias al algoritmo. Para calcular la memoria estática de un algoritmo se suma la memoria que ocupan las variables declaradas en el algoritmo. Para el caso de la memoria dinámica, el cálculo no es tan simple ya que, este depende de cada ejecución del algoritmo.

Nosotros estudiaremos las complejidades temporales, con este fin, para cada problema determinaremos una medida N, que llamaremos tamaño de la entrada o número de datos a procesar por el programa, intentaremos hallar respuestas en función de dicha N.
Esto dependerá de la naturaleza del problema, por ejemplo, si hablamos de un arreglo se puede ver a N como el rango del arreglo, para una matriz, el número de elementos que la componen; para un grafo, podría ser el número de nodos o arcos, no se puede establecer una regla para N, pues cada problema tiene su propia complejidad.