Sie sind auf Seite 1von 28

Tema 2 Fundamentos de Complejidad Algor tmica

Pablo Snchez a
Dpto. Matemticas, Estad a stica y Computacin o Universidad de Cantabria Santander (Cantabria, Espaa) n p.sanchez@unican.es

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

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.

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

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

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

3 / 28

Introduccin o

Objetivo de la Complejidad Algor tmica

Complejidad Algor tmica


Estudiar de forma genrica (e independiente a la mquina) los recursos e a (tiempo y cantidad de memoria) requeridos por un algoritmo para resolver un problema. Problemas de las pruebas emp ricas:
1 2 3

Hay que implementar el algoritmo. Hay que hacer muchas pruebas (y para casos largos). Probar algoritmos pesados puede ser muy costoso.

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

4 / 28

Introduccin o

Complejidad de un Algoritmo Simple


// Bsqueda de la posicin de un entero dentro de un u o // vector FUNCION posicion(n: ENTERO, v : vENTERO) : ENTERO ES i : ENTERO; i := 0; MIENTRAS ((i<MAX_vENTERO) AND (v[i] != n)) HACER i := i + 1; FINMIENTRAS DEVOLVER pos; FINFUNCION //posicion

t(n) = (2c + a)n + (a + d)

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

5 / 28

Fundamentos de Complejidad Algor tmica

Introduccin o

Preguntas Importantes a Responder

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

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

6 / 28

Fundamentos de Complejidad Algor tmica

Introduccin o

Medidas de Tiempo de un Algoritmo

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.

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

7 / 28

Fundamentos de Complejidad Algor tmica

Introduccin o

Principios de Complejidad Algor tmica

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.

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

8 / 28

Fundamentos de Complejidad Algor tmica

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

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

9 / 28

Fundamentos de Complejidad Algor tmica

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

Orden exacto de una funcin f (n) o


Sea f : N R+ {0}. El conjunto de funciones del orden exacto de f (n), denotado como (f (n)), se dene como: (f (n)) = O(n) (n) Una funcin g (n) es del orden exacto de f (n) cuando g (n) (f (n)). o

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

10 / 28

Fundamentos de Complejidad Algor tmica

Operaciones entre Ordenes

Operaciones entre Ordenes


Menor o Igual
Dados los rdenes de dos funciones O(f (n)) y O(g (n)), o O(f (n)) O(g (n)) si y slo si O(f (n)) O(g (n)) o

Orden de una suma de funciones


O(f (n) + g (n)) = O(max(f (n), g (n)))

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

11 / 28

Fundamentos de Complejidad Algor tmica

Operaciones entre Ordenes

Regla del L mite


Regla del L mite
Si l n m
f (n) g (n)

(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!)

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

12 / 28

Fundamentos de Complejidad Algor tmica

Operaciones entre Ordenes

Ordenes de Complejidad

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

13 / 28

Fundamentos de Complejidad Algor tmica

Operaciones entre Ordenes

Ordenes de Complejidad

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

14 / 28

Fundamentos de Complejidad Algor tmica

Operaciones entre Ordenes

Clculo de Complejidad de Programas Iterativos a


PROCEDIMIENTO OrdenarSeleccion(REF v: vEnteros) ES i, j, min, aux : ENTERO; PARA i DESDE 0 HASTA MAX_vENTERO-2 HACER min := v[i]; PARA j DESDE i+1 HASTA MAX_vENTERO-1 HACER SI (v[j] < v[min]) ENTONCES min := j; FINSI FINPARA aux := v[min]; v[min] := v[i]; v[i] := aux; FINPARA FINPROCEDIMIENTO

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

15 / 28

Calculo de Complejidad de Algoritmos Iterativos

Clculo de Complejidad de Algoritmos Iterativos a


Teorema de Anidacin o
Sean f (n), g (n) : N R+ y g (n) O(h(n)), entonces f (n) g (n) O(f (n) h(n)) Reglas informales para el clculo de complejidades algor a tmicas
1

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

Pablo Snchez (MATESCO) a

Calculo de Complejidad de Algoritmos Iterativos

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

Cuntas iteraciones realiza el bucle? a


Pablo Snchez (MATESCO) a Complejidad Algor tmica 17 / 28

Clculo de Complejidad de Algoritmos Recursivos a

Ecuaciones de Recurrencia

Clculo de la Complejidad de Algoritmos Recursivos a


FUNCION factorial(n : ENTERO) : ENTERO ES result : ENTERO; SI (n == 0) ENTONCES result := 1; SINO result := n*factorial(n-1); FINSI DEVOLVER result; FINFUNCION

t(0) t(n)

= =

3 t(n-1) + 3

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

18 / 28

Clculo de Complejidad de Algoritmos Recursivos a

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) =

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

19 / 28

Clculo de Complejidad de Algoritmos Recursivos a

Teorema Maestro

Recurrencias para Algoritmos Divide y Vencers a


Esquema Algoritmos Divide y Vencers a
FUNCION DyV(p : Problema) : Solucion ES result : Solucion; SI esCasoBase(p) ENTONCES result := resuelve(p) SINO sub1, sub2 : Problema; sol1, sol2 : Solucion; divide(p,sub1,sub2); sol1 := DyV(sub1); sol2 := DyV(sub2); result := combina(sol1,sol2); FINSI DEVOLVER result; FINFUNCION

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

20 / 28

Clculo de Complejidad de Algoritmos Recursivos a

Teorema Maestro

Recurrencias para Algoritmos Divide y Vencers a


Ecuacin de Recurrencia para Algoritmos Divide y Vencers o a
t(n) = c nk a t( n ) + c nk b si 1 n < b si n b

a, c R+ ; k R+ {0}; n, b N; b > 1

Solucin de la Recurrencia para Algoritmos Divide y Vencers o a


si a < b k (nk ) k log(n)) si a = b k (n t(n) (nlog(a) ) si a > b k

a, c R+ ; k R+ {0}; n, b N; b > 1

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

21 / 28

Complejidad Computacional y Computabilidad

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

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

22 / 28

Complejidad Computacional y Computabilidad

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

Problema polinmicamente Turing reducible o


Dados dos problemas A y B, decimos que A es polinmicamente Turing o p reducible, denotado A T B si existe un algoritmo que resuelve A en tiempo polinomial asumiendo que existe un algoritmo que resuelve B en tiempo constante o unitario.

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

23 / 28

Complejidad Computacional y Computabilidad

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.

Problemas polinmicamente reducibles muchos a uno o


Sean dos problemas de decisin X e Y denidos sobre dominios de o elementos I y J, respectivamente. X es polinmicamente reducible muchos o p a uno a Y , denotado X m Y , si existe una funcin f (x) : I J o computable en tiempo polinmico tal que x X x I ; f (x) J. o f (x) se denomina funcin de reduccin. o o
Pablo Snchez (MATESCO) a Complejidad Algor tmica 24 / 28

Complejidad Computacional y Computabilidad

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

Teorema de equivalencia entre reducciones


Sean X e Y dos problemas de decisin tales X p Y , entonces X p Y . o m T

Problemas NP Completos
Un problema de decisin X es NP-completo si: o
1 2

X NP Y NP; Y p X T

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

25 / 28

Complejidad Computacional y Computabilidad

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

Problemas NP-dif ciles


Un problema X es NP-dif si existe un problema Y NP-completo tal que cil p Y T X

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

26 / 28

Complejidad Computacional y Computabilidad

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

Clases de problemas segn su computabilidad u


Decidibles Hay un algoritmo que encuentra la solucin y termina en o todos los casos. Semidecidibles Hay un algoritmo que si hay solucin, la encuentra y o termina, sino hay solucin puede no terminar. o No decidibles No hay algoritmo que resuelva dicho problema (e.g., problema de la parada).

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

27 / 28

Sumario

Qu tengo que saber de todo esto? e


1 2

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

Pablo Snchez (MATESCO) a

Complejidad Algor tmica

28 / 28

Das könnte Ihnen auch gefallen