Vous êtes sur la page 1sur 8

NOTACION O-grande.

O la nacin asinttica, nos ayuda a describir el comportamiento de una funcin al lmite, a este
se le da tambin uso en las ciencias de la computacin, esta nos ayuda a describir el
comportamiento de un algoritmo ya sea en tiempo(cuantas unidades de tiempo tardara en
ejecutarse) y requisitos(la cantidad de memoria que necesitara para ejecutarse), todo esto
basado en la cantidad de elemento que recibe y sobre los que opera, a esto se le conoce
mayormente como Complejidad algortmica este anlisis es muy utili para algoritmos con
cantidad de datos de entrada masivos.

Ejemplo:

Supongamos que tenemos una fila de n cajas y solo una contiene algo en su interior, asique
siendo que solo podemos abrir un caja a la vez, en el peor de los casos tendremos que abrir n
cajas, por lo que la complejidad del algoritmo seria lineal u O(n).

Una gran ayuda al utilizar esta notacin es que es independiente del entorno (donde o quien lo
ejecute).

Con el ejemplo anterior , sea que usted puede abrir cada caja en 3 segundo , otro amigo lo
podra hacer cada 2 segundos, no importara quien tardase menos pues los dos al utilizar el
mismo algoritmo, la complejidad seguir siendo la misma(lineal).

Ahora si en determinada computadora un algoritmo demora ms que en otro:

La unidad del tiempo seria: n*c


c: depende del entorno.(descartada pues es constante)

De forma matemtica:

Si un algoritmo desea resolver una ecuacin de segundo grado, esta ser contante o O(1) pues
siempre har los mismos pasos, pero si es como en el ejemplo de ls cajas seria O(n) pues es
conforme la cantidad de datos que des.

Luego si nosotros en vez de una fila de n cajas colocamos un espacio n*n cajas en el que
tambin solo una contiene algo en su interior, a esto se le designara O(n^2) (complejidad
cuadrtica) y as sucesivamente conforme las dimensiones que se le de al problema; a esto se
le designara O(n^x) (complejidad polinomial).

X: dimensiones del problema.

Si en caso se tenga un algoritmo que vayan dividiendo y descartando partes del problema
sobre que estn trabajando. A esto mayormente se le conoce como Divide y vencers; el
cual contiene varios algoritmos basados en eso como lo son:

-Heap sort
-Merge sort
-Quick sort

A este tipo de problemas se le designa O(n log n) (complejidad logartmica).

Otro caso el cual es muy diferente de al anterior, son de los algoritmos con complejidad
Factorial denotados por O (n!), para este caso con una entrada conforme vaya aumentando
este aumentara en forma factorial, es decir:
n!=n(n-1)(n-2)(1).

Esta mayormente se utiliza para encontrar un camino ms corto entre los tantos que existe

IMPORTANCIA E LA NOTACIO O-grande

Con el poder computacional que tenemos hoy en da un algoritmo que tenga como
entrada un grupo de datos pequeo o mediano puede terminar en un tiempo
aceptable, sin embargo si no analizamos su complejidad no estaremos seguros si el
algoritmo funcionar con un grupo de datos grande (como algunos millones de datos).

A la capacidad de un algoritmo de manejar correctamente un aumento continuo de


entradas se le llama escalabilidad.
Por ejemplo, supongamos que has desarrollado dos algoritmos de ordenamiento y
quieres comparar su tiempo de ejecucin, a cada uno le das una entrada de 1000
elementos y el algoritmo 1 (A) tarda 5 segundos, mientras que el algoritmo 2 (B) tarda
9 segundos. Es mejor el algoritmo 1? Tal vez, pero an no podemos estar tan seguros.

Despus de analizar su complejidad resulta que el A es n log n y el B es log n, en un


principio tal vez B sea ms lento, pero cuando el nmero de elementos sea lo
suficientemente grande B ser ms rpido que A, es decir, va a escalar mejor.
AQU EN C++ -- 1*<n*n SERIA 2n*n yaque c++ == c=c+1 por lo que seria asignacin y
operacin a la vez

Vous aimerez peut-être aussi