ALGORITMOS Y PROGRAMACIÓN PARALELA. Esquemas de programación paralela

Tamaño: px
Comenzar la demostración a partir de la página:

Download "ALGORITMOS Y PROGRAMACIÓN PARALELA. Esquemas de programación paralela"

Transcripción

1 ALGORITMOS Y PROGRAMACIÓN PARALELA Esquemas de programación paralela REFERENCIAS Almeida, Giménez, Mantas, Vidal: Introducción a la. Cap 5 y 6 Wilkinson, Allen Quinn Esquemas de 1

2 Esquemas de algoritmos paralelos * Paralelismo de datos * Particionado de datos * Algoritmos relajados * Recorrido de un árbol * Computación pipeline * Paralelismo síncrono * Divide y vencerás * Programación dinámica * Branch and Bound * Trabajadores replicados Esquemas de 2

3 Paralelismo de datos * Muchos datos tratados de una forma igual o similar (apropiado para GPU) * Algoritmos numéricos * Datos en arrays o vectores - Procesamiento vectorial - Paralelismo asignando partes distintas del array a distintos procesadores * Memoria Compartida: - Distribución del trabajo - Paralelización automática * Memoria Distribuida: - Distribución de los datos - Técnica de particionado de datos Esquemas de 3

4 Paralelismo de datos Ejemplo: suma de n datos * Esquema: s=0 for i=0 to n-1 s=s+a[i] * Paralelización automática: Con opción de compilación si no hay dependencia de datos * Con pragma: s=0 #Pragma: for paralelo (a compartida de lectura, s compartida de lectura-escritura) for i=0 to n-1 #pragma omp parallel for s=s+a[i] private(i) reduction(+:s) * Distintas posibilidades de asignación de los datos a los procesadores: - Bloques contiguos scheduling(static,tamano) - Cíclico - Incremental Esquemas de 4

5 Paralelismo de datos Ejemplo: suma de n datos * Con paralelismo explícito: #Pragma: llamada concurrente (i=0 to p-1) sumaparcial( &a[(i*n)/p], i ) if nodo=0 s=sumatotal() sumaparcial( a, i ): s=0 for j=0 to n/p-1 s=s+a[j] a[0]=s * Paralelización de sumatotal? sumatotal(): s=0 for j=0 to p-1 step n/p s=s+a[j] return s Si pocos procesadores suele ser preferible que lo haga uno solo Esquemas de 5

6 * Paralelismo implícito: Paralelismo de datos Ejemplo: ordenación por rango #Pragma: for paralelo (a compartida de lectura, r compartida de lectura-escritura) for i=0 to n-1 for j=0 to n-1 if a[i]>a[j] r[i]=r[i]+1 se asignan varios valores de i a cada procesador no hay problemas de coherencia en r Esquemas de 6

7 * Paralelismo explícito: Paralelismo de datos Ejemplo: ordenación por rango #Pragma: llamada concurrente (for i=0 to p-1) calcularrango(a,i) calcularrango(a,i): for j=(i*n)/p to ((i+1)*n)/p-1 for k=0 to n-1 if a[j]>a[k] r[j]=r[j]+1 P0 P1 P2 a n n n r n/p n/p n/p se hace asignación del trabajo entre los procesadores Esquemas de 7

8 Paralelismo de datos Ejemplo: multiplicación de matrices * Paralelismo implícito: #Pragma: for paralelo (a,b compartida de lectura, c compartida de lectura-escritura) for i=0 to n-1 for j=0 to n-1 C A B c[i,j]=0 P0 P0 P0 for k=0 to n-1 c[i,j]=c[i,j]+a[i,k]*b[k,j] P1 = P1 P1 P2 P2 P2 Posiblemente mejor usar bloques contiguos para mejor uso de la caché Esquemas de 8

9 * Paralelismo explícito: Paralelismo de datos Ejemplo: multiplicación de matrices #Pragma: llamada concurrente (for i=0 to p-1) multiplicar(c,a,b,i) multiplicar(c,a,b,i): for j=(i*n)/p to ((i+1)*n)/p-1 for k=0 to n-1 c[j,k]=0 for l=0 to n-1 c[j,k]=c[j,k]+a[j,l]*b[l,k] Esquemas de 9

10 Particionado de datos * Especie de paralelismo de datos en Multicomputadores (Memoria Distribuida) * El espacio de datos se divide en regiones adyacentes: - Se asignan a procesadores distintos - Intercambio de datos entre regiones adyacentes * Para obtener buenas prestaciones: intentar que el volumen de computación entre comunicaciones sea grande (paralelismo de grano grueso) Esquemas de 10

11 Particionado de datos Ejemplo: suma de n datos - Computación: suma de n/p datos en cada procesador. - Comunicación: envío de datos (si no están distribuidos) igual conste que la computación acumulación de los resultados depende de la topología se puede pensar en topología lógica - El programa similar al de Memoria Compartida. n P0 P1 P2 Esquemas de 11

12 Particionado de datos Ejemplo: ordenación por rango En paralelismo de datos se distribuía el trabajo: a P0 P1 P2 r P0 P1 P2 en particionado de datos puede ser: P0 P1 P2 a a a r0 r1 r2 Podría ser que los datos estuvieran inicialmente de otra manera: a0 r0 P0 a1 r1 P1 a2 r2 P2 Pi se encarga de calcular los valores de ri, necesita comparar ai con cada aj p pasos Esquemas de 12

13 Particionado de datos Ejemplo: ordenación por rango En cada Pi, i=0,1,...,p-1 for j=0 to n/p-1 b[j]=a[j] for j=1 to p for k=0 to n/p-1 for l=0 to n/p-1 if a[k]>b[l] r[k]=r[k]+1 enviar a[0]...a[n/p-1] a P(i-1) mod p recibir en b[0],...,b[n/p-1] de P(i+1) mod p Esquemas de 13

14 Algoritmos relajados * Cada procesador computa de manera independiente. - No hay sincronización ni comunicación. * Buenas prestaciones en Memoria Compartida y Distribuida. - A veces a costa de no utilizar el mejor algoritmo paralelo. * Fáciles de programar. * Difícil encontrar algoritmos que se adecúen a este esquema. Esquemas de 14

15 Algoritmos relajados Ejemplo: raíces de una función Dividir el espacio de búsqueda en p subespacios: p0 p1 p2 p3 - Puede haber desbalanceo. - La programación es muy sencilla. Esquemas de 15

16 Algoritmos relajados Ejemplo: ordenación por rango - Memoria Compartida: cada procesador calcula el rango de una parte de los elementos. - Memoria Distribuida: si la distribución es a b r p0 p1 p2 p0 p1 p2 p0 p1 p2 duplicación de datos simplifica la programación buenas prestaciones Esquemas de 16

17 Algoritmos relajados Ejemplo: multiplicación de matrices * En Memoria Compartida: cada procesador calcula un bloque de filas de la matriz resultado. * En Memoria Distribuida con: C A B p0 p0 p0 p1 p2 = p1 p2 Cada procesador calcula las filas de C correspondientes a las filas de A que contiene. No es necesaria sincronización ni comunicación. - Pero: más costoso el envío inicial al repetirse B en cada procesador. p1 p2 Esquemas de 17

18 Recorrido de árboles y grafos * Muchos problemas tienen una representación (física o lógica) en forma de árbol o grafo con raíz, y su resolución consiste en recorrer el árbol o grafo hasta la raíz realizando computaciones. Para resolverlo en paralelo: - Asignar el trabajo de diferentes nodos a distintos procesadores. - Los arcos representan precedencias en la computación, e precedencia implican en algunos casos comunicaciones. xx axx x bx bx+ c cominucación axx+bx +c salida de p0 datos p1 entrada de datos * Grafos de precedencia: Ej: evaluar ax 2 +bx+c Esquemas de 18

19 Recorrido de árboles y grafos * La suma de n números la realizamos con un árbol binario: p0 p1 p2 p3 * Suma prefija: dada una secuencia {x0,x1,...,xn-1} formar si=x0+x1+...+xi, con i=0,1,...,n Esquemas de 19

20 Recorrido de árboles y grafos Ejemplo: suma prefija Para cada Pi, i=0,1,...,n-1 desp=1 for j=0 to log n-1 if i<(n-desp) enviar x a Pi+desp if i>=desp recibir en y de Pi-desp x=x+y desp=desp*2 Esquemas de 20

21 Recorrido de árboles y grafos Ejemplo: clases de equivalencia En una representación de conjuntos por medio de árboles: se trata de encontrar el representante de la clase a la que pertenece cada nodo. Los arcos indican comunicaciones si están en distinto procesador. De cada nodo sale como mucho un arco el patrón de comunicaciones es fijo. Para cada nodo se lee el valor del padre, si el valor leído es igual al que hay en el nodo ese nodo envía un mensaje de fin al nodo con el que se comunica y acaba Esquemas de 21

22 Computación pipeline * Resolver un problema descomponiéndolo en una serie de tareas sucesivas: p0 p1 p2 los datos fluyen por la estructura de los procesadores. * El coste será mayor que el de la tarea más costosa. Puede tener interés cuando: - no hay un único conjunto de datos a tratar sino una serie de conjuntos de datos. - no se necesite que una tarea esté completamente finalizada para empezar la siguiente. * Cada tarea puede tener un peso diferente y ser preferible dedicar distinto número de procesadores a cada tarea: * Tiene estructura lógica de Multicomputador. p 0 p 1 p 2 p 3 p 4 p 5 p 6 Esquemas de 22

23 Computación pipeline Ejemplo: sistema triangular inferior de ecuaciones lineales = a00 x0 b0 a10 x + 0 a11 x = 1 b a x + a x a x = b n 1, 0 0 n 1, n 1 1 n 1, n 1 n 1 n 1 Sustitución progresiva: considerando un procesador por fila, pi calcula xi. x i = i 1 i ij j j= 0 b a x a jj Esquemas de 23

24 Computación pipeline Ejemplo: sistema triangular inferior de ecuaciones lineales #Pragma: llamada concurrente (for i=0 to n-1) resolver(i) resolver(i): suma=0 for j=0 to i-1 P(valor[j]) V(valor[j]) suma=suma+a[i,j]*x[j] x[i]=(b[i]-suma)/a[i,i] V(valor[i]) donde: - valor[i] son semáforos inicializados a 0. - se puede hacer con otras construcciones como llaves o canales. Esquemas de 24

25 Computación pipeline Ejemplo: sistema triangular inferior de ecuaciones lineales - Coste secuencial: 2 n + n - Coste paralelo: - Speed-up: n 8 8 n - Eficiencia: 12.5% * Con procesos de mayor grano: n/p filas por procesador eficiencia del 50%, porque se puede empezar la computación de una tarea sin haberse acabado la de las anteriores. Esquemas de 25

26 Computación pipeline Ejemplo: sistema triangular inferior de ecuaciones lineales * En Memoria Distribuida, sustituir los semáforos por envíos y recepciones: En cada Pi, i=0,1,...,n-1 if i=0 x=b/a[0] enviar x a P1 else if i<>n-1 for j=0 to i-1 recibir x de Pi-1 enviar x a Pi+1 suma=suma+a[j]*x x=(b-suma)/a[i] else for j=0 to n-2 recibir x de Pn-2 suma=suma+a[j]*x x=(b-suma)/a[n-1] Esquemas de 26

27 Divide y vencerás * Idea general: Dividir un problema p en subproblemas p1,p2,...pn Resolver los subproblemas pi obteniendo si Combinar las soluciones parciales s1,s2,...,sn para obtener la solución global de p El éxito del método depende de que se pueda hacer la división y la combinación de forma eficiente. * Paralelismo: La solución de los subproblemas se puede hacer en paralelo la división debe producir subproblemas de coste balanceado la división y la combinación implicarán comunicaciones y sincronización Es el esquema más adecuado para paralelizar, se puede considerar que todos los programas paralelos siguen este esquema. Esquemas de 27

28 Divide y vencerás Ejemplo: ordenación por mezcla * Multiprocesador: #Pragma: llamada concurrente (for i=0 to p-1) ordenarsimple(i,a) (*Ordenar en cada procesador el trozo de array que le corresponde*) proc=p/2 (*Número de procesadores que intervienen en la mezcla*) for j=1 to log p-1 * Secuencial, recursivo: #Pragma: llamada concurrente (for ordenar(p,q,a): i=0 to proc-1) mezclar(i,n/proc,a) proc=proc/2 mezclasimple(0,n,a) mezclar(i,l,a): mezclasimple(i*l,(i+1)*l-1,a) No hay recursión: se divide en función del número de procesadores. if q-p>lim m=(p+q)/2 ordenar(p,m,a) ordenar(m+1,q,a) mezclar(p,m,q,a) else ordenarbasico Esquemas de 28

29 Divide y vencerás Ejemplo: ordenación por mezcla * Multicomputador: Enviar n/p datos a cada procesador En cada Pi, i=0,1,...,p-1 ordenar(0,n/p-1,a) activo=1 desp=2 for j=1 to log p if activo=1 if i mod desp=0 Pi+desp/2 else desp=desp*2 recibir en b (n/p)*(desp/2) datos de mezclar a y b en a Se hace una acumulación de los tramos ordenados sobre cada procesador en el procesador 0, haciendo mezclas conforme se va p0 p1 p2 p3 acumulando: enviar (n/p)*(desp/2) datos de a a Pi-desp/2 activo=0 Esquemas de 29

30 * Multiprocesador: m[0]=0 m[1..p] n-1 m[p/2]=particionar(0,n-1,a) proc=2 for j=1 to log p-1 Divide y vencerás Ejemplo: ordenación rápida * Secuencial: ordenar(p,q,a): if q-p>lim m=particionar(p,q,a) ordenar(p,m,a) ordenar(m+1,q,a) else ordenarbasico #Pragma: llamada concurrente (for i=0 to proc-1) En el particionado se hace la ordenación m[p/(2*proc)+i*p/proc]=particionar(m[i*p/proc],m[(i+1)*p/proc],a) proc=2*proc #Pragma: llamada concurrente (for i=0 to p-1) ordenar(m[i],m[i+1],a) Al particionar se forman grupos de datos ordenados entre sí, utilizando el array m de índices para indicar los límites de las particiones. El trabajo no estará balanceado porque las secuencias de datos no tienen la misma longitud. Esquemas de 30

31 Divide y vencerás Ejemplo: ordenación rápida * Multicomputador: En cada Pi, i=0,1,...,p-1 m1=n-1 ; desp=p ; activo=0 if i mod (desp/2)=0 activo=1 for j=1 to log p if activo=1 if i mod desp=0 m=particionar(0,m1,a) else enviar m1-m+1 y a[m+1],...,a[m1] a Pi+desp/2 m1=m recibir en l y a de Pi-desp/2 m1=l-1 m=particionar(0,m1,a) enviar m1-m+1 y a[m+1],...,a[m1] a Pi+desp/2 m1=m desp=desp/2 if i mod (desp/2)=0 activo=1 ordenar(a) y acumular sobre P0 Suponiendo que tenemos los datos en el procesador 0 se irán haciendo y enviando particiones, de manera que en cada paso se duplica el número de procesadores implicados. Hay desbalanceo y mensajes de distinta longitud. Esquemas de 31

32 Programación dinámica * Para resolver problemas de optimización. Obteniendo soluciones de subproblemas de menor a mayor tamaño hasta llegar al tamaño deseado. Las soluciones parciales se pueden guardar en un array construyendo el array de la primera fila hasta la última, usándose para cada fila los valores de las anteriores: problema a resolve Esquemas de 32

33 Programación dinámica * En Memoria Compartida: En cada fila intervienen los procesadores obteniendo cada uno valores de distintos tamaños, basándose en la línea anterior para leer no hay problema de coherencia, pero se necesita sincronización entre los pasos sucesivos (uno por línea). * En Memoria Distribuida: Un procesador puede necesitar datos almacenados en otro: indicados por las flechas que cruzan la línea gruesa. Esquemas de 33

34 Programación dinámica Ejemplo: problema de la mochila 0/1 Mochila de capacidad C objetos numerados 1,2,...,n cada objeto tiene un peso pi y un beneficio bi. Maximizar xi bi i= 1 n sujeto a xi=0 o 1, y i= 1 Se obtiene la fórmula: n xi pi C M( i, X) = max{m ( i 1, X), M( i 1, X p ) + b Ejemplo: C=9 p=(3,5,2) b=(4,6,5) i i} Esquemas de 34

35 Programación dinámica Ejemplo: problema de la mochila 0/1 * Multiprocesador: for i=1 to n-1 #Pragma: llamada concurrente (for j=1 to p) calcular(i,j,m) M[n,C]=max{M[n-1,C],M[n-1,C-p[n]]+b[n]} calcular(i,j,m): for k=(j-1)*c/p+1 to j*c/p M[i,k]=max{M[i-1,k],M[i-1,k-p[i]]+b[i]} Esquemas de 35

36 Programación dinámica Ejemplo: problema de la mochila 0/1 * Multicomputador: Suponemos una columna por procesador. Para cada Pi, i=1,...,c if p[1] i M=b[1] (*Se rellena la primera fila*) else M=0 if i+p[2] C (*Se comprueba qué procesadores necesitan datos*) enviar M a Pi+p[2] for j=2 to n-1 if i-p[j] 1 (*Se comprueba si recibe dato de la fila anterior*) recibir en N de Pi-p[j] else N=0 M=max{M,N+b[j]} if i+p[j+1] C enviar M a Pi+p[j+1] if i-p[n] 1 else N=0 M=max{M,N+b[j]} recibir en N de Pi-p[n] Esquemas de 36

37 Paralelismo síncrono * Iteraciones sucesivas: - cada procesador realiza el mismo trabajo sobre una porción distinta de los datos. - datos de una iteración se utilizan en la siguiente. - al final de cada iteración sincronización (local o global). * Prestaciones afectadas por la sincronización: - en Memoria Compartida buenas prestaciones. - en Memoria Distribuida bajan las prestaciones pues hay comunicación. Esquemas de 37

38 Paralelismo síncrono Ejemplo: solución de ecuación diferencial Relajación de Jacobi para resolver una ecuación de Laplace: 2 2 δ v + δ v = δ x δ y Ecuación de diferencias: V ( i, j) = V ( i 1, j) + V ( i + 1, j) + V ( i, j 1) + V ( i, j + 1) valores fijos en la frontera - Converge gradualmente a una solución cada vez más precisa. - Para obtener una solución más precisa aumentar el número de puntos del array. - Una iteración tras otra secuencialmente, pero dentro de cada iteración paralelismo. Esquemas de 38

39 Paralelismo síncrono Ejemplo: solución de ecuación diferencial * En Multiprocesador: b a for i=1 to numiter/2 #Pragma: for paralelo (a compartida de lectura, b compartida de escritura) for j=1 to n for k=1 to n b[j,k]=(a[j-1,k]+a[j+1,k]+a[j,k-1]+a[j,k+1])/4 #Pragma: for paralelo (a compartida de escritura, b compartida de lectura) (*lo mismo del pragma anterior pero de b en a*) - Sincronización por acabar el pragma. - En dos partes para evitar copias. - Asigna filas completas a cada procesador: topología lógica de anillo. Esquemas de 39

40 Paralelismo síncrono Ejemplo: solución de ecuación diferencial * Puede ser más interesante crear un proceso por cada procesador: b a #Pragma: llamada concurrente (for i=0 to p-1) iterar(a,b,i) iterar(a,b,i): for j=1 to numiter/2 for k=i*n/p+1 to (i+1)*n/p for l=1 to n b[k,l]=(a[k-1,l]+a[k+1,l]+a[k,l- 1]+a[k,l+1])/4 BARRERA (*lo mismo pero de b en a*) BARRERA En Memoria Distribuida a y b son locales: La barrera implica sincronización y comunicación. Esquemas de 40

41 Paralelismo síncrono Barrera lineal * Normalmente las barreras se proporcionan con el sistema. * Se pueden implementar de distintas maneras. * Implementación por conteo de variables: Barrera: P(llegada) cont=cont+1 if cont<n V(llegada) else Coste lineal. V(salida) P(salida) cont=cont-1 if cont>0 V(salida) else V(llegada) En Memoria Distribuida habría que acceder a una variable global. Esquemas de 41

42 Paralelismo síncrono Barrera en árbol * La contención se puede reducir descentralizando: Sincronización por subgrupos y después centralizar. Ej: suma de números, donde se acumulan los resultados parciales para obtener el total. * Barrera en árbol: Esquemas de 42

43 Paralelismo síncrono Barrera en árbol barrera(i): (*i=0,...,p-1; número de proceso*) des=1 des=p act=1 for j=1 to log p for j=1 to log p des=des/2 if act=1 if i mod des=0 des=des*2 act=1 if i mod des>0 activo=0 if act=1 enviar a Pi-des/2 if i mod (des*2)=0 else enviar a Pi+des recibir de Pi+des/2 else recibir de Pi-des Coste log p, pero más complejo que el lineal. Esquemas de 43

44 Paralelismo síncrono Ejemplo: relajación de Jacobi. Sincronización local * El paso de una iteración a la siguiente puede no necesitar de sincronización global: A B para calcular b[i,:] basta con conocer a[i-1,:], a[i,:], a[i+1,:] barreralocal(i): if i>1 if i<n if i>1 superior[i-1]=1 inferior[i+1]=1 basura=superior[i] basura=inferior[i] superior e inferior son canales de 0 a n+1 Esquemas de 44

45 Paralelismo síncrono Ejemplo: relajación de Jacobi. Sincronización local * En Memoria Distribuida: barreralocal(i): if i>0 enviar a Pi-1 if i<p-1 enviar a Pi+1 if i>0 recibir de Pi-1 if i<p-1 recibir de Pi+1 Además habría que enviar y recibir datos. - Coste de las transferencias 4α+4nβ - Si se asignan bloques cuadrados 8α + 8 n β p más escalable Esquemas de 45

46 Paralelismo síncrono Ejemplo: relajación de Jacobi. * Comparación de las distintas técnicas de sincronización: local árbol lineal * Test de convergencia: - El número de iteraciones puede no ser fijo, puede depender de la norma a-b calcular la norma distribuida, acumular y difundir el resultado. - No es costoso en comparación con el coste total. Esquemas de 46

47 Branch and Bound * En problemas de búsqueda en un espacio de soluciones. El espacio de búsqueda es un árbol donde cada nodo representa un subespacio de búsqueda. Obtener solución óptima explorando la menor cantidad posible de nodos. * Características: - expansión: el trabajo en un nodo consiste en generar todos los hijos obteniendo por cada nodo unas cotas inferior y superior del beneficio alcanzable por una solución a partir de ese nodo, y una estimación del beneficio obtenible. - selección: de todos los nodos vivos (de los que no se han generado los hijos) se elige uno según algún criterio: primero generado, el de mayor beneficio estimado,... - poda: para evitar generar nodos innecesarios, cuando la cota inferior de un nodo es mayor que la cota superior de otro, éste último se puede eliminar * Es proceso secuencial: se necesita información global para la selección y la poda. Esquemas de 47

48 Branch and Bound Posibilidades de paralelismo * Búsqueda paralela usando diferentes algoritmos en diferentes procesadores: diferencias en el cálculo de las cotas, de la estimación del beneficio, y del criterio de selección. -Se repiten nodos pero hay pocas comunicaciones. * Expansión en paralelo de cada nodo: - Se necesita que la expansión de cada nodo sea costosa: gran número de hijos, alto coste de los cálculos de cada hijo. - Gestión de la lista de nodos vivos centralizada muchas comunicaciones. Esquemas de 48

49 Branch and Bound Posibilidades de paralelismo * Evaluación paralela de subproblemas: - De la lista de nodos vivos se asignan diferentes nodos a cada procesador. - Posibilidades en la distribución de los nodos: 1. Estática: pocas comunicaciones, se pueden difundir las cotas para podar. con asignación balanceada de nodos, con asignación ponderada de nodos. 2. Asignación dinámica con bolsa de tareas: más comunicaciones. con actualización inmediata de la bolsa de tareas, con actualización pospuesta. Esquemas de 49

50 Branch and Bound Ejemplo * Secuencial: * Paralelo sin comunicar cotas: * Paralelo comunicando cotas: 1 1 p p 1 p0 2 3 p Esquemas de 50

51 Trabajadores replicados * Se mantiene una bolsa central de tareas. * Trabajadores: - Toman tareas de la bolsa. - Generan otras nuevas. * Acaba la computación cuando la bolsa está vacía y todos los trabajadores han acabado. * Útil en problemas combinatorios: búsqueda en árbol. * Asignación dinámica de trabajos para balancear la computación. Esquemas de 51

52 Trabajadores replicados * Bolsa de tareas: conjunto de descriptores de tareas, cada descriptor especifica una computación. * En Multiprocesadores: una estructura centralizada de la que los trabajadores toman trabajos y posiblemente depositan otros nuevos * En Multicomputadores: la estructura en la memoria de uno o varios procesadores, petición y depósito de tareas conllevan comunicación. * Aspectos a tener en cuenta: - Contención: Por ser la bolsa de tareas centralizada. Cuantos más procesadores mayor contención. - Balanceo: Si se descentraliza la bolsa: mayor desbalanceo y menor contención compromiso entre contención y balanceo - Terminación: El test de terminación es global sincronización. Esquemas de 52

53 Trabajadores replicados Ejemplo: algoritmo del camino más corto En un grafo dirigido, encontrar el camino más corto de un vértice a los demás. Estructuras: distancia cola={1} distancia[1]=0 while no vacía cola endwhile vertices: 1..n x=el de menor distancia en la cola for i=1 to n dist=distancia[x]+pesos[x,i] if dist<distancia[i] distancia[i]=dist if i no está en la cola incluir i en la cola pesos: array[1..n,1..n] distancia: array[1..n] cola: conjunto de vértices para los que se ha actualizado la distancia mínima. Esquemas de 53

54 Ejemplo: Trabajadores replicados Ejemplo: algoritmo del camino más corto inicialmente: cola=1 distancias: 0,,,, paso1: cola=2,3 distancias: 0,4,8,, paso2: cola=4,3 distancias: 0,4,7,5, paso3: cola=3,5 distancias: 0,4,7,5,15 paso4: cola=5 distancias: 0,4,7,5,12 paso5: cola= distancias: 0,4,7,5,12 Esquemas de 54

55 Trabajadores replicados Ejemplo: algoritmo del camino más corto. Memoria Compartida Programa: distancia enconjunto false distancia[1]=0 enconjunto[1]=true #Pragma: llamada concurrente (for i=1 to p) trabajador(i) trabajador(i): tomar(i,v) while v<>-1 (*-1 indica que ha acabado*) bloquear enconjunto[v] enconjunto[v]=false desbloquear enconjunto[v] for j=1 to n if pesos[v,j]< bloquear distancia[v] dist=distancia[v]+pesos[v,j] desbloquear distancia[v] bloquear distancia[j] if dist<distancia[j] distancia[j]=dist desbloquear distancia[j] bloquear enconjunto[j] if not enconjunto[j] enconjunto[j]=true desbloquear enconjunto[j] poner(i,j) else desbloquear enconjunto[j] else desbloquear distancia[j] endwhile Esquemas de 55

56 Trabajadores replicados Ejemplo: algoritmo del camino más corto. Memoria Compartida Contadores: trabajadores=p (*trabajadores activos*) tareas=1 (*tareas por hacer*) tomar(i,j): bloquear trabajadores cont=trabajadores-1 trabajadores=cont desbloquear trabajadores if cont=0 bloquear tareas if tareas=0 desbloquear tareas j=-1 else desbloquear tareas else bloquear cola j=cabeza de cola desbloquear cola bloquear cola j=cabeza de cola desbloquear cola poner(i,j): bloquear tareas tareas=tareas+1 desbloquear tareas bloquear cola insertar j en cola desbloquear cola El bloqueo con espera activa Esquemas de 56

Divide y Vencerás Programación Dinámica

Divide y Vencerás Programación Dinámica Metodología de la Programación Paralela Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Divide y Vencerás Programación Dinámica Domingo Giménez (Universidad de Murcia) 1 /

Más detalles

Paralelismo Relajado Paralelismo Síncrono

Paralelismo Relajado Paralelismo Síncrono Metodología de la Programación Paralela Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Paralelismo Relajado Paralelismo Síncrono Domingo Giménez (Universidad de Murcia) 1

Más detalles

Algoritmos en Árbol y Grafo Computación Pipeline

Algoritmos en Árbol y Grafo Computación Pipeline Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Algoritmos en Árbol y Grafo Computación Pipeline Domingo Giménez (Universidad

Más detalles

Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos

Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos Domingo Giménez (Universidad de Murcia)

Más detalles

Paralelización de problemas de recorrido de árboles Trabajadores replicados y esquema maestro esclavo

Paralelización de problemas de recorrido de árboles Trabajadores replicados y esquema maestro esclavo Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Paralelización de problemas de recorrido de árboles Trabajadores replicados

Más detalles

Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos

Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos Metodología de la Programación Paralela Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos Domingo Giménez (Universidad de Murcia) 1 / 31

Más detalles

Diseño de algoritmos paralelos

Diseño de algoritmos paralelos Diseño de algoritmos paralelos Curso 2011-2012 Esquema del capítulo Visión general de algunos algoritmos serie. Algoritmo paralelo vs. Formulación paralela Elementos de un Algoritmo paralelo Métodos de

Más detalles

Relación de Ejercicios. Programación Paralela 4º de Grado en Ingeniería Informática.

Relación de Ejercicios. Programación Paralela 4º de Grado en Ingeniería Informática. 1. Por qué el modelo de programación que se sigue al programar con MPI es independiente de la asignación? 2. Describir gráficamente una solución eficiente para realizar una operación de reducción global

Más detalles

Granularidad y latencia

Granularidad y latencia Niveles de paralelismo y latencias de comunicación Niveles de paralelismo. Granularidad o tamaño de grano. Latencia de comunicación. Particionado de los programas. Empaquetado de granos. Planificación

Más detalles

UNIDAD II Metodología de programación paralela. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM

UNIDAD II Metodología de programación paralela. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM UNIDAD II Metodología de programación paralela UNIDAD II: Metodología de programación paralela Metodología de programación paralela Algunos conceptos que nos ayudarán a entender mejor el tema. Modelos

Más detalles

Algoritmos paralelos para la Multiplicación de Matrices

Algoritmos paralelos para la Multiplicación de Matrices Introducción Paralelizar onclusiones Trabajo ibliografía lgoritmos paralelos para la Multiplicación de Matrices Universidad de Murcia - UM 18 de diciembre de 2008 Introducción Paralelizar onclusiones Trabajo

Más detalles

Multiplicación de matrices dispersas

Multiplicación de matrices dispersas Multiplicación de matrices dispersas Alumno: Irene Sánchez Linares Índice Descripción del problema Representación Algoritmo secuencial Esquemas algorítmicos Elección del esquema OpenMP MPI Estudio experimental

Más detalles

a) Para calcular los órdenes sólo es necesario contar el número de veces que se pasa por el bucle más interno. El coste sería n

a) Para calcular los órdenes sólo es necesario contar el número de veces que se pasa por el bucle más interno. El coste sería n EXAMEN DE ALGORÍTMICA. Segundo Ingeniería Técnica en Informática de Gestión y de Sistemas. Diciembre 2003 1) (3 puntos) El siguiente programa obtiene la subcadena más larga de números iguales dentro de

Más detalles

Capítulo 6: EVALUACIÓN Y COMPARACIÓN DE MÉTODOS

Capítulo 6: EVALUACIÓN Y COMPARACIÓN DE MÉTODOS Capítulo 6: EVALUACIÓN Y COMPARACIÓN DE MÉTODOS En este capítulo, se realiza la evaluación y comparación de los métodos de paralelización de recurrencias descritos y propuestos en este trabajo. Los resultados

Más detalles

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos 1! 1. Algoritmos recursivos " 1.1 Algoritmos recursivos. Recursión simple " 1.2 Algoritmos con vuelta atrás y ejemplos! 2. Complejidad de

Más detalles

Parte de Algoritmos de la asignatura de Programación Master de Bioinformática. Divide y vencerás

Parte de Algoritmos de la asignatura de Programación Master de Bioinformática. Divide y vencerás Parte de Algoritmos de la asignatura de Programación Master de Bioinformática Divide y vencerás Web asignatura: http://dis.um.es/~domingo/algbio.html E-mail profesor: domingo@um.es Transparencias preparadas

Más detalles

Algoritmos mas complejos. Algoritmos y Estructuras de Datos II (Programación I) Mgter. Vallejos, Oscar A.

Algoritmos mas complejos. Algoritmos y Estructuras de Datos II (Programación I) Mgter. Vallejos, Oscar A. Algoritmos mas complejos Divide y Vencerás Técnica empleada en cosas dispares. También en el diseño de algoritmos. (ordenación: Quicksort; Mergesort). Consiste básicamente en dividir un problema original

Más detalles

Teoría de redes y optimización en redes

Teoría de redes y optimización en redes Teoría de redes y optimización en redes Pedro Sánchez Martín Contenidos Definiciones básicas Árbol generador mínimo de expansión Camino mínimo Algoritmo Dkstra Algoritmo Bellman-Ford Fluo máximo Fluo de

Más detalles

Diseño de Algoritmos Paralelos Prof. Gilberto Díaz

Diseño de Algoritmos Paralelos Prof. Gilberto Díaz Universisdad de Los Andes Facultad de Ingeniería Escuela de Sistemas Diseño de Algoritmos Paralelos Prof. Gilberto Díaz gilberto@ula.ve Departamento de Computación, Escuela de Sistemas, Facultad de Ingeniería

Más detalles

W_ILU_GMRES. UNA ESTRATEGIA PARA SISTEMAS DE ECUACIONES LINEALES DENSOS

W_ILU_GMRES. UNA ESTRATEGIA PARA SISTEMAS DE ECUACIONES LINEALES DENSOS W_ILU_GMRES. UNA ESTRATEGIA PARA SISTEMAS DE ECUACIONES LINEALES DENSOS Angela León, Marta Lourdes Baguer, Yisleidy Linares, Universidad de La Habana Lilian Villarín, Universidad de Heidelberg, Alemania

Más detalles

Modelado y autooptimización en esquemas paralelos de backtracking

Modelado y autooptimización en esquemas paralelos de backtracking Modelado y autooptimización en esquemas paralelos de backtracking Manuel Quesada y Domingo Giménez Universidad de Murcia XX Jornadas de Paralelismo A Coruña, 18 Sept 2009 Índice 1 Introducción 2 Técnica

Más detalles

Multiplicación de matrices simétricas

Multiplicación de matrices simétricas Multiplicación de matrices simétricas La traspuesta de una matriz A n n es definida como una matriz A T n n tal que A T [i, j] =A[j, i] paracadai, j 2{1,...,n} Además, una matriz A es simétrica si A =

Más detalles

Estructura de Datos. Temario Unidad VI. Árboles Árboles Binarios

Estructura de Datos. Temario Unidad VI. Árboles Árboles Binarios Estructura de Datos Árboles Árboles Binarios Temario Unidad VI 6.1 Definición y operaciones 6.2 Implementación 6.3 Recorrido en Árboles Binarios 6.4 Árboles AVL y su implementación 6.5 Árboles n-arios

Más detalles

Análisis de algoritmos paralelos

Análisis de algoritmos paralelos METODOLOGÍA DE LA PROGRAMACIÓN PARALELA Análisis de algoritmos paralelos REFERENCIAS La mayoría de los libros de la bibliografía, en particular: Foster, cap 3 Kumar, Grama, Gupta, Karypis, cap 4 Wilkinson,

Más detalles

Práctica N o 8 Desigualdades Válidas - Algoritmos de Planos de Corte - Algoritmos Branch & Cut

Práctica N o 8 Desigualdades Válidas - Algoritmos de Planos de Corte - Algoritmos Branch & Cut Práctica N o 8 Desigualdades Válidas - Algoritmos de Planos de Corte - Algoritmos Branch & Cut 8.1 Para cada uno de los siguientes conjuntos, encontrar una desigualdad válida que agregada a la formulación

Más detalles

3. DISEÑO DE ALGORITMOS PARALELOS Y DISTRIBUIDOS

3. DISEÑO DE ALGORITMOS PARALELOS Y DISTRIBUIDOS 3. DISEÑO DE ALGORITMOS PARALELOS Y DISTRIBUIDOS Uno de los ingredientes más importantes para el procesamiento paralelo son sin duda los algoritmos paralelos que tienen un considerable interés en su desarrollo.

Más detalles

Paralelismo en la ordenación por mezcla

Paralelismo en la ordenación por mezcla Paralelismo en la ordenación por mezcla Índice MergeSort secuencial. MergeSort paralelo : descomposición en tareas. Descomposición funcional. Descomposición recursiva. Descomposición de dominio. Grafo

Más detalles

1. Diseñe algoritmos que permitan resolver eficientemente el problema de la mochila 0/1 para los siguientes casos:

1. Diseñe algoritmos que permitan resolver eficientemente el problema de la mochila 0/1 para los siguientes casos: PROGRAMACIÓN DINÁMICA RELACIÓN DE EJERCICIOS Y PROBLEMAS 1. Diseñe algoritmos que permitan resolver eficientemente el problema de la mochila /1 para los siguientes casos: a. Mochila de capacidad W=15:

Más detalles

PROGRAMACIÓN ESTRUCTURADA

PROGRAMACIÓN ESTRUCTURADA FACULTAD DE INGENIERÍA Universidad Nacional de Jujuy PROGRAMACIÓN ESTRUCTURADA Trabajo Práctico Nº 10 Tema: Arreglos. Actualización y Búsqueda Apellido y Nombre: Fecha: / / Conceptos Teóricos RESPONDA

Más detalles

Paralelismo _Arquitectura de Computadoras IS603

Paralelismo _Arquitectura de Computadoras IS603 Paralelismo _Arquitectura de Computadoras IS603 INTRODUCCION El objetivo de esta investigación, es conceptualizar las diferentes tipos de paralelismo referente al área de Arquitectura de Computadoras,

Más detalles

Teoría de grafos y optimización en redes

Teoría de grafos y optimización en redes Teoría de grafos y optimización en redes José María Ferrer Caja Universidad Pontificia Comillas Definiciones básicas Grafo: Conjunto de nodos (o vértices) unidos por aristas G = (V,E) Ejemplo V = {,,,,

Más detalles

x x 2 s s= (x 1, x 2 ) ... ? (sin explorar) M= (x 1, x 2, x 3, x 4,..., x n ) valor(m) =?

x x 2 s s= (x 1, x 2 ) ... ? (sin explorar) M= (x 1, x 2, x 3, x 4,..., x n ) valor(m) =? Exploración de grafos Grafos Recorridos sobre grafos Búsqueda primero en profundidad Búsqueda primero en anchura Backtracking ( vuelta atrás ) Descripción general Espacio de soluciones Implementación Ejemplos

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 02: Complejidad de los algoritmos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Algoritmo Algoritmo vs. Proceso Computacional

Más detalles

Complejidad de algoritmos recursivos

Complejidad de algoritmos recursivos Tema 3. Complejidad de algoritmos recursivos 1. INTRODUCCIÓN... 1 CLASIFICACIÓN DE FUNCIONES RECURSIVAS... 1 DISEÑO DE FUNCIONES RECURSIVAS... 2 2. VENTAJAS E INCONVENIENTES DE LA RECURSIVIDAD... 4 3.

Más detalles

Algoritmos sobre Listas

Algoritmos sobre Listas TEMA 6 Algoritmos sobre Listas V1.1 Manuel Pereira González Agenda Introducción Algoritmos de Búsqueda Búsqueda Secuencial Búsqueda Binaria Análisis de Eficiencia Algoritmos de Inserción Algoritmos de

Más detalles

TEMA 1. INTRODUCCIÓN A LA PROGR. DISTRIBUIDA Y PARALELA

TEMA 1. INTRODUCCIÓN A LA PROGR. DISTRIBUIDA Y PARALELA Relación de Ejercicios Programación Distribuida y Paralela. 4 o de Ingeniería Superior en Informática. Departamento de Lenguajes y Sistemas Informáticos TEMA 1. INTRODUCCIÓN A LA PROGR. DISTRIBUIDA Y PARALELA

Más detalles

Análisis de Algoritmos CB-102

Análisis de Algoritmos CB-102 Análisis de Algoritmos CB-102 Algoritmos en Paralelo Centro de Manufactura / Centro de Sistema Inteligentes ITESM Algoritmos en Paralelo TC-4001 - p. 1/22 Hasta este punto, nuestro modelo de computación

Más detalles

Tema: Programación Dinámica.

Tema: Programación Dinámica. Programación IV. Guía No. 12 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Programación Dinámica. Objetivos Específicos Definir el concepto de programación dinámica. Interpretar

Más detalles

Ejemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013

Ejemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013 Técnicas de diseño de algoritmos Algoritmos y Estructuras de Datos III Segundo cuatrimestre 2013 Técnicas de diseño de algoritmos Algoritmos golosos Backtracking (búsqueda con retroceso) Divide and conquer

Más detalles

Conceptos. Generales ALGORITMOS

Conceptos. Generales ALGORITMOS Conceptos 1 Generales ALGORITMOS Que es un Algoritmo? 2 Es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos

Más detalles

Algoritmos Voraces. Diseño y Análisis de Algoritmos

Algoritmos Voraces. Diseño y Análisis de Algoritmos Algoritmos Voraces Diseño y Análisis de Algoritmos Contenidos Contenidos 1 Introducción 2 Ejemplos básicos 3 Cambio de monedas 4 Problema de la mochila 5 Problemas de planificación de tareas 6 Patrones

Más detalles

Algoritmos y Estructuras de Datos Curso 06/07. Ejercicios

Algoritmos y Estructuras de Datos Curso 06/07. Ejercicios 6.1.(Clase) Un programa que utiliza la técnica divide y vencerás, divide un problema de tamaño n en a subproblemas de tamaño n/b. El tiempo g(n) de la resolución directa (caso base) se considerará constante.

Más detalles

Unidad 4. Arreglos y Cadenas

Unidad 4. Arreglos y Cadenas Unidad 4. Arreglos y Cadenas Definición de Arreglo: Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un identificador común (nombre). La propiedad indexado significa

Más detalles

Archivos Indice. Indexación y. Asociación. Conceptos Básicos Indices Ordenados Arboles. Asociación. Docente: Albert A.

Archivos Indice. Indexación y. Asociación. Conceptos Básicos Indices Ordenados Arboles. Asociación. Docente: Albert A. Docente: Albert A. Osiris Sofía 1º Cuatrimestre 2002 Conceptos Básicos Indices Ordenados Arboles Asociación Indexación y Asociación Archivos Indice 1 2 3 1 Archivos Indice Ordenados Asociativos Primario

Más detalles

Modelos de Programación Paralela

Modelos de Programación Paralela Modelos de Programación Paralela Modelos de Programación para Multiprocesadores El Modelo de Variables Compartidas Expresión del Paralelismo en el Modelo de Variables Compartidas Primitivas de Sincronización

Más detalles

Programa de teoría. Algoritmos y Estructuras de Datos II. 3. Algoritmos voraces. 1. Análisis de algoritmos 2. Divide y vencerás

Programa de teoría. Algoritmos y Estructuras de Datos II. 3. Algoritmos voraces. 1. Análisis de algoritmos 2. Divide y vencerás Programa de teoría Algoritmos y Estructuras de Datos II 1. Análisis de algoritmos 2. Divide y vencerás 3. Algoritmos voraces 4. Programación dinámica 5. Backtracking 6. Ramificación y poda A.E.D. II 1

Más detalles

PARTE II: ALGORÍTMICA

PARTE II: ALGORÍTMICA Programa de teoría Parte I. Estructuras de Datos.. Abstracciones y especificaciones.. Conjuntos y diccionarios.. Representación de conjuntos mediante árboles. 4. Grafos. Parte II. Algorítmica.. Análisis

Más detalles

PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela

PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela PROGRAMACIÓN PARALELA Modelos de programación paralela Paradigmas de programación paralela Tipos de paralelismo Paso de mensajes Paralelismo de datos Memoria compartida Paradigmas de programación paralela

Más detalles

Métodos de Ordenamiento. Unidad VI: Estructura de datos

Métodos de Ordenamiento. Unidad VI: Estructura de datos Métodos de Ordenamiento Unidad VI: Estructura de datos Concepto de ordenación La ordenación de los datos consiste en disponer o clasificar un conjunto de datos (o una estructura) en algún determinado orden

Más detalles

Estructura de datos y Algoritmos. Tema III Clasificación en memoria secundaria

Estructura de datos y Algoritmos. Tema III Clasificación en memoria secundaria Estructura de datos y Algoritmos Tema III Clasificación en memoria secundaria 3.1. Clasificación externa basada en mezcla 3.1.1. Mezcla directa. 3.1.2. Mezcla natural. 3.1.3. Mezcla balanceada múltiple.

Más detalles

Francisco J. Hernández López

Francisco J. Hernández López Francisco J. Hernández López fcoj23@cimat.mx Estructura de datos no lineales donde cada componente o nodo puede tener uno o más predecesores (a diferencia de los árboles) y sucesores Un grafo esta formado

Más detalles

TIPOS ABSTRACTOS DE DATOS EN HASKELL

TIPOS ABSTRACTOS DE DATOS EN HASKELL TIPOS ABSTRACTOS DE DATOS EN HASKELL ÍNDICE GENERAL 1. Introducción a Haskell 2. Tipos abstractos de datos en Haskell 3. TAD Grafo 4. TAD Montículos 5. Bibliografía INTRODUCCIÓN A HASKELL 1. Introducción

Más detalles

Diseño de algoritmos

Diseño de algoritmos Diseño de algoritmos Algoritmos de Vuelta Atrás Jesús Bermúdez de Andrés Universidad del País Vasco/Euskal Herriko Unibertsitatea (UPV/EHU) Curso 2008-09 1 Algoritmos de vuelta atrás El coloreado de mapas

Más detalles

Casos especiales de la P. L.

Casos especiales de la P. L. Casos especiales de la P. L. Las redes: Las redes están presentes en diferentes lugares en la vida real: redes de transporte, flujo eléctrico y comunicaciones, por ejemplo. Las redes: También son ampliamente

Más detalles

Programación Dinámica

Programación Dinámica Programación Dinámica La técnica de programación dinámica se aplica en general a problemas de optimización. l igual que "dividir y conquistar", el problema es dividido en subproblemas de tamaños menores

Más detalles

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. Indíce Algoritmo Elementos de un algoritmo: Variables, Constantes, Expresiones Datos: Definición y

Más detalles

Tema 9. Recursividad

Tema 9. Recursividad Tema 9. Recursividad http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz@icc.uji.es Estructuras de datos y de la información Universitat

Más detalles

A) PREORDEN B) INORDEN C) POSTORDEN D) NIVELES

A) PREORDEN B) INORDEN C) POSTORDEN D) NIVELES Capitulo 5. Arboles 1. Al recorrer el siguiente árbol en se visitan más nodos para llegar al número 38. Justifique su respuesta mostrando cada uno de los recorridos. Tipo de Recorrido Recorrido A) PREORDEN

Más detalles

Porque usar Arreglos?

Porque usar Arreglos? Arreglos Porque usar Arreglos? Se tienen las calificaciones de 100 alumnos, como sacar cuantos alumnos tienen una calificación superior al promedio? Doble lectura: Un ciclo para leer y acumular las calificaciones,

Más detalles

Procesamiento Paralelo

Procesamiento Paralelo Procesamiento Paralelo Principios de diseño de algoritmos paralelos Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de Abril 461, Bahía Blanca, Argentina jiparraguirre@frbb.utn.edu.ar

Más detalles

ANÁLISIS Y DISEÑO DE ALGORITMOS

ANÁLISIS Y DISEÑO DE ALGORITMOS ANÁLISIS Y DISEÑO DE ALGORITMOS CURSO 26/27 BOLETÍN DE PROBLEMAS: ALGORITMOS VORACES Ejercicio 1 Sean n personas, representadas por los Enteros : 1..n, puestas en círculo, y m, un Entero no negativo cualquiera,

Más detalles

Tema: Programación Dinámica.

Tema: Programación Dinámica. Programación IV. Guía 11 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Programación Dinámica. Objetivos Específicos Definir el concepto de programación dinámica. Interpretar

Más detalles

Estructura de datos y de la información Boletín de problemas - Tema 10

Estructura de datos y de la información Boletín de problemas - Tema 10 Estructura de datos y de la información Boletín de problemas - Tema 10 1. En el caso de que sea posible, dar un ejemplo de los siguientes puntos. Si no, explicar por qué no lo es. Considerar un valor genérico

Más detalles

Francisco J. Hernández López

Francisco J. Hernández López Francisco J. Hernández López fcoj23@cimat.mx Acomodar algo en alguna secuencia especifica Objetos ordenados: Directorio telefónicos Registro de pacientes Libros en una biblioteca Cosas del hogar Se puede

Más detalles

Búsqueda en espacio de estados

Búsqueda en espacio de estados Búsqueda en espacio de estados Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Inteligencia Artificial CCIA, US Búsqueda en espacio de estados IA 1 / 35 Metodología

Más detalles

Algoritmos y Complejidad

Algoritmos y Complejidad Algoritmos y Complejidad Algoritmos greedy Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Primer Cuatrimestre 2017 Algoritmos greedy Generalidades Problema

Más detalles

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1 Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos

Más detalles

INDICE. Prólogo de la Segunda Edición

INDICE. Prólogo de la Segunda Edición INDICE Prólogo de la Segunda Edición XIII Capitulo 1. Algoritmos y Programas 1 1.1. Los sistemas de procesamiento de la información 2 1.2. Concepto de algoritmo 4 1.2.1. Características de los algoritmos

Más detalles

Universidad Nacional Autónoma de México Instituto de Geofísica

Universidad Nacional Autónoma de México Instituto de Geofísica Universidad Nacional Autónoma de México Instituto de Geofísica Aplicación del Cómputo Paralelo a la Modelación de Sistemas Continuos en Ciencias e Ingeniería Presentan: Antonio Carrillo Ledesma Ismael

Más detalles

Grafos. Suponiendo que e = [u, v]. Entonces los nodos u y v se llaman extremos de e y u y v se dice que son nodos adyacentes o vecinos.

Grafos. Suponiendo que e = [u, v]. Entonces los nodos u y v se llaman extremos de e y u y v se dice que son nodos adyacentes o vecinos. Grafos Los grafos son estructuras que constan de vértices o nodos y de aristas o arcos que conectan los vértices entre sí. Un grafo G consiste en dos cosas: 1. Un conjunto V de elementos llamados nodos

Más detalles

BUSQUEDA SECUENCIAL Y DIRECTA, MARCELA MARQUEZ REBECA NAVARRO FONSECA GUADALUPE RUIZ ANGULO JONATHAN ALEXIS TOPETE ESTRUCTURA Y OPERACIONES

BUSQUEDA SECUENCIAL Y DIRECTA, MARCELA MARQUEZ REBECA NAVARRO FONSECA GUADALUPE RUIZ ANGULO JONATHAN ALEXIS TOPETE ESTRUCTURA Y OPERACIONES BUSQUEDA SECUENCIAL Y DIRECTA, MARCELA MARQUEZ REBECA NAVARRO FONSECA GUADALUPE RUIZ ANGULO JONATHAN ALEXIS TOPETE ESTRUCTURA Y OPERACIONES BUSQUEDA Cuando se realizan operaciones de búsqueda es preciso

Más detalles

Divide-y-vencerás, backtracking y programación dinámica

Divide-y-vencerás, backtracking y programación dinámica Divide-y-vencerás, backtracking y programación dinámica Diseño y Análisis de Algoritmos Cátedra de Programación Carrera de Ingeniería de Sistemas Prof. Isabel Besembel Carrera Noviembre, 2012 Prof. Isabel

Más detalles

Programación Concurrente y Paralela. Unidad 1 Introducción

Programación Concurrente y Paralela. Unidad 1 Introducción Programación Concurrente y Paralela Unidad 1 Introducción Contenido 1.1 Concepto de Concurrencia 1.2 Exclusión Mutua y Sincronización 1.3 Corrección en Sistemas Concurrentes 1.4 Consideraciones sobre el

Más detalles

Estructuras de Datos ARBOLES Y GRAFOS

Estructuras de Datos ARBOLES Y GRAFOS Estructuras de Datos ARBOLES Y GRAFOS Rosa Barrera Capot rosa.barrera@usach.cl Grafo? Características Permiten Modelar un problema Aplicaciones: Ingeniería de Sistemas Modelado de Redes Ingeniería Industrial

Más detalles

Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS

Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS TEMA 4. - La Estructura de datos Árbol 4.1. Árboles, definiciones 4.2 Árboles binarios y su representación 4.3 Operaciones básicas de un árbol binario

Más detalles

TEMA 4 PROCESAMIENTO PARALELO

TEMA 4 PROCESAMIENTO PARALELO TEMA 4 PROCESAMIENTO PARALELO Tipos de plataformas de computación paralela Organización lógica Organización física Sistemas de memoria compartida Sistemas de memoria distribuida Tipos de plataformas de

Más detalles

Programa de teoría. Algoritmos y Estructuras de Datos II. 2. Divide y vencerás. 1. Análisis de algoritmos

Programa de teoría. Algoritmos y Estructuras de Datos II. 2. Divide y vencerás. 1. Análisis de algoritmos Programa de teoría Algoritmos y Estructuras de Datos II 1. Análisis de algoritmos 2. Divide y vencerás 3. Algoritmos voraces 4. Programación dinámica 5. Backtracking 6. Ramificación y poda A.E.D. II 1

Más detalles

Introducción a la Algorítmica Transparencias correspondientes a las clases impartidas por los profesores: Lourdes Miró Amarante Ignacio García Vargas

Introducción a la Algorítmica Transparencias correspondientes a las clases impartidas por los profesores: Lourdes Miró Amarante Ignacio García Vargas Dpto. de ATC - Página 1 de 16 CONCEPTO DE ALGORITMO (1) Fundamentos de Informática E.U.P. Universidad de Sevilla Introducción a la Algorítmica Transparencias correspondientes a las clases impartidas por

Más detalles

ANÁLISIS Y DISEÑO DE ALGORITMOS

ANÁLISIS Y DISEÑO DE ALGORITMOS ANÁLISIS Y DISEÑO DE ALGORITMOS CURSO 2005/2006 BOLETÍN DE PROBLEMAS: DIVIDE Y VENCERÁS Ejercicio 1 Dado un vector ordenado y rotado k veces: diseñar un algoritmo O(log n) que encuentre el elemento mayor

Más detalles

Programación Entera. Nelson Devia C. IN Modelamiento y Optimización Departamento de Ingeniería Industrial Universidad de Chile

Programación Entera. Nelson Devia C. IN Modelamiento y Optimización Departamento de Ingeniería Industrial Universidad de Chile IN3701 - Modelamiento y Optimización Departamento de Ingeniería Industrial Universidad de Chile 2011 Basado en Bertsimas, D., Tsitsiklis, J. (1997) Introduction to Linear Optimization Capítulos 10 y 11

Más detalles

Tema 07: Backtraking. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

Tema 07: Backtraking. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom Tema 07: Backtraking M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Backtraking Búsqueda en profundidad

Más detalles

Capítulo 7. Grafos. Continuar

Capítulo 7. Grafos. Continuar Capítulo 7. Grafos Continuar Introducción Uno de los primeros resultados de la teoría de grafos fue el que obtuvo Leonhard Euler en el siglo XVIII al resolver el problema de los puentes de Königsberg.

Más detalles

Métodos de Optimización para la toma de decisiones

Métodos de Optimización para la toma de decisiones Facultad de Ingeniería Departamento de Ciencias de la Ingeniería Magíster en Logística y Gestión de Operaciones Métodos de Optimización para la toma de decisiones MLG-521 Programación Entera 1º Semestre

Más detalles

Algoritmos voraces (greedy)

Algoritmos voraces (greedy) Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 21 de marzo de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 1 / 45 1 Algoritmos voraces (greedy) Aplicaciones de

Más detalles

Capítulo 3. Clasificación en Memoria Secundaria

Capítulo 3. Clasificación en Memoria Secundaria Capítulo 3. Clasificación en Memoria Secundaria INTRODUCCIÓN Las memorias secundarias (cintas magnéticas, discos duros, ) se caracterizan en general porque el acceso es secuencial. Es decir, en un instante

Más detalles

Tema 2, 3 y 4 GRUPO 82 - INGENIERÍA INFORMÁTICA. Bernardo D Auria. 3 Diciembre Departamento de Estadística. Universidad Carlos III de Madrid

Tema 2, 3 y 4 GRUPO 82 - INGENIERÍA INFORMÁTICA. Bernardo D Auria. 3 Diciembre Departamento de Estadística. Universidad Carlos III de Madrid Bernardo D Auria Departamento de Estadística Universidad Carlos III de Madrid GRUPO 82 - INGENIERÍA INFORMÁTICA Diciembre 2008 Ejercicio T2-JN12 Comprueba que el problema lineal min x x 1 + x 2 2x x +

Más detalles

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 3. Estructuras de Almacenamiento. Básicas. Definición y Manejo.

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 3. Estructuras de Almacenamiento. Básicas. Definición y Manejo. FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA Tema 3. Estructuras de Almacenamiento Básicas. Definición y Manejo. 1.- Búsqueda de Información. Definición de Clave. 2.- Definición y Manejo

Más detalles

Sistemas Operativos Distribuidos

Sistemas Operativos Distribuidos Contenidos del Tema Gestión de procesos Modelos de sistema Asignación de procesadores Estrategias dinámicas Estrategias estáticas Ejecución remota de procesos Modelos de sistema Organización de los procesadores

Más detalles

Casos especiales de la P. L.

Casos especiales de la P. L. Casos especiales de la P. L. Las redes: Las redes están presentes en diferentes lugares en la vida real: redes de transporte, flujo eléctrico y comunicaciones, por ejemplo. Las redes: También son ampliamente

Más detalles

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 4. Técnicas de Dispersión. Definición y Manejo.

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 4. Técnicas de Dispersión. Definición y Manejo. FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA Tema 4. Técnicas de Dispersión. Definición y Manejo. 1.- Introducción. 2.- Funciones de Dispersión. 3.- Saturación Progresiva. 4.- Empaquetado

Más detalles

Casos especiales de la P. L.

Casos especiales de la P. L. Casos especiales de la P. L. Problemas de flujo mínimo Planteamiento del problema Son problemas de programación lineal con ciertas estructuras especiales Permiten ser trabajados con algoritmos especiales

Más detalles

INFORMÁTICA MATLAB GUÍA 3 Operaciones con Matrices

INFORMÁTICA MATLAB GUÍA 3 Operaciones con Matrices 1. ARREGLOS BIDIMENSIONALES (MATRICES) A las matrices también se les conoce como arreglos bidimensionales, y son una colección de números distribuidos en filas y columnas: Usos de las matrices: Electricidad

Más detalles

COMPARACIÓN DE MODELOS DE SINCRONIZACIÓN EN PROGRAMACIÓN PARALELA SOBRE CLUSTER DE MULTICORES

COMPARACIÓN DE MODELOS DE SINCRONIZACIÓN EN PROGRAMACIÓN PARALELA SOBRE CLUSTER DE MULTICORES COMPARACIÓN DE MODELOS DE SINCRONIZACIÓN EN PROGRAMACIÓN PARALELA SOBRE CLUSTER DE MULTICORES Autor: A.P.U. Enzo Rucci Director: Ing. Armando E. De Giusti Co-Director: Lic. Franco Chichizola Tesina de

Más detalles

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN - Introducción - Sintaxis - Semántica básica - Tipos de datos - Expresiones y enunciados - Procedimientos y ambientes - Tipos abstractos de datos y módulos

Más detalles

Capítulo 4: GRAPH TRAVERSE SCHEDULING, Paralelización de Recurrencias

Capítulo 4: GRAPH TRAVERSE SCHEDULING, Paralelización de Recurrencias Capítulo 4: GRAPH TRAVERSE SCHEDULING, Paralelización de Recurrencias En este capítulo se presentan un conjunto de técnicas que permiten obtener el máximo paralelismo del bucle en presencia o no de recurrencias.

Más detalles