La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Diseño y análisis de algoritmos

Presentaciones similares


Presentación del tema: "Diseño y análisis de algoritmos"— Transcripción de la presentación:

1 Diseño y análisis de algoritmos
Algoritmos probabilistas

2 Temario Algoritmos probabilistas Introducción Clasificación
Aplicaciones: Integración numérica Verificación de productos de matrices

3 Algoritmos probabilistas
Introducción Motivación: La historia del tesoro, el dragón, un computador un mago y una moneda En una isla hay un tesoro escondido de x lingotes de oro. Sólo se sabe que estando en O el tesoro con seguridad está en A o B. Un dragón visita cada noche el sitio del tesoro y se lleva y lingotes. En O se puede usar un computador y se sabe con certeza que en 4 días más decodificará el lugar preciso. Un mago ofrece un trato: a cambio del equivalente en oro de lo que se llevará el dragón en 3 días revelará el lugar exacto. ¿Cómo resolver el problema con la mayor ganancia?

4 Algoritmos probabilistas
Introducción Motivación: La historia del tesoro, el dragón, un computador un mago y una moneda Una alternativa es quedarse los 4 días en O hasta resolver el misterio, y luego llegar al tesoro en 5 días más por lo que se encontrarán , x - 9y lingotes Aceptando el trato con el mago, se llega al tesoro en 5 días, se encuentran x - 5y lingotes de los cuales se deben pagar 3y al mago , por lo que se obtiene finalmente x - 8y lingotes A primera vista se, debe realizar el trato, pero existe una solución mejor. Tirar una moneda al aire, si es cae ir a A si es sello ir a B Si se acierta y A era el sitio adecuado, se obtienen x - 5y En el peor caso, se visitan ambos lugares obtemiéndose x - 10y Sin embargo estadísticamente el beneficio esperado es x – 7.5y

5 Algoritmos probabilistas
Introducción Características de los algoritmos probabilistas En algunos algoritmos en los que aparece alguna desición, es preferible a veces, elegir aleatoriamente una antes que perder tiempo calculando qué alternativa es la mejor. Esto ocurre si el tiempo requerido para determinar la acción óptima demasiado frente al promedio obtenido una acción al azar. A veces una solución buana “a tiempo” es mejor que una óptima cuando ya no se puede aplicar. A primera vista se, debe realizar el trato, pero existe una solución mejor. Su principal característica es que el mismo algoritmo puede comportarse de distinta forma, aplicado a los mismos datos. Puede dar resultados distintos Por lo tanto necesitar de una cantidad distinta de tiempo y espacio

6 Algoritmos probabilistas
Introducción Características de los algoritmos probabilistas Un algoritmo determinista siempre termina, no debe fallar:ejemplo división por 0 Un algoritmo probabilista puede quedar en un ciclo o no converger, devolver un resultado incorrecto , siempre y cuando estos casos sucedan con una probabilidad baja. Si ocurre, se aborta el algoritmo y se repite su ejecución con los mismos datos. Un algoritmo probabilista puede encontrar soluciones diferentes, ejecutandoce para los mismos datos. En muchos casos se puede aumentar la confianza del resultado del algoritmo, ejecutándolo varias veces. El análisis de complejidad es frecuentemente muy complejo y requiere herramientas de probabilidad y estadísticas fuera de los alcances de este curso.

7 Algoritmos probabilistas
Introducción Características de los algoritmos probabilistas Se supondrá disponible en los algortmos probabilistas una sentencia de generación de úmeros aleatórios con uns distribución uniforme U[0..1] uniforme() Devuelve un real x uniformemente distribuído en el intervalo [0,1). Llamadas sucesivas generar´n una secuancia de valores independientes. En base a esta sentencia se pueden construir, generadores de otros tipos de valores aleatorios. Ejemplo disreibución uniforme U[a..b] a y b enteros , a<b function U(a,b:entero):real U:= a+(b-a)*uniforme(); En la práctica no es posible implementar uniforme(), la mayoría de los lenguajes implementan la generación de números pseudoaleatorios, que son procedimientos determinísticos que generan una larga secuencia de valores aparentemente aleatorios.

8 Algoritmos probabilistas
Clasificación De acuerdo al resultado que obtienen, los algoritmos probabilísticos se clasifican en : Numéricos: dan una solución aproximada, su resultado se entrga dentro de un rango de confianza permitido. Ej: el valor buscado es 33+/-3 con un 90% de probabilidad. A mayor tiempo de ejecución mejor es la aproximación Aplicaciones: simulación, encuestas. de Monte Carlo: dan como resultado el valor correcto con una probabilidad alta, pero pueden entregar valores equivocados. No se puede saber si la respuesta es correcta Se puede reducir la incertidumbre ejecutando varias veces el algoritmo. de Las Vegas: nunca entregan un resultado incorrecto, pueden detectar que el resultado es imposible de obtener en esa ejecución y devolver un mensaje de error, en esos casos se debe intentar de nuevo con los mismos datos hasta obtener la solución correcta.

9 Algoritmos probabilistas
Clasificación Para ilustrar esta clasificación , si se tuviera un algoritmo de cada clase que calcule el año del descubrimiento de américa, los resultados de las distintas llamadas podrían ser: Numérico : “entre 1490 y 1500”, “entre 1485 y 1595”, “entre 1491 y 1501”, “entre 1480 y 1590”, “entre 1489 y 1499”. Con estos cinco datos, la probabilidad de acertar es de 4/5 80% de confianza. Dando más tiempo a la ejecución del algoritmo se podría aumentar la confianza o reducir el ancho del intervalo. Montecarlo: 1492,1492,1492,1491,1492,1492,1492,2134,1492,1492 Un 20% de error Este porcentage podría reducirse dando más tiempo de ejecución Las respuestas incorrectas pueden ser próximas a la correcta o completamente desviadas. Las vegas: 1492,error, 1492, 1492, 1492,error, 1492, 1492, 1492, 1492 Nunca da una respuesta incorrecta 20% de error.

10 Algoritmos probabilistas
Integración numérica Problema: calcular I = Calcular la integral definida con un aloritmo probabilístico, es factible utilizando el teorema del valor medio del cálculo dice que si f es continua en [a,b], entonces en algun punto c en [a,b] la función alcanza su valor promedio Por lo que basta con aproximar el promedio muestreando la función y despejando I=prom*(b-a)

11 Algoritmos probabilistas
Integración numérica Implementación Puede verse que la varianza del estimador calculado por la función anterior es inversamente proporcional al número de n de muestras generadas, y que el estimador es aproximadamente normal, cuando n es grande Por lo que el error esperado es inversamente proporcional a , lo que implica que n tiene que aumentar 100 veces lo hecho hasta entonces si se quiere un dígito adiconal de precisión funcion integraProb(f:funcion; n:entero;a,b:real):real variables suma,x:real;i:entero inicio suma:=0.0; para i:=1 hasta n hacer x:=uniforme(a,b); suma:=suma+f(x) fin-para devuelve (b-a)*(suma/n) fin

12 Algoritmos probabilistas
Verificación de producto de matrices Los algoritmos de Monte Carlo, se aplican a problemas para los que no existen algoritmos eficientes ni deterministas ni probabilistas, que den siempre una solución correcta (a veces ni siquiera aproximada) El hecho de que ocasionalmente den una respuesta equivocada no significa que para ciertos datos la mayoría de las veces el algoritmo falla. La probabilidad de falla del algoritmo debe ser baja para todos los datos o instancias del problema. En otras palabras encuentra una solución correcta con una alta probabilidad sea cual sea la entrada. Sea p un número real tal que 0<p<1, un algoritmo Monte Carlo es p-correcto si: Devuelve una solución correcta con probabilidad p, cualesquiera sean los datos de entrada A veces, p dependerá del tamaño de la entrada, pero nunca de los datos de la entrada en si.

13 Algoritmos probabilistas
Verificación de producto de matrices Problema: se tienen tres matrices A,B,C, de n x n y se sospecha que C=AB Solución trivial es multiplicar AB y comparar con C Complejidad estándar Strassen, Un aloritmoprobabilístico consiste en testear o no cada fila de AB con C de acuerdo a una variable aleatoria Si AB=C, entonces el resultado será siempre igual. Si AB<>C, entonces existe al menuos un elemento diferente. La fila de ese elemento será testeada con probabilidad 0.5, en cuyo caso se encontrará la diferencia. Por lo tanto es un algoritmo 0.5-correcto

14 Algoritmos probabilistas
Verificación de producto de matrices Implementación La complejidad temporal del algoritmo es Una probabilidad del 50% no es buena, sería lo mismo tirar una moneda Sin embargo, la característica utilidad del algoritmo es es que cuando retorna falso existe el 100% de probabilidad de que la respuesta es correcta, sólo cuando devuelve verdad no se sabe la respuesta Tipo mariz arreglo [1..n,1..n] de real funcion freivalds(A,B,C:matriz;n:entero):booleano variables x:arreglo [1..n] de 0..1;i:entero inicio para i:=1 hasta n hacer x[i]:=uniforme_entero(0,1); fin-para si (X*A)*B =X*C entonces devuelve verdad sino devuelve falso fin

15 Algoritmos probabilistas
Verificación de producto de matrices Ejemplo: Si X=(1,1,0) entonces (XA)B=(40,94,128) y la respuesta es verdadero, por lo que se tienen dudas de si la multiplicación es correcta. Intentando con X=(0,1,1), entonces (XA)B=(76,166,236) y la respuesta es falso, por lo que se está seguro que AB<>C. Los algoritmos con esta cracterística (una respuesta es siempre correcta), se denominan sesgados, y permiten aumentar la confianza, ejecutando varias veces el algoritmo con los mismos datos.

16 Algoritmos probabilistas
Verificación de producto de matrices Implementación La probabilidad de que en cada llamada se devuelva incorrectamente el valor de verdad es de 1/2 Como cada llamada a freivalds es independiente, la probabilidad de que k llamadas sucesivas den todas una respuesta incorrecta es Esto se puede ver como la probabilidad de que la fila de la diferencia no sea escojida k veces consecutivas funcion repe_freivalds(A,B,C:matriz;n,k:entero):booleano variablesi:entero inicio para i:=1 hasta k hacer si not freivalds(A,B,C,n) entonces devuelve falso fin-si fin-para devuelve verdad fin

17 Algoritmos probabilistas
Verificación de producto de matrices El algoritmo repe_freivalds es correcto Por ejemplo, si k=10, la respuesta es 99,9% correcta. Un buen resultado considerando que un algoritmo determiístico puede tener errores de SW. Se debe aprovechar esta situación típica de los algoritmos de tipo Monte Carlo: Si se está garantizado que sí se obtienen una de las dos respuestas el algoritmo es correcto Entonces el decrecimiento de la probabilidad de error es exponencial repitiendo varias veces el algoritmo.


Descargar ppt "Diseño y análisis de algoritmos"

Presentaciones similares


Anuncios Google