Complejidad computacional

La función de complejidad de un algoritmo es una función $f : \N \to \R_{\geq 0}$ tal que $f(n)$ es a cantidad de operaciones elementales que realiza el algoritmo en el peor caso para una entrada de tamaño $n$.

Notación Big O

Si $f$ y $g$ son dos funciones decimos que $f \in O(g)$ si existen $c \in \R$ y $n_0 \in \N$ tales que

$$ f(n) \leq c \cdot g (n) \quad \forall n \geq n_0 $$

Intuitivamente $f \in O(g)$ si $g(n)$ "le gana" a $f(n)$ para valores grandes de $n$.

Utilizamos la notación $O$ para expresar la función de complejidad computacional $f$ de un algoritmo.

Tiempo de ejecución en el peor caso