Link Search Menu Expand Document

Notación \(\mathcal{O}\)

Motivación

  • Nos interesan más la forma de la curva
  • Podemos descartar lo que pasa a los primeros números de n

Por lo que:

  • no interesan los factores constantes
  • no interesan los valores que toma la función cuando n es chico.

Propiedades y lemas

def. Sean \(f,g: \Bbb{N} \rightarrow \Bbb{R}^+\), decimos que \(f \in \mathcal{O}(g)\) si existen una constante c > 0 y un \(n_0 \in \Bbb{N}\) tales que para todo \(n \geq n_0\) vale:

\[f(n) \leq c.g(n)\]
  • f es mas chica que g :/
  • g domina a f asintóticamente :)

Ejemplos

\[n \in \mathcal{O}(n+5)\]

Si tomo \(c = 1, n_0 = 1\)

\[n \leq 1.(n+5) \forall n \geq 1\]

¿y al revés?

\[n+5 \in \mathcal{O}(n)\]

Si tomo \(c = 2, n_0 = 5\)

\[n+5 \leq 2.n\ \forall n \geq 5\]

Lema. Si \(f_1,f_2 \in \mathcal{O}(g)\) entonces \(f_1 + f_2 \in \mathcal{O}(g)\)

Dem. Sean \(f_1,f_2 \in \mathcal{O}(g)\)

Como \(f_1 \in \mathcal{O}(g)\), existen \(c_1 > 0\) y un \(n_1 \in \Bbb{N}\) tales que:

\[f_1(n) \leq c_1.g(n)\ \forall n \geq n_1\]

Análogamente, existen \(c_2 > 0\) y un \(n_2 \in \Bbb{N}\) tales que:

\[f_2(n) \leq c_2.g(n)\ \forall n \geq n_2\]

Si tomamos \(c = c_1 + c_2\) y \(n_0 = máx \{ n_1, n_2 \}\)

\(f_1(n) + f_2(n) \leq c_1.g(n) + f_2(n) \leq c_1.g(n) + c_2.g(n) = (c1+c2)*g(n)\) \(= c.g(n)\ \forall n \geq n_0\)

\[f_1(n) + f_2(n) \leq c.g(n)\ \forall n \geq n_0\]

Que es lo que queríamos probar.

Ejemplos.

\[3n^2 + n \in \mathcal{O}(n^2)\]

Por el lema anterior con probar que \(3n^2 \in \mathcal{O}(n^2)\) y \(n \in \mathcal{O}(n^2)\), estamos.

Para \(3n^2 \in \mathcal{O}(n^2)\) con \(c=3\) y \(n=1\).

Para \(n \in \mathcal{O}(n^2)\) con \(c=1\) y \(n=2\).

Luego nos quedamos con el c=3 y n=2 y esta resuelto.

Lema. Si \(f:\Bbb{N} \rightarrow \Bbb{R}^+\) es una función poliniomal, es decir:

\[f(n) = a_0 + a_1.n + a_2.n^2 + ... + a_d.n^d\]

Y sabiendo que \(a_d \neq 0\).

Entonces:

\[f \in \mathcal{O}( n^d )\]
  • Llamamos grado(p) = d

Ejemplo. \(n \notin \mathcal{O}(1)\).

Dem. Se prueba por absurdo. Suponemos que sí, entonces c > 0 y un \(n_0 \in \Bbb{N}\) tal que:

\[n \leq c\ \ \forall n \geq n_0\]

Pero esto es como suponer que ahí una constante superior a todos los naturales, y sabemos que no importa cuan grande sea una constante, si le calculamos el techo y le sumamos 1 tenemos un natural mayor.

Ejemplo. \(n^2 \notin \mathcal{O}(n)\).

Dem. También se prueba por absurdo. Suponemos que sí, entonces c > 0 y un \(n_0 \in \Bbb{N}\) tal que:

\[n^2 \leq c.n\ \ \forall n \geq n_0\]

Si divido ambos lados por n…

\[n \leq c\ \ \forall n \geq n_0\]

Lo que en el caso anterior dijimos que era una contradicción.

Propiedad transitiva

Si \(f \in \mathcal{O}(g)\) y \(g \in \mathcal{O}(h)\) entonces \(f \in \mathcal{O}(h)\)

dem. Sean \(f \in \mathcal{O}(g)\)

Como \(f \in \mathcal{O}(g)\), existen \(c_1 > 0\) y un \(n_1 \in \Bbb{N}\) tales que:

\[f(n) \leq c_1.g(n)\ \forall n \geq n_1 \ \ (1)\]

Y tambien \(b \in \mathcal{O}(h)\)

Como \(g \in \mathcal{O}(h)\), existen \(c_2 > 0\) y un \(n_2 \in \Bbb{N}\) tales que:

\[g(n) \leq c_2.h(n)\ \forall n \geq n_2 \ \ (2)\]

Supongamos que \(c_2\) es igual al cociente de dos constantes c y \(c_1\), y que \(n_0 = máx {n_1, n_2}\).

\[g(n) \leq \frac{c}{c_1}.h(n)\ \forall n \geq n_0 \ \ (3)\]

Múltiplico ambos terminos por \(c_1\).

\[c_1.g(n) \leq c.h(n)\ \forall n \geq n_0 \ \ (4)\]

Por la ecuacion (1) sabemos:

\[f(n) \leq c_1.g(n) \leq c.h(n)\ \forall n \geq n_0 \ \ (4)\]

Que es lo que queríamos probar.

Logaritmos. \(log_a(n) \in \mathcal{log_b(n)}\).

Sabemos que:

\[log_a(n) = x donde a^x = n\] \[log_b(n) = x donde b^x = n\]

¿Son válidas estas afirmaciones?

\(log_3(n) \in? \mathcal{log_2(n)}\)
\(log_2(n) \in? \mathcal{log_3(n)}\)

Lema. Órden de los logaritmos.

Si a,b > 1 entonces \(log_a(n) \in \mathcal{log_b(n)}\)

Dem. Recordemos que \(log_a(n) = \frac{log_b(n)}{log_b(a)}\).

Tomamos los términos. \(log_b(n) = x\)
\(log_b(a) = y\)

Entonces \(b^x = n, b^y = a\).

Por lo que \(a^{1/y} = (b^y)^{1/y} = b\)

Y \(a^{1/y} = (b^y)^{1/y} = b\)

Y \(a^{x/y} = (a^{1/y})^{x} = b^x = n\)

Por lo que \(log_a(n) = x / y = \frac{log_b(n)}{log_b(a)}\).

Entonces como la relación entre cualquier par de logaritmo es un número constante, es fácil obtener una constante para ajustar a c.

Ejemplo. \(2^n \in \mathcal{O}(3^n)\).

Esto se ve \(2^n \leq 3^n\ \forall\ n \geq n_0\)

Y al revés? \(3^n \in \mathcal{O}(2^n)\)?

Vimos que la suma de órdenes vale, pero ¿que pasá con el producto f_1 * f_2?

Formalmente, si \(f_1,f_2 \in \mathcal{O}(g)\) entonces \(f_1 . f_2 \in \mathcal{O}(g)\)?

Supongamos que \(g(n) = n, f_1(3n)\) y \(f_2(2n)\), \(f_1(n).f_2(n) = 3n.2n. = 6n^2\) que vimos más arriba que no está en el órden de n.

Pero sí se conserva la transitividad.

Lema. Si \(f_1 \in \mathcal{O}(g_1)\) y \(f_2 \in \mathcal{O}(g_2)\), entonces \(f_1.f_2 \in \mathcal{O}(g_1.g_2)\)

Lema. “Exponenciales domina líneal”

\[n \in \mathcal{O}(2^n)\]

dem. Por inducción.

1) Para n=1:

\[1 leq 2^1 = 2\]

2) \(P(n) \rightarrow P(n+1)\)

Por HI podemos suponer que \(n \leq 2^n\).

Entonces:

\[n + 1 \leq 2^n + 1 \leq 2^n + 2^n = 2.2^n = 2^{n+1}\]

Con lo que llegamos a la conclusión que queríamos probar.

Lema. “Lineal domina a logarítmica”

\[log(n) \in \mathcal{O}(n)\]

Dem. Veamos que \(log_2 \leq n\)

Del punto anterior vimos que:

\[n \leq 2^n\]

Aplicando a ambos miembros una función monótona creciente como el logaritmo:

\(log(n) \leq log_2(2^n) = n\).

Que es lo que queríamos probar.

Teorema. “Exponencial domina a polinomial”

Si \(p \geq 0\), \(n^p \in \mathcal{O}(2^n)\)

Dem.

Afirmo: \(\forall k \in \Bbb{N}\) vale:

\[({\frac{n}{p}})^k \leq ({2^{n/p}})^k\]

Si k = p, $$ \forall n \geq p, tendriamos que:

\[({\frac{n}{p}})^p \leq ({2^{n/p}})^p\]

Lo que equivale a que:

\[({\frac{n^p}{p^p}}) \leq 2^{n}\] \[n^p \leq p^p.2^n\ \ \forall n \geq p\]

Si tomamos p^p como c y p como \(n_0\) obtuvimos lo que queríamos probar.

\[n^p \leq c.2^n\ \ \forall n \geq n_0\]

Otras Notaciones utilizadas

NotaciónInterpretaciónEjemplos
\(f \in \mathcal{O}(g)\)f está dentro del órden de g\(f(2n+3) \rightarrow g(n), g(n^2), g(2^n)\)
\(f \in \Omega(g)\)g está dentro del órden de f\(f(n^p), p\geq2 \rightarrow g(n), g(n^2)\)
\(f \in \Theta(g)\)f está dentro del órden de g Y g está dentro del órden de f\(f(2n) \rightarrow g(n), g(5n), g(n/2)\)
\(f \in \omicron(g)\)f “crece” más lento que g\(f(2n) \rightarrow g(n^2), g(2^n)\)

Definición de \(\omicron\)

Vamos a usar la definición del libro de Michael Sipser, basada en límite.

def. Sean \(f,g: \Bbb{N} \rightarrow \Bbb{R}^+\), decimos que \(f \in \omicron(g)\) si vale:

\[\lim_{n \to +\infty} \frac{f(x)}{g(x)} = 0\]

Es decir, \(\forall\ \epsilon > 0\), \(\exists n_0 \in \Bbb{N}\ \forall n \geq n_0\) tal que:

\[\frac{f(n)}{g(n)} < \epsilon\]

Ejemplos

\(n \in \omicron(n^2)\), \(2n \notin \omicron(n)\)

Expresiones con Notación \(\mathcal{O}\)

ExpresiónSignifica…
\(3n^2 +\mathcal{O}(n)\)\(3n^2 + f(n)\) donde \(f \in \mathcal{O}(n)\)
\(2^{\mathcal{O}(n)}\)\(2^{f(n)}\) donde \(f \in \mathcal{O}(n)\)
\(n^{\mathcal{O}(1)}\)\(n^{f(n)}\) donde \(f \in \mathcal{O}(1)\)