Lait301 Ai Ortizanaya Hugo
Lait301 Ai Ortizanaya Hugo
Lait301 Ai Ortizanaya Hugo
En el mundo del software, no todo es escribir código y programar como si no hubiese un mañana. Más allá de entender nuestro objetivo y lo que
queremos hacer al programar, existen otras variables que tenemos que tener en cuenta al momento de desarrollar software. Dígase complejidad,
mantenibilidad, escalabilidad, algoritmos a implementar, etcétera. Una de las más importantes es el rendimiento de nuestra aplicación en cuanto a
la implementación de un algoritmo.
El rendimiento de nuestro algoritmo permitirá, no sólo hacernos sentir como que somos los dioses de la tecnología al hacer que el software que
hemos creado haga mil y un cosas por segundo, sino también ayudará a que el usuario (dígase usuario común o un profesional en el ámbito
tecnológico) no tenga que esperar durante horas a que la tarea para la que nuestro software fue desarrollado, se cumpla, sin importar que las
computadoras y dispositivos de hoy en día sean lo más capaces para desarrollar una larga lista de tareas medianamente complejas y otra lista un
poco menos larga de tareas complejas.
Existen varios factores que interfieren al hablar de rendimiento en nuestro algoritmo, como lo son: el uso de espacio en disco, de memoria para su
ejecución, tiempo de ejecución en general, etcétera.
Una de las herramientas más importantes para determinar el rendimiento de nuestro algoritmo es la Notación Big O.
NOTACION BIG O
La notación Big O es una herramienta muy funcional para determinar la complejidad de un algoritmo que estemos utilizando, permitiéndonos medir
su rendimiento en cuanto a uso de espacio en disco, recursos (memoria y ciclos del reloj del CPU) y tiempo de ejecución, entre otras, ayudándonos a
identificar el peor escenario donde el algoritmo llegue a su más alto punto de exigencia.
Cuando investigues un poco más sobre el tema, te encontrarás con temas matemáticos algo complejos, que, si tú especialidad no eran las
matemáticas, creo que te sentirás algo confundido y ansioso. Pero no te preocupes, te explicaré lo más amigable y entendible posible, más cuando
hablemos de logaritmos. A su vez, acompañaré la explicación con un ejemplo en Javascript relacionado con el tema.
O(1): Complejidad Constante
La complejidad constante nos indica que, sin importar el tamaño de entrada o salida, el tiempo de
ejecución y recursos utilizados por nuestro algoritmo siempre será el mismo. Podemos verlas
como funciones “estáticas” debido a que siempre se comportarán de la misma manera, no
importa las veces que sea ejecutada ni dónde. Por ejemplo:
Tomando el ejemplo anterior, podemos ser testigos de un pequeño algoritmo con complejidad
constante. Esto gracias a que, no importa el tamaño del arreglo que sea pasado como argumento,
el resultado siempre será obtener el último elemento que este arreglo contenga. La única variante
será el resultado entregado, ya que el dato contenido en el último espacio de un arreglo puede
variar.
La complejidad puede incrementarse con más ciclos anidados, hasta llegar a ser una complejidad n
* n.
REFRENCIAS