Anda di halaman 1dari 10

NOTACIN ASINTTICA

Ahora bien, la eficiencia de un algoritmo se acostumbra a expresar como una funcin


del tamao de la entrada: Si estamos en una habitacin con 100 puertas y detrs de cada
una de ellas hay un nmero, el algoritmo para encontrar el mnimo de esos nmeros
tardar 100 operaciones de abrir puerta y leer nmero en finalizar. Si, por el contrario,
hubiese 100.000 puertas tardara, como es obvio, 1.000 veces ms que antes.
As, en general, podemos decir que el algoritmo que consiste en abrir las puertas una
por una y leer el nmero (memorizando siempre cual es el mnimo de los ledos hasta
ahora) es un algoritmo que realiza un nmero de operaciones directamente proporcional
al nmero de puertas. Esto puede expresarse de manera compacta diciendo que es un
algoritmo O(n) donde n es el nmero de puertas y la O() implica proporcionalidad
directa.

OMEGA GRANDE
La funcin omega grande se usa para especificar una cota inferior para la velocidad de
crecimiento de una funcin f(n) cuando est en funcin de n. Y se usa la notacin:

T(n) es

que se lee T(n) es omega grande de g(n) para un nmero infinito de

valores de n.
Ejemplo: Verificar la funcin

para todos los valores n>=0

1+2>=1+3>=1
OMEGA MINSCULA
La notacin
con

muy raramente se usa en ciencias de la computacin. La relacin de

es similar a la relacin de la o pequea con la O grande en trminos

asintticos.
La relacin
una constante entera

se cumple si para cualquier constante real


tal que

para cada entero

, existe
.

Esto implica que:

Por ejemplo,

, pero

Figura 1. La presente grfica muestra una comparacin entre los diferentes tipos de
notaciones, mostrndose como aumenta la carga computacional respecto al incremento
de los datos de entrada.

ECUACIONES DE RECURRENCIA
MTODO POR SUSTITUCIN

Se resolvi la ecuacin de recurrencia para el tiempo de ejecucin del algoritmo, por


el mtodo por sustitucin.
La ecuacin es la siguiente:
1)

x(n) = n + 2 x(n/2)

con la condicin de borde


(2)

x(1) = 1

Necesaria para obtener una solucin particular de la ecuacin de recurrencia.


El mtodo por sustitucin consiste en proponer una forma para la solucin de la
ecuacin de recurrencia, esto es: la notacin asinttica a la cual pertenece, y sustituir
o reemplazar dicha forma en el lado derecho de la ecuacin (1); se obtiene de esta
manera una expresin para x(n) que debe satisfacer adems la ecuacin de borde o
de frontera (2). En el proceso se calculan ciertas constantes que aparecen en la
forma propuesta, lo que conduce a una solucin particular de la ecuacin de
recurrencia. Si la expresin que resulta de todo este proceso es consecuencia lgica
de la premisa que propone la forma de la solucin, entonces dicha forma es correcta.
En el caso presente, la forma propuesta para x(n) fue la siguiente:
3)

x(n) = O(n lg n)

Es decir,
4) Existe n0 y C, para todo n>=n0, x(n) <= C n lg(n)
Al reemplazar (3) en el lado derecho de (1), se obtiene
(5)

x(n) <= Cn lg n , para C >= 1

Al tratar de hacer que x(n) segn esta expresin cumpla con la condicin de borde,
tuvimos un problema porque no existe valor de C que multiplicado por 0 sea mayor
o igual que 1. Entonces tuvimos que cambiar la condicin de borde de n0 = 1 a n0 =
2 de tal manera que la nueva condicin de borde fuera consistente con la anterior; la
nueva condicin de borde fue:
(6)

x(2) = 4

Ahora s, x(n) segn (5) satisface la condicin de borde (6) cuando C toma un valor
mayor o igual que 2.
Entonces, tenemos para x(n) la expresin:
(7)

x(n) <= 2 n lg(n)

MTODO POR ITERACIN


Los algoritmos iterativos son algoritmos que se caracterizan por ejecutarse mediante
ciclos. Estos algoritmos son muy tiles al momento de realizar tareas repetitivas (como
recorrer un arreglo de datos). Casi todos los lenguajes de programacin modernos tienen
palabras reservadas para la realizacin de iteraciones.
La opcin al uso de algoritmos iterativos es el uso de la recursividad en funciones. Estas
implican una escritura ms sencilla (corta), tanto para su implementacin como para su
entendimiento, pero en contraparte, utilizan mucho ms recursos de sistema que una
iteracin debido a que necesitan, adems del uso del procesador, la pila del sistema para
"apilar" los diversos mbitos de cada funcin.
Ejemplo de un ejercicio iterativo
#include <stdio.h>
int main(int argc, char** argcv)
{
for(int i = 1; i <= 10; i++) {
printf("Esta es la vez %d que hago esto!\n", i);
}
return 0;
}

MTODO DE TEOREMA MAESTRO


Sean a >=1 y b >=1 constantes, sea d(n) una funcin y sea T(n) definido en los enteros
no negativos por la recurrencia

T(n) aT ( ) d(n)
b n = + T(n) puede ser acotado asintticamente como sigue:
1 Si d(n) = O(n logb a-e ) para alguna constante e > 0, entonces, T(n) = Q(n logb a ).
2 Si d(n) = Q(n logb a ), entonces, T(n) = Q(n logb a lgn).
3 Si d(n) = W(n

logb a+e

) para alguna constante e > 0 y si ad(n/b) <=cd(n) para alguna

constante c < 1 y todas las n suficientemente grandes, entonces, T(n) = Q(d(n)).

DIVIDIR Y VENCER
En la cultura popular, divide y vencers hace referencia a un refrn que implica resolver
un problema difcil, dividindolo en partes ms simples tantas veces como sea
necesario, hasta que la resolucin de las partes se torna obvia. La solucin del problema
principal se construye con las soluciones encontradas.
En las ciencias de la computacin, el trmino divide y vencers (DYV) hace referencia
a uno de los ms importantes paradigmas de diseo algortmico. El mtodo est basado
en la resolucin recursiva de un problema dividindolo en dos o ms subproblemas de
igual tipo o similar. El proceso contina hasta que stos llegan a ser lo suficientemente
sencillos como para que se resuelvan directamente. Al final, las soluciones a cada uno
de los subproblemas se combinan para dar una solucin al problema original.
Esta tcnica es la base de los algoritmos eficientes para casi cualquier tipo de problema
como, por ejemplo, algoritmos de ordenamiento (quicksort, mergesort, entre muchos
otros), multiplicar nmeros grandes (Karatsuba), anlisis sintcticos(anlisis sintctico
top-down) y la transformada discreta de Fourier.
Por otra parte, analizar y disear algoritmos de DyV son tareas que lleva tiempo
dominar. Al igual que en la induccin, a veces es necesario sustituir el problema original
por uno ms complejo para conseguir realizar la recursin, y no hay un mtodo
sistemtico de generalizacin.

ORDENACIN POR FUSIN


Ordenacin por fusin (mergesort) Dado un vector T de n elementos, el objetivo es
retornar T ordenado crecientemente. El algoritmo de ordenacin por fusin (mergesort)
sigue de manera muy cercana el esquema de dividir y vencer. Intuitivamente procede de
la siguiente manera:

Divide el vector T de n elementos en dos subvectores de aproximadamente n/2


elementos cada uno.
Ordena los dos subvectores recursivamente utilizando mergesort.
Fusiona los dos subvectores ordenados para producir el vector ordenado que soluciona
el problema original.
Es fcil observar que la base de la recursin es el caso en el que el vector a ordenar
contiene un nico elemento, ya que este vector ya est ordenado y por tanto no queda
trabajo por hacer. Otra observacin pertinente es el hecho de que la operacin clave de
mergesort es la de fusionar los dos subvectores ya que es el momento en el que
realmente se produce la ordenacin.
Ejemplos. Sea T(n) el coste en tiempo de ordenar un vector T de n elementos utilizando
mergesort. Es fcil ver que T(n) consta de dos costes distintos. El primero es el coste
de dividir T en dos subvectores y ordenarlos utilizando mergesort. El segundo es el
coste de hacer la fusin de los dos subvectores. Tambin es fcil ver que el coste de
hacer esta fusin es lineal con respecto al tamao de los subvectores. Por tanto, T(n)
puede expresarse mediante la recurrencia divisora siguiente:

T(n) =

(1)

si n = 1

2T(n/2) + (n)

si n > 1

Aplicando el teorema maestro para recurrencias divisoras es fcil ver que T(n) = (n
log n).

Si miramos el cdigo de mergesort es fcil observar que uno de sus inconvenientes es


que la etapa de fusionar dos subvectores requiere de memoria adicional (funcin merge
del cdigo).
Otro inconveniente es que el trabajo que requieren las divisiones sucesivas de los
subvectores es, en cierto sentido, innecesario ya que no se est realizando ningn
trabajo de ordenacin. Para solventar este inconveniente, puede utilizarse la variante de
abajo hacia arriba de mergesort. Esta variante simplemente se ahorra las etapas de
divisin del vector haciendo fusiones desde el principio con los elementos del vector, de
dos en dos, cuatro en cuatro y as sucesivamente. El cdigo para su implementacin
puede consultarse tambin en las transparencias de la asignatura.
Cabe mencionar que a pesar de que el coste en tiempo en el caso peor de mergesort es
(n log n) y el coste en tiempo en el caso peor del algoritmo de ordenacin por
insercin (insertionsort) es (n 2 ), insertionsort es ms rpido que mergesort para
ordenar vectores pequeos ya que los factores constantes del coste de insertionsort
(escondidos dentro de la notacin asinttica) son menores que los de mergesort. Por
tanto, tiene sentido utilizar insertionsort dentro de mergesort cuando el tamao del
subproblema es suficientemente pequeo (vectores de 50 elementos o menos). El cdigo
para implementar esta adaptacin del algoritmo puede encontrarse en las transparencias
de la asignatura.

CONCLUSIONES
La notacin asinttica es de suma importancia en ciencias de la computacin
para determinar el tiempo de ejecucin de los algoritmos y/o hacer
comparaciones entre ellos. Sirve de parmetro de referencia estndar, ya que
no hay un modelo o mquina universal contra el que se puedan evaluar todos
los algoritmos en su tiempo de ejecucin o corrimiento.
Estas variaciones pueden ser bastante ms significativas si se compara el
tiempo de ejecucin de programas en mquinas con capacidad distinta o con
arquitecturas diferentes. Por ello la trascendencia en el uso de la notacin
matemtica en todos los anlisis de algoritmos.

BIBLIOGRAFA
Duch, A. 2006. Esquema de Dividir y Vencer, Espaa. 25 de abril. 2015.
Formato PDF. Disponible en http://www.cs.upc.edu/~duch/home/duch/dyd.pdf

tlatemoani.2013. la notacin asinttica en el cmputo cientfico de investigacin


acadmica.
Eumed.net.
Espaa.
(en
lnea).
http://www.eumed.net/rev/tlatemoani/12/algoritmo.pdf

ESCUELA SUPERIOR POLITCNICA


AGROPECUARIA DE MANAB MANUEL FLIX
LPEZ

CARRERA INFORMTICA
SEMESTRE TERCERO

PERODO MAR/

2015- SEP /2015

TRABAJO DE INVESTIGACION

TEMA:
INTRODUCCION A ANALISIS DE ALGORITMO
AUTOR:
INES M. LAAZ MEZA

FACILITADOR:

ING.JAVIER LOPEZ

CALCETA, ABRIL 2015

Anda mungkin juga menyukai