Beruflich Dokumente
Kultur Dokumente
Pablo Snchez a
Dpto. Matemticas, Estad a stica y Computacin o Universidad de Cantabria Santander (Cantabria, Espaa) n p.sanchez@unican.es
1 / 28
Bibliograf Bsica a a
Brasard, G. and Bratley, P. (2000). Fundamentos de Algoritmia. Prentice Hall. Ricardo Pea (2005). n Diseo de Programas: Formalismo y Abstraccin. n o Pearson Educacion, 3 edition.
2 / 28
Objetivos
Objetivos
1
Conocer los conceptos y tcnicas bsicas de clculo de complejidad e a a algor tmica. Saber estimar la complejidad de algoritmos iterativos bsicos. a Conocer las tcnicas de estimacin de la complejidad de algoritmos e o recursivos. Conocer los conceptos bsicos de la complejidad computacional y la a computabilidad.
2 3
3 / 28
Introduccin o
Hay que implementar el algoritmo. Hay que hacer muchas pruebas (y para casos largos). Probar algoritmos pesados puede ser muy costoso.
4 / 28
Introduccin o
5 / 28
Introduccin o
1 2 3 4
Cmo se comporta el algoritmo para problemas grandes? o Existe algn l u mite al tamao de los datos de entrada? n Cmo de eciente es un algoritmo en comparacin a otro algoritmo? o o Qu tipo de funcin describe el tiempo consumido por un algoritmo? e o
6 / 28
Introduccin o
Para un tamao de la entrada jo, diversas variables sobre la forma n de la entrada pueden afectar al tiempo de ejecucin del algoritmo. o Se analizan por tanto 3 casos: Caso peor: mximo tiempo de respuesta para un tamao de entrada a n jo. Caso mejor: m nimo tiempo de respuesta para un tamao de entrada n jo. Caso promedio: tiempo medio de respuesta para un tamao de n entrada jo.
7 / 28
Introduccin o
Principio de Invarianza
Dado un algoritmo S, y dos implementaciones I1 e I2 de dicho algoritmo, cuyos tiempos de ejecucin son t1 (n) y t2 (n), entonces existen constantes o naturales k y n0 , tales que n n0 , t1 (n) k t2
Operacin elemental o
Una operacin elemental es aquella cuyo tiempo de ejecucin est acotado o o a superiormente por un valor constante que depende slo de la mquina o a donde se ejecuta y es por tanto independiente de los parmetros del a problema que resuelve un algoritmo.
8 / 28
Notaciones Asintticas o
Notaciones asintticas o
Orden de una funcin O(f (n)) o
Sea f : N R+ {0}. El conjunto de funciones del orden de f (n), denotado como O(f (n)), se dene como: O(f (n)) = {g : N R+ 0|c R+ , n0 N; n no ; g (n) c f (n)} Una funcin g (n) es del orden de f (n) cuando g (n) O(f (n)). o
9 / 28
Notaciones Asintticas o
Notaciones asintticas o
Cota inferior asinttica de una funcin f (n) o o
Sea f : N R+ {0}. El conjunto de funciones que son cotas inferiores asintticas de f (n), denotado (f (n)), se dene como: o (f (n)) = {g : N R+ 0|c R+ , n0 N; n no ; g (n) c f (n)} Una funcin g (n) es cota inferior asinttica de f (n) cuando g (n) (f (n)). o o
10 / 28
11 / 28
(1) = k R+ f (n) O(g (n)) g (n) O(f (n)) / (2) = 0 R+ f (n) O(g (n)) g (n) O(f (n)) (3) = R+ f (n) O(g (n)) g (n) O(f (n)) / Por tanto, O(1) O(log n) O( (n)) O(n) O(n log n)) O(n2 ) O(n2 log n)) O(n3 ) ... O(nk ) O(2n ) O(n!)
12 / 28
Ordenes de Complejidad
13 / 28
Ordenes de Complejidad
14 / 28
15 / 28
La complejidad de una secuencia de instrucciones S1 ; S2 ; es max(O(S1 ), O(S2 )). La complejidad de una sentencia condicional SI cond ENTONCES S1 SINO S2 FINSI es max(O(cond), O(S1 ), O(S2 )). La complejidad de una instruccin iterativa que ejecuta f (n) veces o una secuencia de instrucciones de complejidad O(g (n)) es O(f (n) g (n))
Complejidad Algor tmica 16 / 28
Problema de la Convergencia
Algoritmo Babilnico para el Clculo de una Ra Cuadrada o a z
// Pre: x debe ser positivo FUNCION raiz(x : Real) : Real base, altura : Real; base = x; altura = 1.0; MIENTRAS (base != altura) HACER base := (altura + base) / 2; altura := (x / base); FINMIENTRAS DEVOLVER base; FINFUNCION ES
Ecuaciones de Recurrencia
t(0) t(n)
= =
3 t(n-1) + 3
18 / 28
Ecuaciones de Recurrencia
Ecuaciones de recurrencia
Ecuacin de recurrencia o
El valor una funcin para un cierto n se expresa en funcin de los valores o o de la funcin para ns ms pequeos. o a n g (n) si 0 n < b a t(n b) + h(n) si n b
t(n) =
19 / 28
Teorema Maestro
20 / 28
Teorema Maestro
a, c R+ ; k R+ {0}; n, b N; b > 1
a, c R+ ; k R+ {0}; n, b N; b > 1
21 / 28
Complejidad Computacional
Complejidad Computacional
Complejidad Computacional
Rama de la teor de la computacin que se dedica a la clasicacin de a o o problemas computables de acuerdo a la dicultad inherente para su resolucin. o Ejemplo: Todo algoritmo de ordenacin sobre un vector aleatorio de o elementos tiene una complejidad m nima de O(n log n) [Brasard and Bratley, 2000].
Problemas P
Problemas (de decisin) para los cuales existe al menos un algoritmo que o los resuelve en tiempo polinmico. o
22 / 28
Complejidad Computacional
Problemas NP
Problemas NP
Problemas para los que se puede vericar si un resultado es solucin vlida o a en tiempo polinmico. o
Relaciones P y NP
1 2
Teorema: P NP Conjetura: P = NP
23 / 28
Complejidad Computacional
Problemas NP
Problemas polinmicamente Turing equivalentes o
Dados dos problemas A y B, decimos que A y B son polinmicamente o p p p Turing equivalentes, denotado A T , si A T B y B T A.
Teorema de reducibilidad
Dados dos problemas A y B. Si A p B y B puede ser resuelto en tiempo T polinomial, A puede ser resuelto en tiempo polinomial.
Complejidad Computacional
Problemas NP
Problemas polinmicamente equivalentes muchos a uno o
Dados dos problemas de decisin X e Y se dice que son polinmicamente o o p o equivalentes muchos a uno, denotado X m Y si y slo si X p Y y m Y p X . m
Problemas NP Completos
Un problema de decisin X es NP-completo si: o
1 2
X NP Y NP; Y p X T
25 / 28
Complejidad Computacional
Problemas NP completos
Si se encuentra un algoritmo en tiempo polinmico para un problema o NP-completo, todos los problemas de NP ser resolubles en tiempo an polinmico. o
Teorema
Sea X un problema de decisin NP-completo, y sea Z un problemas de o decisin Z NP tal que X p Z , entonces Z es tambin NP-completo. o e T
26 / 28
Computabilidad
Computabilidad
Computabilidad
Rama de la Teor de la Computacin que estudia qu clase de problemas a o e son computables, es decir, pueden ser resueltos de forma efectiva por algn algoritmo. u
27 / 28
Sumario
Conocer y entender los conceptos de O(n), (n), (n). Ser capaz de realizar operaciones bsicas sobre rdenes de a o complejidad. Ser capaz de estimar la complejidad de algoritmos iterativos sencillos. Conocer las tcnicas de estimacin de la complejidad de algoritmos e o recursivos. Ser capaz de especicar la ecuacin de recurrencia asociada a la o complejidad de un algoritmo recursivo. Ser capaz de estimar la complejidad de algoritmos recursivos divide y vencers. a Conocer y entender los conceptos bsicos de complejidad a computacional y computabilidad.
3 4
28 / 28