Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Teoria de Complejidad Algoritmica
Teoria de Complejidad Algoritmica
Algortmica
TEMA:
CURSO: .
PROFESOR: .
CICLO:
1
UNIVERSIDAD POLITCNICA DE LA AMAZONA
2
UNIVERSIDAD POLITCNICA DE LA AMAZONA
Un algoritmo ser mas eficiente comparado con otro, siempre que consuma
menos recursos, como el tiempo y espacio de memoria necesarios para
ejecutarlo.
ARITMTICA DE LA NOTACIN O.
NOTACIN O
Eficiencia asinttica
Propiedades de la notacin O
c O(f(n)) = O(f(n))
O (f(n)+g(n)) = max {O (f(n)), O (g(n))}
O (f(n)+g(n)) = O (f(n)+g(n))
O (f(n)) O (g(n)) = O (f(n) g(n))
O(O (f(n))) = O (f(n))
5
UNIVERSIDAD POLITCNICA DE LA AMAZONA
COMPLEJIDAD
S1;
For (x = 0; x < N; x++)
S2;
Demanda: T(N) = t1 + t2 * N
Donde t1 es el tiempo que lleva ejecutar la serie S1 de
sentencias, y t2 es el que lleva la serie S2.
o Estos extremos son llamados el peor caso" y "el mejor caso" y entre
ambos se puede hallar el caso promedio o el ms frecuente,
siendo este el ms difcil de estudiar; nos centraremos en el el
peor caso" por ser de fcil clculo y se acerca a el caso
promedio, brindndonos una medida pesimista pero fiable.
Este anlisis se basa en las Complejidades Temporales, con este fin, para cada
problema determinaremos una medida N, que llamaremos tamao de la entrada
o nmero de datos a procesar por el programa, intentaremos hallar respuestas
en funcin de dicha N.
El concepto exacto que cuantifica N depender de la naturaleza del problema, si
hablamos de un array se puede ver a N como el rango del array, para una matriz,
el nmero de elementos que la componen; para un grafo, podra ser el nmero
de nodos o arcos que lo arman, no se puede establecer una regla para N, pues
cada problema acarrea su propia lgica y complejidad.
8
UNIVERSIDAD POLITCNICA DE LA AMAZONA
SELECCIN DE UN ALGORITMO
1. Uno que proporciona una medida terica (a priori), que consiste en obtener
una funcin que acote (por arriba o por abajo) el tiempo de ejecucin del
algoritmo para unos valores de entrada dados.
2. Y otro que ofrece una medida real (a posteriori), consistente en medir el tiempo
de ejecucin del algoritmo para unos valores de entrada dados y en un ordenador
concreto.
Ambas medidas son importantes puesto que, si bien la primera nos ofrece
estimaciones del comportamiento de los algoritmos de forma independiente del
10
segunda representa las medidas reales del comportamiento del algoritmo. Estas
medidas son funciones temporales de los datos de entrada. Entendemos por
tamao de la entrada el nmero de componentes sobre los que se va a ejecutar
el algoritmo. Por ejemplo, la dimensin del vector a ordenar o el tamao de las
matrices a multiplicar. La unidad de tiempo a la que debe hacer referencia estas
medidas de eficiencia no puede ser expresada en segundos o en otra unidad de
tiempo concreta, pues no existe un ordenador estndar al que puedan hacer
referencia todas las medidas. Denotaremos por T(n) el tiempo de ejecucin de
un algoritmo para una entrada de tamao n. Tericamente T(n) debe indicar el
nmero de instrucciones ejecutadas por un ordenador idealizado. Debemos
buscar por tanto medidas simples y abstractas, independientes del ordenador a
utilizar. Para ello es necesario acotar de alguna forma la diferencia que se puede
producir entre distintas implementaciones de un mismo algoritmo, ya sea del
mismo cdigo ejecutado por dos mquinas de distinta velocidad, como de dos
cdigos que implementen el mismo mtodo. Esta diferencia es la que acota el
siguiente principio:
PRINCIPIO DE INVARIANCIA
Dado un algoritmo y dos implementaciones I1 y I2 (mquinas distintas o cdigos
distintos) que tardan T1(n) y T2(n) respectivamente, el principio de invarianza
afirma que existe una constante real c>0 y un nmero natural n0 tales que para
todo n>=n0 se verifica que T1(n)<=cT2(n).
Asumimos que un algoritmo tarda un tiempo del orden de T(n) si existen una
constante real c>0 y una implementacin I del algoritmo que tarda menos que
cT(n), para todo n tamao de entrada.
Ejemplo:
Problema: Ordenamiento
Tipos de anlisis:
posibles.
UNIVERSIDAD POLITCNICA DE LA AMAZONA
- peor caso
- mejor caso
- caso promedio (o medio)
El caso promedio es la medida ms realista de la performance, pero es ms difcil
de calcular pues establece que todas las entradas son igualmente probables, lo
cual puede ser cierto o no. Trabajaremos especficamente con el peor caso.
EJEMPLO
Sea A una lista de n elementos A1, A2, A3, ... , An. Ordenar significa permutar
estos elementos de tal forma que los mismos queden de acuerdo con un orden
preestablecido.
Ascendente A1<=A2<=A3..........<=An
Descendente A1>=A2>=........>=An
LA MQUINA DE TURING
Alan Turing, en 1936 desarroll su Mquina de Turing (la cual se cubre en los
cursos denominados Teora de la Computacin o Teora de Automtas),
16
Turing mostr tambin que existen problemas matemticos bien definidos para
los cuales no hay un algoritmo. Hay muchos ejemplos de problemas para los
cuales no existe un algoritmo. Un problema de este tipo es el llamado problema
de paro (halting problem): Dado un programa de computadora con sus entradas,
parar este alguna vez?
Turing prob que no hay un algoritmo que pueda resolver correctamente todas
las instancias de este problema.
Alguien podra pensar en encontrar algunos mtodos para detectar patrones que
permitan examinar el programa para cualquier entrada. Sin embargo, siempre
habr sutilezas que escapen al anlisis correspondiente.
Problemas P, para los cuales existe una mquina de Turing determinista que los
puede resolver en tiempo polinmico. Esto indica que existe un algoritmo
determinista con complejidad polinomial que los puede resolver. Se consideran
como la clase de problemas de reconocimiento relativamente sencillos, aquellos
para los que existen algoritmos eficientes o exactos.
El tamao
Para cada problema determinaremos un medida N de su tamao (por nmero de
datos) e intentaremos hallar respuestas en funcin de dicho N. El concepto exacto
que mide N depende de la naturaleza del problema. As, para un vector se suele
utilizar como N su longitud; para una matriz, el nmero de elementos que la
componen; para un grafo, puede ser el nmero de nodos (a veces es mas
importante considerar el nmero de arcos, dependiendo del tipo de problema a
resolver); en un fichero se suele usar el nmero de registros, etc. Es imposible dar
una regla general, pues cada problema tiene su propia lgica de coste.
Recursos
A efectos prcticos o ingenieriles, nos deben preocupar los recursos fsicos
necesarios para que un programa se ejecute. Aunque puede haber muchos
parmetros, los mas usuales son el tiempo de ejecucin y la cantidad de memoria
(RAM). Ocurre con frecuencia que ambos parmetros estn fijados por otras
razones y se plantea la pregunta inversa: cual es el tamao del mayor problema
que puedo resolver en T segundos y/o con M bytes de memoria?
En lo que sigue usaremos esta notacin
tiempo de ejecucin en funcin del tamao n del problema
espacio (RAM) en funcin del tamao n del problema
En lo que sigue nos centraremos casi siempre en tiempo de ejecucin, si bien las
ideas desarrolladas son fcilmente aplicables a otro tipo de recursos.
Tiempo de ejecucin
Una medida que suele ser til conocer es el tiempo de ejecucin de un programa en
funcin de N, lo que denominaremos T(N). Esta funcin se puede medir fsicamente
(ejecutando el programa, reloj en mano), o calcularse sobre el cdigo contando
instrucciones a ejecutar y multiplicando por el tiempo requerido por cada instruccin.
As, un trozo sencillo de programa como
S1;
for (i= 0; i < N; i++)
S2;
Requiere
T(N) = t1 + t2*N
21
UNIVERSIDAD POLITCNICA DE LA AMAZONA
Siendo t1 el tiempo que lleve ejecutar la serie "S1" de sentencias, y t2 el que lleve
la
serie "S2".
Prcticamente todos los programas reales incluyen alguna sentencia condicional,
Haciendo que las sentencias efectivamente ejecutadas dependan de los datos
concretos que se le presenten. Esto hace que mas que un valor T(N) debamos
hablar de un rango de valores
Tmin(N) = T(N) = Tmax(N)
los extremos son habitualmente conocidos como "caso peor" y "caso mejor". Entre
ambos se hallara algn "caso promedio" o ms frecuente. Cualquier frmula T(N)
incluye referencias al parmetro N y a una serie de constantes "Ki" que dependen
de factores externos al algoritmo como pueden ser la calidad del cdigo generado
por el compilador y la velocidad de ejecucin de instrucciones del ordenador que lo
ejecuta. Dado que es fcil cambiar de compilador y que la potencia de
los ordenadores crece a un ritmo vertiginoso , intentaremos analizar los algoritmos
con algn nivel de independencia de estos factores; es decir, buscaremos
estimaciones generales ampliamente vlidas.
Asntotas
2 Metodologa
UNIVERSIDAD POLITCNICA DE LA AMAZONA
()
lim ( )=
()
()
UNIVERSIDAD POLITCNICA DE LA AMAZONA
Siendo K 0 y K 8
Ntese que esta definicin nos permite un anlisis algortmico conociendo la
Formulacin de la funcin, y tambin un anlisis experimental observando los
recursos consumidos para valores crecientes de N.
Paso 3 funciones de referencia
Se suelen manejar las siguientes
f(n) = 1 constante
f(n) = n lineal
f(n) = n log(n)
f(n) = cuadrtica
f(n) = n! Factorial
O (n log n)
O ( ) orden cuadrtico
26