Title: Presentacin de PowerPoint
1Diseño y análisis de algoritmos
Algoritmos probabilistas
2Temario
- Algoritmos probabilistas
- Introducción
- Clasificación
- Aplicaciones
- Integración numérica
- Verificación de productos de matrices
3Algoritmos 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?
4Algoritmos 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
5Algoritmos 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
6Algoritmos probabilistas Introducción
- Características de los algoritmos probabilistas
- Un algoritmo determinista siempre termina, no
debe fallarejemplo 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.
7Algoritmos 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
U0..1 - uniforme()
- Devuelve un real x uniformemente distribuído en
el intervalo 0,1). Llamadas sucesivas generarn
una secuancia de valores independientes. - En base a esta sentencia se pueden construir,
generadores de otros tipos de valores aleatorios. - Ejemplo disreibución uniforme Ua..b a y b
enteros , altb - function U(a,bentero)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.
8Algoritmos 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.
9Algoritmos 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,213
4,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.
10Algoritmos 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 Iprom(b-a)
11Algoritmos 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(ffuncion nenteroa,breal)
real variables suma,xrealientero inicio
suma0.0 para i1 hasta n hacer
xuniforme(a,b) sumasumaf(x)
fin-para devuelve (b-a)(suma/n) fin
12Algoritmos 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 0ltplt1, 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.
13Algoritmos probabilistas Verificación de
producto de matrices
- Problema se tienen tres matrices A,B,C, de n x n
y se sospecha que CAB - 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 ABC, entonces el resultado será siempre
igual. - Si ABltgtC, 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
14Algoritmos 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,Cmatriznentero)booleano
variables xarreglo 1..n de 0..1ientero
inicio para i1 hasta n hacer
xiuniforme_entero(0,1) fin-para si
(XA)B XC entonces devuelve verdad
sino devuelve falso fin
15Algoritmos 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 ABltgtC. - 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.
16Algoritmos 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,Cmatrizn,kentero)bo
oleano variablesientero inicio para
i1 hasta k hacer si not
freivalds(A,B,C,n) entonces devuelve
falso fin-si fin-para devuelve
verdad fin
17Algoritmos probabilistas Verificación de
producto de matrices
- El algoritmo repe_freivalds es
correcto - Por ejemplo, si k10, 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.