ALGORITMOS Y PROGRAMACIÓN PARALELA. Esquemas de programación paralela
|
|
- María Concepción Gómez Martin
- hace 6 años
- Vistas:
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
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 detallesParalelismo 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 detallesAlgoritmos 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 detallesEsquemas 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 detallesParalelizació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 detallesEsquemas 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 detallesDiseñ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 detallesRelació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 detallesGranularidad 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 detallesUNIDAD 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 detallesAlgoritmos 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 detallesMultiplicació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 detallesa) 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 detallesCapí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 detallesAlgoritmos 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 detallesParte 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 detallesAlgoritmos 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 detallesTeorí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 detallesDiseñ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 detallesW_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 detallesModelado 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 detallesMultiplicació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 detallesEstructura 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 detallesAná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 detallesPrá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 detalles3. 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 detallesParalelismo 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 detalles1. 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 detallesPROGRAMACIÓ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 detallesParalelismo _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 detallesTeorí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 detallesx 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 detallesAná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 detallesComplejidad 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 detallesAlgoritmos 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 detallesTEMA 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 detallesAná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 detallesTema: 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 detallesEjemplo: 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 detallesConceptos. 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 detallesAlgoritmos 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 detallesAlgoritmos 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 detallesUnidad 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 detallesArchivos 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 detallesModelos 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 detallesPrograma 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 detallesPARTE 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 detallesPROGRAMACIÓ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 detallesMé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 detallesEstructura 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 detallesFrancisco 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 detallesTIPOS 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 detallesDiseñ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 detallesCasos 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 detallesProgramació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 detallesALGORÍ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 detallesTema 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 detallesA) 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 detallesPorque 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 detallesProcesamiento 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 detallesANÁ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 detallesTema: 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 detallesEstructura 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 detallesFrancisco 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 detallesBú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 detallesAlgoritmos 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 detallesAgradecimientos. 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 detallesINDICE. 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 detallesUniversidad 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 detallesGrafos. 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 detallesBUSQUEDA 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 detallesDivide-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 detallesProgramació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 detallesEstructuras 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 detallesContenido 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 detallesTEMA 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 detallesPrograma 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 detallesIntroducció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 detallesANÁ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 detallesProgramació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 detallesTema 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 detallesCapí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 detallesMé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 detallesAlgoritmos 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 detallesCapí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 detallesTema 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 detallesFICHEROS 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 detallesSistemas 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 detallesCasos 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 detallesFICHEROS 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 detallesCasos 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 detallesINFORMÁ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 detallesCOMPARACIÓ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 detallesTema 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 detallesCapí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