Diseño y análisis de algoritmos Análisis de Algoritmos I.

14
Diseño y análisis de algoritmos Análisis de Algoritmos I

Transcript of Diseño y análisis de algoritmos Análisis de Algoritmos I.

Page 1: Diseño y análisis de algoritmos Análisis de Algoritmos I.

Diseño y análisis de algoritmos

Análisis de Algoritmos I

Page 2: Diseño y análisis de algoritmos Análisis de Algoritmos I.

Introducción

• Análisis de Algoritmos I– Complejidad

• Introducción

• Métrica de complejidad: polinomio.

• Métrica de complejidad: exponencial.

• Análisis asintótico y gran O

Page 3: Diseño y análisis de algoritmos Análisis de Algoritmos I.

Introducción

– Los computadoras no son los máquinas con recursos infinitos, y estimar cuánto tiempo toma para resolver un problema de un tamaño particular es, por consiguiente importante.

– Los recursos consumidos (principales) que son de interés medir, cuando se ejecuta un algoritmo son:

– Tiempo: complejidad temporal

– Cantidad de memoria requerida: complejidad espacialespacial

– Intuición:Intuición: la complejidad debe depender del “tamaño del problema”

– Ejemplo:Ejemplo: Cantidad de datos de entrada, facturas a imprimir, cantidad de archivos a procesar, en análisis numérico se puede resolver un sistema de ecuaciones lineales, por ende, el tamaño sería la cantidad de ecuaciones del sistema (y sus variables)

Complejidad

Page 4: Diseño y análisis de algoritmos Análisis de Algoritmos I.

Introducción

– Aunque los computadores de hoy en día son más baratos y eficientes, no debe cometerse el error de que por este hecho, no se debe preocuparse por los recursos, pues estos sigüien i seguirán siendo escasos.

– Ejemplo: Existen algunos algoritmos, que se verán en en el transcurso del ramo, para los cuales el tiempo requerido, independiente del poder computacional de la máquina, es extremadamenteextremadamente alto.

– Dada la naturaleza de estos problemas, incluso, no existe ningún algoritmo eficiente ni efectivo que logre llegar a una solución completa en un tiempo razonable.

– Def1:Def1: Un análisis de complejidad de tiempo (de un algoritmo), puede ser hecho independientemente de las características del computador en que éste se ejecutará.

Complejidad

Page 5: Diseño y análisis de algoritmos Análisis de Algoritmos I.

Introducción

– Def2:Def2: Se requiere de una métrica para poder establecer este tipo de compeljidad a cualquier algoritmo. No es necesario que sea absolutamente precisa, basta con tener una cota aproximada que permita comprar dos o más soluciones (algoritmos) para el mismo problema.

– Por ejemplo, si se tiene un algoritmo para calcular para y

se requiere una “función” o métrica dependiente de dependiente de nn que describa cuan rápido entrega el resultado un algoritmo dado.

– Esa métrica de complejidad debe permitir comparar dos algoritmos que resuelvan un mismo problema y determinar cual es “mejor”

– A continuación se verá una aproximación informal a esta o estas funciones de complejidad temporal

Complejidad

na a Zn

Page 6: Diseño y análisis de algoritmos Análisis de Algoritmos I.

Métrica de complejidad: polinomio

– Def3:Def3: Cualquier función de la siguiente forma siguiente se llama un polinomio:

f(X) = aO + a1 X + a2 X + ...+ an X,

Si an es distinta de cero, entonces, se dice que, el polinomio es de grado nn

– Para utilizar esta definición en complejidad computacional, son relevantes los polinomios de grado 3 o menos:

– Funciones constantes (f (X)) = polinomio de grado 0– Funciones lineales (f (X)) = polinomio de grado 1– Funciones cuadráticas (f (X)) = polinomio de grado 2– Funciones cúbicas (f (X)) = polinomio de grado 3

– Def4:Def4: Si X correspondiera al “tamaño” del problema, entonces se podría asociar un polinomio a la forma en la cual el tiempo variaría en base a la cantidad de datos.

– Ejemplo: si el tiempo de ejecución se incrementa “proporcionalmente”, con respecto al tamaño del problema, entonces se llama a este algoritmo “complejidad lineal”, y se puede decir que el tiempo de resolución es corto.

Complejidad

2 n

O

1

2

3

Page 7: Diseño y análisis de algoritmos Análisis de Algoritmos I.

Métrica de complejidad: polinomio

– Def5:Def5: De la misma manera se puede decir que un algoritmo tiene un “tiempo de resolución” cuadrático o cúbico. Todos estos son algoritmos “acotados” en cuanto a su tiempo de solución, por una función de tipo polinomio o polinomial.

– Ejemplos:– Algoritmos lineales: cálculo de IVA para una factura.

Fragmento de Pascal : lineal

suma := 0;

for i := 1 to n suma := suma + a[i]

Algoritmos cuadráticos: la entrada consiste en una canitdad de números2n, ai, i = l..n y bi, i = l..n, el problema es evaluar el producto de ai*bj para todo i y j. Todos estos cálculos se pueden realizar en un doble loop, usando for, donde el total de operaciones

necesarias es entonces n.

Si n se considera como la “medida” de la dificultad o el “tamaño” del problema, entonces

la complejidad temporal está dada por f (n) = n. – Ejercicio, mostrar que la omplejidad temporal para multiplicar dos matrices

cuadradas de nXn es n

Complejidad

2

2

3

Page 8: Diseño y análisis de algoritmos Análisis de Algoritmos I.

Métrica de complejidad: exponencial

Complejidad

–Def6:Def6: Cualquier función de la siguiente forma siguiente se llama una función exponencial:

f(X) = Ca,

a se llama la base y x es el exponente. Si n pert domm n pert domm |N, la función f(X)

= a,

puede ser definida en forma recursiva, como siguie,

a° = 1

a = a * aEsta expresión recursiva enfatiza el rasgo esencial de la función

exponencial: su valor para n+1 es a veces su valor * n. Por ejemplo, el crecimiento de la población tiende a ser exponencial, porque el número de las personas en el año n + 1 tiende a ser un múltiplo del tamaño de la población presente.

X

n+l n

X

Page 9: Diseño y análisis de algoritmos Análisis de Algoritmos I.

• Es matemáticamente conveniente usar el número e como la base para la función exponencial dónde e se define:

• Cuando esta base es usada, se puede construir la exponencial como:

Ejemplos: f(n) = 2 , • en un árbol completo, cada nodo de la rama tiene dos subárboles, y el número de nodos dobla en cada nivel, hay 2 nodos terminales de dónde n es la altura del árbol.• cuento del inventor de ajedrez, un grano de trigo en el pimer cuadrado, dos en el segundo, cuatro en el tercero, 8 en el cuarto..... 64 casilleros- cuantos granos ???

Métrica de complejidad: exponencial

Complejidad

n

n - 1

0

!/1n

ne

1

!/)(n

nx nxexf

Page 10: Diseño y análisis de algoritmos Análisis de Algoritmos I.

• Def7: Sea f,g Z+ R. Se dice que g domina f (o f es dominado por g) si existe constantes y tal que | f(n)| <= m|g(n)| para todo donde n >= k

•Note que como se consideran los valores de f(1), g(1), f(2),g(2),....., hay un punto (llamado k) después del cual el tamaño de f(n) esta acotadoacotado inferiormente por un múltiplo positivo (m) del tamaño de g(n). También cuando g domina f, entonces |f(n)/g(n)| <= m (esto es, el tamaño del cuociente f(n)/g(n) esta acotado por m)acotado por m) para aquellos donde n >=k y g(n) <> 0

•Definición 8: Cuando f es dominado por g se dice que f es de orden (al menos) g y la notación de esta idea es lo que se llama gran-O.

•Formalmente , donde O(g) se lee “orden de g” o “gran-O” de g.Esta notaciónEsta notación , O(g) representa el conjunto de todas las funciones con dominio Z+ y codominio R que son dominadas por g.

Análisis asintótico y gran O

Complejidad

m Zk Zn

Zn

)(gOf )(gOf

Page 11: Diseño y análisis de algoritmos Análisis de Algoritmos I.

Complejidad

• Ejemplo1: Sea f,g Z+ R, funciones , para . Si se calcula f(n) y g(n) para encontramos f(1)=5, g(1)=1,......,f(4)=20, g(4)=16. Sin embargo a partir de ,por lo que encontramos que .Entonces con m=1 y k=5 , tenemos que para , . De acuerdo con la def. 7 , g domina a f y

También para Las constantes k y m, no necesitan ser únicas. Se puede demostrar,el mismo problema para k=1 y m=5. Se tiene que

Ejercicio: Generalie la demostración para f(n)=an y Ejemplo2: Para las mismas funciones del ejemplo 1, mostrar que Por contradicción, basta con probar que no existe m que acote a partir de un cierto k . Es claro que siempre va a existir un n para el cual , por lo que |g(n)/f(n)| no está acotada mor ningún m.

Análisis asintótico y gran O2)(,5)( nngnnf Zn

]4..1[nnnn 55 2

|)(|5|)(| 2 ngnnnf kn |)(||)(| ngmnf )(gOf

1|/5||)(/)(| nngnf 5n

|)(|555|)(|, 2 ngnnnfZn

2)( bnng )( fOg |)(/)(| nfng

|5/| nmn |5/|

Page 12: Diseño y análisis de algoritmos Análisis de Algoritmos I.

Complejidad

• Ejemplo3: Sea f,g Z+ R, funciones . Entonces

para todo , así que con m= 16 y k=1, se demuestra que f es dominada por g , y , o .

Al contrario también es verdad, f domina a g , pues 7n – 4 > 0 para todo , se puede escribir para cualquier . Entonces se puede escribir , por lo tanto .

En este caso

Análisis asintótico y gran O323 )(,2473)( nngnnnnf

1n|)(|1616 3 ngn )(gOf

2)47(33 333 nnnnn

33332323 2473|2||4||7||3||2473||)(| nnnnnnnnnnnf

)( 3nOf

1n1n

|)(|1|)(| nfng )( fOg

)()()( 3nOgOfO

Page 13: Diseño y análisis de algoritmos Análisis de Algoritmos I.

• Generalización.

Sea f:Z+ R una función polinomial donde f(n) es un polinomio ya definido.Para aO , a1 , a2 + ...+ at, pert |R , at <> 0 , n pert |N, entonces

| f(n) | = | aO + a1 n + a2 n + ...+ at n, |

<= | aO | + | a1 n | + | a2 n | + ...+ | at n , |

= | aO | + | a1 | n + | a2 | n + ...+ | at | n ,

<= | aO | n + | a1 | n + | a2 | n + ...+ | at | n ,

= (| aO | +| a1 | + | a2 | + ...+ | at |) n

Usando la def7 , sea m = (| aO | +| a1 | + | a2 | + ...+ | at |) y k =1, y sea g: Z+ R

dada por g(n) = n . Entonces |f(n)| <= m|g(n)| para todo n >= k, asi f es dominada por g, o

Análisis asintótico y gran OFundamentos (Parte 4)

2

t

2

t

n

t

t

t

n

2

n n

)( tnOf

Page 14: Diseño y análisis de algoritmos Análisis de Algoritmos I.

• Aplicación de O en el analisis de algoritmos1. Lo que se busca es encontrar la mejor o más cercana cota2. Tabla de órdenes más comunes

Forma O(x) Nombre-------------------------------------------O(1) ConstanteO(log x) LogarítmicoO(x) LinealO(xlog x) xLogarítmicoO(x) CuadráticoO(x) Cúbico

Análisis asintótico y gran OFundamentos (Parte 4)

2

22

3

O(C ), c>1 Exponencialx

O(x ), m=0,1,2,3 Polinomialm

O(n!) Factorial