Notaciones Originales Versus Notaciones Escolares El Caso de La Derivada
NOTACIONES ASINTÓTICAS
description
Transcript of NOTACIONES ASINTÓTICAS
NOTACIONES ASINTÓTICAS• Se utilizan para estudiar tiempos de ejecución u ocupaciones de memoria.
• Representan la forma en que crece una función.
• En general no consideran constantes, que no son valores propios de los algoritmos.
• Son asintóticas pues representan el comportamiento cuando el tamaño de la entrada tiende a infinito, pues para valores grandes es cuando puede haber problemas de tiempo o memoria.
NOTACIÓN O• Da una cota superior de la forma en que crece el tiempo de ejecución.
• DEFINICIÓN:
Dada una función f:N→R+, llamamos orden de f al conjunto de todas las funciones de N en R+ acotadas superiormente por un múltiplo real positivo de f para valores de n suficientemente grandes.
Se denota O(f), y será:
O(f)={t: N→R+ / cR+, n0N, n>=n0 : t(n)<=cf(n)}
NOTACIÓN O
•Se consideran funciones con dominio en N pues las entradas tendrán tamaños naturales:
Valor de un número del que se calcula el factorial,
Número de aros a mover en las Torres de Hanoi,
Número de datos a ordenar,
Número de nodos y aristas de un grafo (en este caso la entrada es NN , que es isomorfo a N)
Valor de un número real (en este caso la entrada es su representación en forma binaria)
NOTACIÓN O
• Se consideran funciones con rango R+ pues el tiempo de ejecución no puede ser negativo.
• Sólo interesa lo que pase asintóticamente (n>=n0), por lo que podríamos considerar funciones no definidas en todo N o que tomen valores negativos para algunos valores de n.
• No se tienen en cuenta las constantes del tiempo de ejecución (t(n)<=cf(n)).
NOTACIÓN O
• Al estudiar un tiempo de ejecución, t, se pretende obtener la función f que acote a t siendo lo más cercana posible a ella, por lo que se tiene una relación de orden en el conjunto de los órdenes:
O(f)<=O(g) si tO(f) : tO(g)
y se intenta encontrar el menor O(f) / tO(f)
• La relación de orden es una inclusión de conjuntos, por lo que se escribe O(f)<=O(g) o O(f)O(g)
RELACIONES ENTRE ÓRDENES
• O(c)=O(d), con c y d constantes positivas.
• O(c)O(n)
• O(cn+b)=O(dn+e), con c y d constantes positivas.
• O(p)=O(q), si p y q son polinomios del mismo grado y con coeficiente principal positivo.
• O(p)O(q), si p y q son polinomios con coeficiente principal positivo y el grado de p es menor que el de q.
• O(p)O(2n), si p es un polinomio.
NOTACIÓN Ω• Da una cota inferior de la forma en que crece el tiempo de ejecución.
• DEFINICIÓN:
Dada una función f:N→R+, llamamos omega de f al conjunto de todas las funciones de N en R+ acotadas inferiormente por un múltiplo real positivo de f para valores de n suficientemente grandes.
Se denota Ω(f), y será:
Ω(f)={t: N→R+ / cR+, n0N, n>=n0 : t(n)>=cf(n)}
RELACIONES ENTRE OMEGAS
• Ω(c)= Ω(d), con c y d constantes positivas.
• Ω(c) Ω(n)
• Ω(cn+b)= Ω(dn+e), con c y d constantes positivas.
• Ω(p)= Ω(q), si p y q son polinomios del mismo grado y con coeficiente principal positivo.
• Ω(p) Ω(q), si p y q son polinomios con coeficiente principal positivo y el grado de p es menor que el de q.
• Ω(p) Ω(2n), si p es un polinomio.
NOTACIÓN (orden exacto)• Da la forma en que crece el tiempo de ejecución.
• Son las funciones a las que f acota superior e inferiormente:
(f)= Ω(f)O(f)
• Es equivalente a:
(f)={t: N→R+ / c,dR+, n0N, n>=n0 : cf(n)<=t(n)<=df(n)}
• No hay relaciones de inclusión.
NOTACIÓN o (o pequeña)• Se utiliza para comparar tiempos con el mismo orden.
• Aparecen constantes, por lo que es necesario hacer suposiciones sobre: conste de las operaciones, conteo de instrucciones, …
• Se define:
o(f)={t: N→R+ / limn→ t(n)/f(n)=1}
• No hay relaciones de inclusión.
• (2n)= (3n), pero o(2n)≠o(3n)
PROPIEDADES• fO(g) y gO(h) fO(h)
fΩ(g) y gΩ(h) fΩ(h)
• fO(g) O(f)O(g)
fΩ(g) Ω(f)Ω(g)
• O(f)O(g) fO(g)
Ω(f)Ω(g) fΩ(g)
•O(f)=O(g) fO(g) y gO(f)
Ω(f)=Ω(g) fΩ(g) y gΩ(f)
PROPIEDADES
• O(f)=O(g)Ω(f)=Ω(g) (f)=(g) f(g)
• O(f+g)=O(max(f,g))
Ω(f+g)=Ω(max(f,g))
Para calcular los órdenes en un programa sólo es necesario hacerlo de la parte con mayor orden.
COMPARACIÓN DE ÓRDENES
• limn→ f(n)/g(n)R+ O(f)=O(g), Ω(f)=Ω(g), (f)=(g)
• limn→ f(n)/g(n)=0 O(f)O(g), Ω(g) Ω(f)
• limn→ f(n)/g(n)=+ O(g)O(f), Ω(f)Ω(g)
COMPARACIÓN DE ÓRDENES
O(1)O(log n)O(n1/2) O(n) O(n log n) O(n log n log n) O(n2) O(n3) O(2n) O(n!) O(nn)
O((log n)p) O(n1/q)
• Con Ω cambia el sentido de las inclusiones
NOTACIONES CONDICIONALES• Algunos algoritmos más fácil de estudiar cuando la entrada cumple alguna restricción (típicamente que sea potencia de 2).
DEFINICIÓN:
Dada una función f:N→R+, y P:N→{true,false}, llamamos orden de f según P a:
O(f|P)={t: N→R+ / cR+, n0N, n>=n0 :
P(n) t(n)<=cf(n)}
NOTACIONES CONDICIONALES
• Para quitar la restricción de ser potencia de un número se aplica el
TEOREMA:
Si b>=2 es un entero y f:N→R+eventualmente no decreciente (no decreciente a partir de algún valor) y b-armónica (f(bn)O(f(n))) y t:N→ R+eventualmente no decreciente tal que t(n)(f|n es potencia de b), entonces t(n)(f).
NOTACIONES DE VARIOS PARÁMETROS
• Algoritmos en los que el tiempo depende de más de un parámetro (ej: algoritmos en grafos dependen de número de nodos y de aristas).
• Dada una función f:Nm→R+, llamamos orden de f al conjunto de todas las funciones de Nm en R+ acotadas superiormente por un múltiplo real positivo de f para valores de n1, n2,…, nm suficientemente grandes.
O(f)={t: Nm →R+ / cR+, n1, n2,…, nm N,
k1>=n1, k2>=n2, …, km>=nm :
t(k1, k2, …, km)<=cf(k1, k2, …, km)}