Teoría de Algoritmos Tema VI: Algoritmos Probabilistas
Tema Tema 6: 6: Alg orit mos Probabilist as 6.1. 6.1.-- Intro ducc ión 6.2. 6.2.-- Generador Generador es de Númer Números os A leatori os 6.3. 6.3.-- Algor itmo s Numéricos 6.3. 6.3.1. 1.-- Cálc Cálculo ulo del númer n úmero o 6.3.2.- Integración numérica 6.3. 6.3.3. 3.-- Test d e pr imali dad 6.4. 6.4.-- Al gor itmo s MonteCarlo MonteCarlo 6.4. 6.4.1. 1.-- Test Test de pr imali dad Mon teCarl teCarlo o 6.4. 6.4.2. 2.-- Elemento Elemento mayor itari o de un array 6.4. 6.4.3. 3.-- Comparación Comparación de series de mu ltip lic ación d e matrices 6.5.- Algoritmos Las Vegas 6.5. 6.5.1. 1.-- El El pr oblema ob lema de las och o reinas r einas 6.5. 6.5.2. 2.-- La elecci ón de un jefe 6.6. 6.6.-- Algor itmo s Sherwood 6.6. 6.6.1. 1.-- Búsq ueda del k-ésimo menor elemento d e un array 6.7. 6.7.-- Algo ritm os Genéticos Genéticos 6.7.1.- Introducción 6.7. 6.7.2. 2.-- Estru Estru ctur a de un Alg orit mo Genético Genético básico 6.7. 6.7.3. 3.-- Tipos de Alg ori tmos Genéticos Genéticos 6.7. 6.7.4. 4.-- Componentes b ásicas de u n A lgo ritm o Genético 6.7. 6.7.5. 5.-- Probl emas: Moc hil a, 8-reinas, 8-reinas, Viajante de Comerc io
1
Teoría de Algoritmos Tema VI: Algoritmos Probabilistas
2
6.1.- Intro ducc ión •
Existen muchos problemas en los que llegado a cierto punto, se ha de tomar una decisión óptima. A menudo, la búsqueda de esta decisión toma un tiempo excesivo
•
A veces es mejor no tomar esta decisión óptima, sino tomar una buena decisión
•
En algunas ocasiones tomar decisiones aleatorias nos puede llevar a la solución deseada
•
En términos de la Teoría de Algoritmos: cuando se tenga que realizar una elección en un algoritmo, a veces es preferible hacerlo aleatoriamente en vez de perder tiempo en decidir cuál de las posibles alternativas es la correcta
•
Esta elección aleatoria debe se, en promedio, más eficiente que la decisión, aunque en algún caso el proceso aleatorio tome, por mala suerte, más tiempo
•
En estos casos hablamos de tiempo esperado de ejecución y no de orden de complejidad
•
En este tema se verán algoritmos que, basados en la Teoría de la Probabilidad, encuentran una solución aproximada o una solución exacta (aunque a veces no la encuentran o dan una solución errónea)
•
Clasificación de los algoritmos pr obabilistas: Numéricos:
solución aproximada
Monte Carlo: solución exacta; pero a veces se equivocan
•
Las Vegas:
nunca devuelven una solución errónea, pero a veces no la encuentran
Sherwood:
siempre encuentran la solución y siempre es correcta
Cada uno de ellos se debe aplicar bajo ciertas condiciones específicas y todos buscan soluciones de distina forma e incluso encuentran (a veces no) distinto tipo de soluciones
Teoría de Algoritmos Tema VI: Algoritmos Probabilistas
3
6.2.- Generadores de Número s Al eator ios •
No se puede definir un número como aleatorio por si mismo
•
Lo que si se pueden definir son series de números aleatorios: cuando, de entre un rango de valores posibles, la distribución de los números de la serie es uniforme
•
Encontrar un método que nos permita obtener series de números aleatorios en un ordenador es una tarea difícil, pero no lo es obtener series de números pseudoaleatorios: números que a todo el mundo le parezcan aleatorios excepto al programador que sabe el método
•
Propiedades que deben cump lir l as series de números aleatorios : •
Los números han de estar uniformemente distribuidos
•
Han de ser estadísticamente independientes
•
Han de ser reproducibles
•
Que requieran poco espacio en memoria
•
Que se obtengan rápidamente
• Existen muchos métodos posibles para obtener series de números pseudoaleatorios. Ejemplo simple: escoger un número de n cifras, elevarlo al cuadrado, coger las k cifras centrales del resultado obtenido, siendo éstas el siguiente número de la serie. Para n=k=4: 4231
9013
x 4231
x 9013
4231
27039
12693 8462 16924
⇒
9013
⇒ ....
81117 81234169
17901361
•
Este método no tiene nada de aleatorio, pero lo parece. No tiene ninguna propiedad aceptable, ya que no se puede comprobar absolutamente nada, por lo que es impredecible cuándo comenzarán a repetirse los números (comenzar con el 2500)
•
Una serie de números es aleatoria cuando no se descubre en ella ninguna propiedad: de crecimiento, repetición, siguiente, etc.
•
Definición de Lehmer de serie de números pseudoaleatoria: noción vaga que encierra la idea de una sucesión de números en la que cada término es impredecible para la persona ajena al problema y cuyos dígitos se someten a un cierto número de pruebas estadísticas
Teoría de Algoritmos Tema VI: Algoritmos Probabilistas
•
4
Generación de nú meros aleatori os: los métodos más comunes son los llamados métodos congruenciales. El más famoso es el de Lehmer, en el cual se utilizan tres datos según la fórmula:
X n +1 = •
+
( a * X n
c)
mod m
Tipos:
Generador congruencial mixto: aquel en el que c ≠ 0 Generador congruencial multiplicativo: aquel en el que c = 0
o Diferencias: los multiplicativos son más rápidos, aunque tienen una menor longitud de ciclo •
Propiedades del generador de esta naturaleza: fácilmente reproducible (comenzando por la misma semilla), se obtiene rápidamente y ocupa poco espacio de memoria. Hay que esforzarse en conseguir que cumpla también las dos primeras propiedades: uniformidad e independencia
•
Teorema: La sucesión congruencial definida por X0, a, c y m es de período máximo si y sólo si:
C es primo relativo a m (su máximo común divisor es 1) a-1 es múltiplo de p, ∀ p primo que divida a m a-1 es múltiplo de 4 si m es múltimplo de 4
o Ejemplo: a = 21, c = 27 y m = 20 •
Generador que cumple las 5 reglas: el propuesto por Lehmer: a = 48.271; c = 0; m = 231 – 1 = 2.147.483.647
•
Problema: produce overflow con algunos valores
•
Solución: Reducir la expresión a:
X n +1
=
a ( X n
mod Q)
− R ( X n
div
Q)
+
f ( m)
donde Q = m div a, R = m mod a y f(m) = 0 si la suma de los dos primeros sumandos de la fórmula es mayor o igual que 0 y f(m) = m en caso contrario Const a=48271; m=2147483647; Q=44488; R=3399;
{ 231- 1 } { m Di v a } { m Mod a }
Funct i on Random( Var Ser i e: Real ) : Real ; Begi n Ser i e←a*( Ser i e Mod Q) - R*( Ser i e Di v Q) ; I f Ser i e<0 Then Ser i e←Ser i e+m; Ret ur n( Ser i e) ; End; Generador congruencial de números aleatorios
Teoría de Algoritmos Tema VI: Algoritmos Probabilistas
5
6.3.- Algor itmo s Numéricos •
Estos algortimos dan una solución aproximada
•
En algunos casos la solución real calculada por un algoritmo tradicional no es exacta debido a la resolución de la representación de la información utilizada
•
Cuando el error cometido sea menor que dicha resolución, la solución obtenida por el algoritmo probabilista es tan exacta como la encontrada por el algoritmo tradicional
•
Cuando la precisión del ordenador no es significativa, se puede dar como resultado un intervalo o bien una probabilidad
•
En los ejmplos que veremos a continuación se refleja claramente la filosofía de los algoritmos numéricos (aunque no son buenos algoritmos) 6.3.1.- Cálculo del n úmero
Funct i on dar dos( n: LongI nt ) : Real ; Begi n k←0; For i ←1 To n Do x←Random( 0, 1) ; y←Random( 0, 1) ; I f x2+y2≤1 Then k←k+1; Ret ur n( 4k/ n) ; End; Cálculo del número , dardo s
6.3.2.- Integración numérica Funct i on I nt egr al _1( f : Funct i on; n: LongI nt ) : Real ; Begi n k←0; For i ←1 To n Do x←Random( 0, 1) ; y←Random( 0, 1) ; I f y≤f ( x) Then k←k+1; Ret ur n( k/ n) ; End; Cálcu lo de int egrales, dardos (I)
Functi on I nt egr al _2( f : Functi on; n: LongI nt ; a, b: Real ) : Real ; Begi n sum←0; For i ←1 To n Do x←Random( a, b) ; sum←sum+f ( x) ; Ret ur n( ( b- a) *( sum/ n) ) ; End; Cálculo de integrales, Algori tmos numéricos (II)
Teoría de Algoritmos Tema VI: Algoritmos Probabilistas
Funct i on Tr apezoi dal ( f : Funct i on; n: LongI nt ; a, b: Real ) : Real ; Begi n del t a←( b - a ) / ( n - 1 ) ; sum←( f ( a) - f ( b) ) / 2; For x←a+del t a To b- del t a St ep del t a Do sum←sum+f ( x) ; Ret ur n( sum*del t a) ; End; Cálculo de integrales, Algoritmo determinista (y III)
6.3.3.- Test d e primali dad Const
NOESPRI MO = FALSE; PROBABLEPRI MO = TRUE; Procedure
Power ( A, P, N: I nt eger ; Var Resul t : I nt eger ; Var QueEs: Bool ean) ;
Var X: I nt eger ; Begi n I f P=0 Then Resul t ←0 El s e Power ( A, P Di v 2, N, X, QueEs) ; Resul t ←( X*X) Mod N; I f ( Resul t =1) And ( X<>1) And ( X<>N- 1) Then QueEs ←NOESPRI MO; I f P Mod 2 = 1 Then Resul t ←( Resul t *A) Mod N; End; Function
Test Pr i mo( N: I nt eger ) : Bool ean;
Var A, Resul t : I nt eger ; QueEs: Bool ean; Begi n A←Random( 2, N- 2) ; { ambos i ncl usi ve } QueEs: =PROBABLEPRI MO; Power ( A, N- 1, N, Resul t , QueEs) ; Test Pr i mo←( Resul t =1) And ( QueEs=PROBABLEPRI MO) ; End; Test de prim alidad, Algorit mos numéricos
6
Teoría de Algoritmos Tema VI: Algoritmos Probabilistas
7
6.4.- Al gor itmo s MonteCarlo •
En contraposición a los algortimos numéricos, los algoritmos MonteCarlo siempre encuentran soluciones exactas, aunque a veces se equivocan
•
La característica más importante de estos algoritmos es que suele ser posible reducir arbitrariamente la probabilidad de error a costa de un ligero aumento del tiempo de cálculo
•
La precisión de la respuesta va en función del tiempo de ejecución, por lo que su eficiencia estará en orden inverso a su precisión
•
El objetivo de estos algoritmos es que en sucesivas llamadas a la rutina principal, se rebaje la probabilidad de error
•
Nunca se debe dar como válido un algoritmo MonteCarlo que falle siempre para una misma instancia de un problema
•
Definiciónes:
o Algoritmo MonteCarlo p-correcto, (con ½ < p < 1): algoritmo que devuelve una solución correcta con una probabilidad no menor que p sea cual sea el caso considerado o Algoritmo MonteCarlo consistente: devuelve siempre la misma solución correcta para la misma entrada •
Los algoritmos resultantes de aplicar la tácnica MonteCarlo son extremadamente simples y eficientes
•
Ejemplo:
o Suponer un algoritmo MonteCarlo consistente 0.7-correcto: MC(x) o Considerar otro algoritmo que llame varias veces al anterior, o
chequeando si alguna de las soluciones devueltas por él son iguales entre si (indicaría que probablemente esa sea la solución correcta)
o Este segundo algoritmo es mejor que MC(x) puesto que al ser consistente, si hubieran dos soluciones iguales tienen que ser la correcta
o La probabilidad de acierto de este segundo algortimo aumenta a un 0.84% ( Amplificación de la ventaja estocástica) Funct i on MC3( x) ; Begi n t ←MC( x) ; u←MC( x) ; v←MC( x) ; I f t =u Or t =v Then Ret ur n( t ) ; Ret ur n( v) ; End; Al go rit mo Mon teCar lo co ns ist ent e
Teoría de Algoritmos Tema VI: Algoritmos Probabilistas
8
6.4.1.- Test de pr imali dad Mon teCarlo •
Ejemplo de algoritmo inaceptable: siempre falla para la misma instancia del problema (289 = 17 * 17)
•
30030 = 2 * 3 * 5* 7* 11* 13
Funct i on Pr i mo( n) : Bool ean; Begi n I f MCD( n, 30030) =1 {al gor i t mo de Eucl i des } Then Ret ur n( Tr ue) El se Ret ur n( Fal se) ; End; Test de primalidad inaceptable, Algoritmo MonteCarlo
6.4.2.- Elemento mayor itari o de un array Funct i on Mayor ( T[ 1. . n] ) : Bool ean; Begi n i ←Random( 1. . n) ; x← T[ i ] ; k←0; For j ←1 To n Do I f T[ j ] =x Then k←k+1; Ret ur n( k>n/ 2) ; End; Elemento mayoritario (I)
Funct i on Mayor 2( T[ 1. . n] ) : Bool ean; Begi n I f Mayor ( T) Then Ret ur n( Tr ue) Ret ur n( Mayor ( T) ) ; End; Elemento m ayorit ario (II)
Funct i on Mayor MC( T[ 1. . n] ) : Bool ean; Begi n k←l og2( 1/ ξ) ; For i ←1 To k Do I f Mayor ( T) Then Ret ur n( Tr ue) ; Ret ur n( Fal se) ; End; Elemento mayoritario, Algoritmo MonteCarlo (y III)
Teoría de Algoritmos Tema VI: Algoritmos Probabilistas
9
6.4.3.- Comparación d e mult ipli cación de matric es Functi on Pr oduct( A, B, C: [ 1. . n, 1. . n] ; n: i nt eger ) : bool ean; Var x: Ar r ay[ 1. . n] ; Begi n For i ←1 To n do x[ i ] ←Random( 0, 1) ; I f ABX=CX Ret ur n( Tr ue) El se Ret ur n( Fal se) ; End; Comparación de matri ces (I)
Funct i on Pr oduct MC( A, B, C: [ 1. . n, 1. . n] ; n: i nt eger ) : bool ean; Var k: i nt eger ; ξ: Real ) ; Begi n K ← I nt ( l og2( 1/ ξ) ) ; For i ←1 To k Do I f ( not Pr oduct ( A, B, C, n) ) Then Ret ur n( Fal se) Ret ur n( Tr ue) ; End; Comparación de matrices, Algoritmos MonteCarlo (II)
6.5.- Algoritmos Las Vegas •
Estos algoritmos avanzan un paso más: nunca devuelven una solución errónea, pero si no encuentran una solución correcta, no devuelven nada
•
Al igual que en los algoritmos numéricos y MonteCarlo, la probabilidad de encontrar una solución correcta aumenta con el tiempo empleado en obtenerla
•
Están especialmente indicados en problemas que de implementarlos determinísticamente serían casi intratables, pero probabilísticamente son bastante eficientes: problemas NP-Completos
•
Se arriesgan a no encontrar la solución del problema a costa de reducir el tiempo de ejecución
•
El objetivo es minimizar la probabilidad de no encontrarla, tomando decisiones aleatorias con inteligencia
•
Su esquema general se parece en parte al de los algoritmos MonteCarlo, salvo que incluyen una variable booleana para saber cuando se encuentra la solución correcta
•
En ocasiones, en lugar de realizar el cálculo completo, podemos dejar al azar encontrar parte de la solución, calculando el resto de forma determinista con el algoritmo tradicional
Teoría de Algoritmos Tema VI: Algoritmos Probabilistas
10
6.5.1.- El pr oblema de las och o reinas Pr ocedur e Col ocar ( var r ei nas: Tr ei nas; var exi t o: Bool ean) ; Var k, i , j : byt e; nb: wor d; Begi n k: =0; Repeat nb: =0; { nb = 0 Æ no hay posi ci ón l i br e } For i : =1 To 8 do begi n Rei nas[ k+1] : =i ; i f Not J aque( Rei nas, k+1) t hen begi n I nc( nb) ; {cuant o mayor es nb exi st e menos } {pr obabi l i dad de que cambi e l a deci si ón} i f r andom( nb) +1 = 1 t hen j : =i ; end; end; i f nb>0 { si se col ocó } t hen begi n Rei nas[ k+1] : =j ; I nc( k) ; end; unt i l ( nb=0) Or ( k=8) ; { er r or o sol uci ón } exi t o: = nb > 0; end; Problema de las ocho r einas, Alg ori tmo L as Vegas
•
El éxito de este algoritmo reside en que existen aproximadamente 100 soluciones, lo que es un número suficientemente significativo para encontrar soluciones
•
Para el problema de las 12 reinas: utilizar el algoritmo Las Vegas para colocar 4 reinas y Backtracking para las 8 restantes (el número óptio de posiciones al azar es 5)
Teoría de Algoritmos Tema VI: Algoritmos Probabilistas
11
6.5.2.- La elección de un jefe Definición: la estructura de red en anillo se utiliza en muchos sistemas informáticos. En ellos, cada host se puede comunicar con sus vecinos inmediatos. Si extrapolamos lo dicho a una computadora con varios procesadores, nos encontramos con un sistema similar, pero con algunas dificultades. Problema: qué procesador será el ‘jefe’ o encargado de gestionar la máquina Solución: utilizar un algoritmo Las Vegas, siempre y cuando el número de procesadores sea conocido por cada uno de ellos •
La clave la dan los generadores de números aleatorios. Cada procesador escoge un número semilla para iniciar su generador
•
A continuación escoge un número entre 1 y m (m = número de procesadores del sistema)
•
Los que escogen el número 1 se lo hacen saber a los demás haciendo circular un mensaje. Posibilidades:
o Ninguno sacó un 1: la red sigue tal y como estaba o Más de uno sacó un 1: sólo ellos seguirán activos y reinicializan su variable m con la cantidad de procesadores que sacaron 1
o Sólo uno sacó 1: este se convierte en el nuevo jefe •
Este algoritmo nunca se equivoca, nunca elige dos jefes y la probabilidad de bloqueo es cero
•
Problema: que todos tengan el mismo generador de números aleatorios. Solución: que las semillas sean distintas
6.6.- Algor itmo s Sherwood • Estos algoritmos siempre encuentran la solución y ésta siempre es correcta • Filosofía: tomar una decisión aleatoria que disminuya el tiempo de ejecución en el peor de los casos, sin que perjudique la exactitud de la solución • La decisión aleatoria es crucial y debe hacer que todas las instancias del problema se distancien del peor caso
Teoría de Algoritmos Tema VI: Algoritmos Probabilistas
12
6.6.1.- Búsq ueda del k-ésimo menor elemento de un array Funci on Sel ecci onRB( T[ 1. . n] , k) : t i poel ement o; { Devuel ve el k- ési mo menor el ement o del ar r ay T } { se supone que 1 ≤ k ≤ n } I ni ci o i ←1; j ←n; Mi ent r as i < j hacer i ni ci o m ← T[ r andom( i . . j ) ] ; particionar( T, i , j , m, u, v) ; Si kv Ent onces i ←v+1 Si _No i ←k; j ←k; f i n_mi ent r as; Devol ver ( T[ i ] ) ; f i n; Búsq ueda del k-ésimo elemento de un array
• El procedimiento particionar separa los elementos de T entre las posiciones i y j en tres partes, según el valor del m
o Los elementos T[i,..,u-1] son menores que m o Los elementos T[u,..,v] son iguales que m o Los elementos T[v+1,..,j] son mayores que m voi d par t i ci onar ( i nt t [ ] , i nt i , i nt j , i nt m, i nt * u, i nt * v) { i nt k, el e;
}
*u= *v= i ; f or ( k=i ; k<=j ; k++) { el e = t [ k] ; i f ( el e < m) { t [ k] = t [ * v] ; t [ *v] = t [ *u] ; t [ *u] = el e; ( *u) ++; ( *v) ++; } el se i f ( el e == m) { t [ k] = t [ * v] ; t [ *v] = el e; ( *v) ++; } } (*v)--; Particionar
Teoría de Algoritmos Tema VI: Algoritmos Probabilistas
13
6.7.- Algo ritm os Genéticos 6.7.1.- Introducción • Un AG es un algoritmo de optimización, búsqueda y aprendizaje inspirado en los procesos de Evolución natural y Evolución genética • Elementos:
o Una población de candidatos a solución (cromosomas) que se actualiza rápidamente
o Funciones de evaluación y selección que sirven para decidir los mejores indiviudos, que serán los que se van a reproducir
o Explotación y exploración mediante el cruce de individu os y la mutación 6.7.2.- Estructu ra de un Algo ritm o Genético básico(AG) • Propuesta por J. Holland en 1975 Pr ocedi mi ent o Al gor i t mo_Genét i co I ni ci o t Å 0 ; I ni ci al i zar P( t ) ; Eval uar P( t ) ; Mi ent r as ( no se cumpl a l a condi ci ón de par ada) hacer I ni ci o t Å t + 1; sel ecci onar P( t ) desde P( t - 1) ; r ecombi nar P( t ) ; eval uar P( t ) ; Fi n_Mi ent r as; Fi n ; Estructura de un Algori tmo Genético
6.7.3.- Tipos de Alg ori tmos Genéticos • Modelo Generacional. Es el modelo clásico. Durante cada generación se crea una población completa de nuevos individuos mediante la selección de padres de la población anterior y la aplicación de los operadores genéticos sobre ellos. LA nueva población reemplaza directamente a la antigua • Modelo Estacionario. Durante cada generación se escogen dos padres de la población (usando muestreo simple u otro tipo de muestreo) y se le aplican los operadores genéticos. Los dos nuevos cromosomas (o el único hijo) reemplaza a dos cromosomas (un cromosoma) de la población (normalmente el/los peor/es)
Teoría de Algoritmos Tema VI: Algoritmos Probabilistas
• El modelo estacionario produce una presión selectiva (convergencia rápida) cuando se reemplazan los peores
14
alta
• Alternativas:
o Escoger de forma aleatoria los individuos a reemplazar o Reemplazar los individuos más antiguos de la población
6.7.4.- Componentes b ásicas de u n A lgo ritm o Genético • Codificación Binaria: cada individuo se representa medinate una cadena de bits (0010111 …. 1001) • Codificació n Entera: permutaciones de elementos (E5 E9 E1…E7 E0) • Codificació n Real: lista de números reales (0.5 0.8 0.2 … 0.7 1.0 0.3)
6.7.5.- Probl emas • Mochila • 8-reinas • Viajante de com ercio