Date post: | 19-Jul-2015 |
Category: |
Documents |
Upload: | ana-rivera |
View: | 125 times |
Download: | 1 times |
Algoritmo
Paralelo
Equipo:
Ana Rivera 1494080
Melissa Treviño 1497325
Ilse Martínez 1488075
Clemente Villareal 1486246
Objetivo
modelar un problema que puede ser
resuelto en un periodo de tiempo más
corto mediante el uso de un sistema en
paralelo.
Problema En una alberca de pelotas
para niños hay 3 colores de pelotas amarillo, azul y verde cada una con el número 1, 2, y 3 pintado en ellas respectivamente. Se tienen aproximadamente 3000 pelotas y se desea saber el número de pelotas de cada color para determinar que tipo de pelota es la más abundante.
Proceso
Se divide la tarea de generar números
aleatorios del 1 al 3 entre 3 hilos de
ejecución para que después cada hilo
pueda realizar un conteo parcial de los
diferentes tipos de número. Al finalizar la
clase principal sumará los conteos
parciales y se compararán esos conteos
para determinar la pelota que con mayor
frecuencia se presentó.
Pseudocódigo
1. Inicio
2. Declarar variables (
(am=0,az=0,ver=0 , am2=0,az2=0,ver2=0,
am3=0,az3=0,ver3=0 ): enteros
(color, color2, color3): enteros
(i=1): entero
(sumam=0, sumaz=0, sumver=0) : enteros
3. Iniciar hilo1Ciclo for ( Mientras i <= 1000)Valor aleatorio para color [1,3]If (color ==1) -> am++If (color ==2) -> az++If (color ==3) -> ver++
4. Iniciar hilo2Ciclo for ( Mientras i <= 1000)Valor aleatorio para color2 [1,3]If (color2 ==1) -> am2++If (color2 ==2) -> az2++If (color2 ==3) -> ver2++
5. Iniciar hilo3
Ciclo for ( Mientras i < =1000)
Valor aleatorio para color3[1,3]
If (color3 ==1) -> am3++
If (color3 ==2) -> az3++
If (color 3==3) -> ver3++
6. Fin (hilo1, hlo2, hilo3)
7. sumam = am + am2 + am3;
8. sumaz = az + az2 + az3;
9. sumver=ver + ver2 + ver3;
10. Condición (si sumam > sumaz&& sumam>sumver)
11. Se imprime Hay más amarillos
12. Condición (si sumaz > sumam && sumaz>sumver)
13. Se imprime Hay más azules
14. Condición (si sumver> sumaz && sumver>sumam)
15. Se imprime Hay más verdes
16. fin
Introducción
Como se explicó en la actividad anterior,
el problema se pudo resolver mediante la
aplicación de hilos de ejecución en Java.
Los hilos son usados como una
herramienta que nos permite llevar a
cabo la ejecución en paralelo de nuestro
programa ya que por medio de estos
podemos ejecutar las distintas tareas a la
vez.
Tabla comparativa
Cantidad de pelotitas Tiempo Paralelo
Tiempo Secuencial
3000 7 15
30000 17 46
300000 28 131
3000000 69 1068
ConclusionesEfectivamente los resultados obtenidos con el
paralelo fueron más pequeños en comparación del
tiempo de ejecución del programa en secuencial.
La primera vez que probamos nuestro programa en
paralelo obtuvimos resultados contrarios a los
esperados (el tiempo en paralelo era mayor al
secuencial), lo cual pudimos solucionar al modificar
nuestro código ya que en un principio cada hilo
sacaba sus propios números aleatorios pero ahora
hay un arreglo que contiene todos estos y entonces
cada hilo lo único que hace es checar sólo partes
del mismo.