Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Algoritmos paralelos básicos (página 2)




Enviado por Pablo Turmero



Partes: 1, 2

Monografias.com

Método Monte Carlo
El Monte Carlo más sencillo, escoge puntos al azar
La Integral es la suma de los valores de la función f(xRandom-i) en los valores escogidos al azar xRandom-i multiplicados por el intervalo de integración (b-a) y dividido por el número de puntos generados.
Esta da un método robusto (y sin preferencias) que es fácil de usar en integrales de n-dimensiones o integrales de funciones problemáticas
Se puede adaptar en límites complicados
Se integra sobre regiones más grandes de lo necesario
Se define f(x) =0 fuera del intervalo [a b]

(Gp:) b
(Gp:) a

Monografias.com

Hallar pi por integración con Monte Carlo
(x,y) es un punto aleatorio: x,y variables aleatorias U.D.
Otra forma de Monte Carlo: g es una función de densidad.
Ambas son equivalentes

Monografias.com

Errores
Para una integral con N puntos en 1-D:
Monte Carlo tiene un error del orden de 1/N0.5
Trapezoidal iterativo : 1/N2
Simpson iterativo: 1/N4
Pero en d dimensiones, todos menos el Monte Carlo deben usar una malla de N1/d puntos por lado; no funciona bien para N>3
Monte Carlo aún tiene error 1/N0.5
Error de Simpson es 1/N4/d
Cuando usar Montecarlo? Cuando error de Montecarlo es menor que error de Simpson para los mismos N puntos? 1/N0.5 < 1/N4/d ? 0.5>4/d , o sea d>8

Monografias.com

Paradigmas de Monte Carlo paralelo
Master-worker: se genera los números aleatorios en el nodo 0 y se pasan a los demás.
Todos los nodos computan.

Monografias.com

Paradigmas de Monte Carlo paralelo
Clienteservidor: es un servidor de números aleatorios, no procesa, sólo crea y envía los randoms

Monografias.com

Paradigmas de Monte Carlo paralelo
Full workers: cada nodo genera sus propios números aleatorios. El nodo 0 sólo cuida que se siembren diferentes semillas o que se use la misma semilla pero diferentes rangos.

Monografias.com

Números pseudo-aleatorios
Elemento Central en la Simulación digital.
Definición formal controvertida.
Elemento esencial en muchas áreas del conocimiento Ingeniería, Economía, Física, Estadística, etc.
Definición intuitiva: Una sucesión de números aleatorios puros, se caracteriza por que no existe ninguna regla o plan que nos permita conocer sus valores.
Los números aleatorios obtenidos a través de algoritmos recursivos se llaman pseudoaleatorios (pseudo= no son, pero parecen).

Monografias.com

Mapa Conceptual
Fenómenos Físicos
Procedimientos Matemáticos
Números
Aleatorios
Validación de
Series de NA
Variables
U (0,1)
Variables
Aleatorias
Tabla de Nros. aleatorios
Xi+1=(aXi+c) mod m

Monografias.com

Números aleatorios
Disponer de un buen generador de números
aleatorios es clave en:

Simulación física (Monte Carlo y famila)
Computación Aleatorizada
Computación Evolutiva
Algoritmos Aleatorizados (ej: algoritmos de gossip)
Verificación de Algoritmos
Validación de Algoritmos
Criptografía
etc.

Monografias.com

Algunas Propiedades de Nros Aleatorios
1. Distribución Uniforme
Cualquier número que pertenezca al rango de interés debe tener la misma probabilidad de resultar sorteado. 

2. NO Correlación Serial.
La aparición de un número en la secuencia, no afecta la probabilidad de que aparezca otro (o el mismo) número. (si x1,x2,…,xn son aleatorias ? el vector (x1,x2,…,xn) también

Monografias.com

Algunas Propiedades de Nros Aleatorios
3- Complejidad Computacional: La aleatoriedad de Kolmogorov, también denominada incomprensibilidad computacional. Consiste en constatar si la aleatoriedad de una sucesión de números es incomprensible (problema decidible).
4- Impredecibilidad

Monografias.com

Algunas Propiedades de Nros Aleatorios
DEF 1: Kolmogorov (1987) [Complejidad Algorítmica] Una sucesión de números es aleatoria sino puede producirse eficientemente de una manera más corta (con un programa) que la propia serie.

DEF 2: L’Ecuyer (1990) [Impredicibilidad] Una sucesión de números es aleatoria si nadie que utilice recursos computacionales razonables puede distinguir entre la serie y una sucesión de números verdaderamente aleatoria de una forma mejor que tirando una moneda legal para decidir cuál es cuál.

Monografias.com

Ejemplo
La sucesión 1,2,3,4,5,1,2,3,4,5,1,2,3,4,5…
es uniforme pero está correlacionada.
La sucesión 3,4,4,2,1,4,5,2,5,4,1,1,3,4,4,3,4
Es no correlacionada pero no es uniforme
Existen Tests que verifican las condiciones de uniformidad y correlación serial.

Monografias.com

Generación de “aleatorios”
Tablas de números aleatorios
RAND (1955), 100,000 números aleatorios (ruido electrónico)
Fenómenos físicos
Ruido blanco producido por circuitos electrónicos
Recuento de partículas radioactivas emitidas
Lanzamiento de monedas / dados
Rueda de la fortuna / ruleta
Java Lamps u otos sistemas caóticos
Procedimientos matemáticos ? pseudo aleatorios
Se usa algoritmos para la generación de números aparentemente aleatorios, se entrega una semilla y se generan los sucesores mediante una función

Monografias.com

Propiedades para pseudo aleatorios
Distribución uniforme
No correlación
Periodo largo (sin repetición).
Reproducibles y mutables.
Sencillo en su implementación.
Método rápido de generación.
Poca memoria para la generación
Portabilidad.

Monografias.com

Método del cuadrado medio
Fue propuesto inicialmente por Von Newman y Metrópolis en el año 1946.
Para generar el siguiente número pseudo-aleatorio, se toman los n dígitos centrales del cuadrado del número anterior de n dígitos.
Se requiere una semilla.

Monografias.com

Método del cuadrado medio

Monografias.com

Análisis
El problema con este método es que tiende a degenerar rápidamente. Dependiendo del valor inicial el método puede degenerar al cabo de ˜20 términos.
Por ejemplo, supóngase que se quiere generar una serie de números pseudo-aleatorios de cuatro dígitos y se tiene como i-ésimo termino generado es 3500, luego se tendrá:

Se puede observar que hemos llegado a una condición degenerada. Por la tanto, es necesario verificar siempre la serie de números y protegerse contra este fenómeno

Monografias.com

Método del Producto Medio
Este método es muy similar al anterior ya que se tomará como número aleatorio siguiente de la serie, a los n dígitos centrales del resultado de una multiplicación previa.

Se requiere dos semillas.

Monografias.com

Método del Producto Medio

Monografias.com

Análisis
Una modificación para este método consiste en utilizar un multiplicador constante, en lugar de dos números aleatorios como se muestra a continuación:
Rn+1 = K * Rn

Estos métodos son similares al cuadrado medio.
Sin embargo los dos tienen periodos más extensos y los números parecen estar distribuidos uniformemente.
Este método tiende a degenerar a un valor constante.
Tanto el método de cuadrados medios como el de producto medio tienen un periodo corto para la cantidad de números aleatorios que vamos a necesitaremos generar en cada uno de nuestros Modelos.

Monografias.com

Método Congruencial Lineal (MCL)
Los generadores congruenciales lineales generan una serie de números pseudo – aleatorios de tal forma que se puede generar el siguiente a partir del ultimo número derivado, es decir, que el número Xn+1 es generado a partir de Xn.

La relación de recurrencia para el método congruencial mixto es:

Xn+1 = (aXn + c) mod m

Donde:
X0 = semilla (X0 >0)
a = multiplicador (a >0)
c = constante aditiva (c >0)
m = módulo (m >X0, m >a y m>c)

Monografias.com

Método Congruencial Lineal (MCL)
Si se quiere obtener números Uniformes (0,1) se normaliza el resultado:

Un = Xn / m

En el MCL, si se repite un número ya se repite toda la secuencia.

Ventajas:
utiliza poca memoria y es muy rápido.
fácil de volver a generar la misma secuencia, guardando un solo número, (se alcanza con partir desde la misma semilla: X0).

Monografias.com

Ejemplo

Monografias.com

Si no se escogen los valores adecuados de los parámetros el período del generador de números pseudo – aleatorios, será menor que m.
En la Tabla A se muestra los valores obtenidos para un generador con parámetros: a = 7, c = 9, X0 = 5 y m = 11. Como puede apreciarse en la tabla el período del generador es 10 que es menor que el módulo que es 11.
Si bien este caso no es crítico si lo es el que se presenta en la Tabla B donde los parámetros toman los valores de a = X0 = c = 7 y m=10 cuyo período es de 4, que es un caso muy critico que nos puede llevar a resultados no deseables y poco confiables
Análisis

Monografias.com

Tabla A

Monografias.com

Tabla B

Monografias.com

Selección de m, a, c, X0
Selección de módulo (m). Existen dos opciones que son las siguientes:

a.1) Escoger al azar el módulo m.

a.2) Tomar m de tal manera que sea el número primo más grande posible y además que sea menor que pd-1, donde p es la base del sistema que se esta usando y d es el número de bits que tiene una palabra de computadora en el sistema que se esta usando.

Por ejemplo una computadora Pentium2 que trabaja en el sistema binario entonces se tiene que p = 2 y d = 32.

Monografias.com

b) Selección de a.
El valor de a debe ser un número entero impar, que no deberá ser divisible por 3 ó 5. Pero además, para asegurarnos que el generador tenga período completo, el valor que se tome para a deberá escogerse según el siguiente criterio:

(a-1) mod 4 = 0 si 4 es un factor de m.
(a-1) mod b = 0 si b es un factor primo de m.

Generalmente se toma a igual a 2k + 1 cuando se trabaja en el sistema binario. En ambos casos el valor que se asigne a k deberá ser mayor o igual que 2.
Selección de m, a, c, X0

Monografias.com

c) Selección de c.
Este parámetro puede tomar cualquier valor. Pero para asegurarnos de tener buenos resultados se deberá seleccionar según la siguiente regla:

c mod 8 = 5

En consecuencia c deberá tomar un valor entero impar y relativamente primo a m.
Selección de m, a, c, X0

Monografias.com

d) Selección de X0
Se tiene que para el generador congruencial el valor que tome X0 es irrelevante y tiene poca o ninguna influencia sobre las propiedades estadísticas de las series de números pseudo – aleatorios que se generen.
Selección de m, a, c, X0

Monografias.com

Método Congruencial Lineal (MCL)
Para terminar esta parte se debe señalar que existen otras formas matemáticas de representar este generador, que son las siguientes:

Xn = [anX0 + c{(an – 1)/(a – 1)}] mod m

Xn+k =[anXk + c{(an – 1)/(a – 1)}] mod m

Monografias.com

Método Congruencial Multiplicativo
En forma semejante al método anterior el generador congruencial multiplicativo genera el próximo número pseudo – aleatorio a partir del último número calculado, siguiendo la siguiente relación de recurrencia:

Xn+1 = aXnmod m

Para este generador también se deben escoger adecuadamente los valores de a, X0, y m, con la finalidad de que se pueda asegurar un período máximo para la series pseudo – aleatorias generadas por este método. A continuación se dan las reglas que indican como se deben escoger estos valores.

Monografias.com

Selección de m, a, X0
Para trabajar en el sistema binario los valores de los parámetros deberán escogerse siguiendo las siguientes reglas:
El valor de X0 debe ser un número entero impar y relativamente primo a m.
El valor de a debe ser obtenido a partir de la siguiente expresión:
a = 8t ± 3
Donde t es cualquier entero.
El valor de m puede ser 2d .

Si m = 2d el período del generador es 2d-2 ó m/4.
A modo de ejemplo se obtendremos el período de un generador cuyos parámetros son: a = 5, X0 = 5 y m = 32. En la siguiente tabla se muestra los elementos que componen la serie generada cuyo período es de 8

Monografias.com

Tabla C

Monografias.com

Tabla D

Monografias.com

Otros métodos
Series retardadas de Fibonacci
In = In-r – In-s mod 224, r, s grandes (cientos, miles), r>s
Series aritméticas:
I – k, I – 2k, I – 3k…, mod (224 – 3), k = 7654321
Mersenne Twister (MT19937): periodo de 219937-1. No tiene correlación en 623 dimensiones.
Combinación de 2 o más métodos. Ej: Masaglia es combinación de Fibonacci y Aritméticas

Monografias.com

Mersenne Twister
Basado en recurrencia y modulo 2

l, s, t, u son enteros, b, c son máscaras de bits, x[0:n-1] es un array de n enteros sin signo, ll, a son constantes enteras sin signo

Monografias.com

Paso 0

Crear una máscara para bits superiores y otra para los inferiores
Paso 1

El array x se inicializa con una semilla
Paso 2

y : bits superiores de x[i] concadenados con los bits inferiores de x[i+1].

Monografias.com

Paso 3

y * A.
A se escoje tal que sea fácil de calcular con shift derecho y xor.
Paso 4

Multiplica por T (tempering matrix) para mejor equidistribución y buena precisión.
Paso 5 & 6:
Sumar 1 a i , repetir el proceso

Monografias.com

Streams – Torrentes
Un generador de números aleatorios que comience con la misma semilla, siempre producirá la misma torrente o secuencia de números.

Diferentes semillas generarán diferentes secuencias. Si las semillas se eligen con valores no cercanos (en el ciclo del generador), entonces las secuencias de números generados (torrentes) parecerán y actuarán como números aleatorios independientes entre sí con lo que colaborarán en la generación de v.a. Independientes entre sí.

Monografias.com

Generadores Paralelos de nums. pseudo aleatorios
Cómo hago para Montecarlo Paralelo?
Generación centralizada (master-worker y cliente servidor)
Generación descentralizada (full workers)
El problema de la 1ra opción es que hay que comunicar data por memoria compartida o por la red: se gasta tiempo. Además no se usaría paralelismo en la producción de los pseudo aleatorios.

Monografias.com

Generación descentralizada (full workers)
Asumamos que se usa el mismo método en todos los cores. Hay 3 formas:
Todos los cores usan la misma semilla, generan la misma secuencia, pero usan solo una parte de los números: r1, r2, r3, r4, r5, r6, r7, r8, … (1 sólo stream)
Cada core usa una semilla diferente (varios streams independientes).
Usar un generador especialmente diseñado para computación paralela (varios streams independientes).

Monografias.com

Generación descentralizada (full workers)
La primera opción: si son np cores, se computa por gusto un ratio de np-1/np . A veces no se podría usar con hilos.
Puede ser que el generador no sea “thread safe” (cada llamada a random, no importa el hilo, usa la misma variable en memoria ? necesita un mutex en Multicores) .
La segunda: no hay garantía que las secuencias de 2 diferentes cores no tengan correlación (“Solo Dios sabe si no tienen correlación”). Para np cores, hay np(np-1)/2 chances de correlación. A veces no se podría usar con hilos.

Monografias.com

Generadores especialmente diseñados para paralelismo
Series de Fibonnaci con diferentes parámetros para cada core:
In = In-r – In-s mod 224, r, s diferentes. O los I iniciales diferentes.
“Dynamic Creator” para Mersenne Twister:
Usando un ID (ej.: número de proceso), tamaño el random, periodo, se generan diferentes semillas para ell Mersenne Twister, que generan streams sin correlación.

Monografias.com

Si quiero 100 generadores sin correlación, llamo a esta función 100 veces,
con ID=0,1,2,…,99, y obtengo 100 seeds.

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter