Divide y Vencerás Programación Dinámica
|
|
- Concepción Mora Camacho
- hace 6 años
- Vistas:
Transcripción
1 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 / 24
2 Sesión 4 Descomposición del trabajo: Paralelismo de datos. Particionado de datos. Algoritmos relajados. De paralelismo basado en dependencias de datos: Paralelismo síncrono. Dependencias en árbol o grafo. Pipeline. De paralelización de esquemas secuenciales: Divide y Vencerás. Programación Dinámica. Recorridos de árboles: Backtracking y Branch and Bound. De múltiples tareas o trabajadores: Bolsa de tareas. Granja de procesos. Maestro-Esclavo. Domingo Giménez (Universidad de Murcia) 2 / 24
3 Contenido 1 Divide y Vencerás 2 Programación Dinámica 3 Otros ejemplos y trabajo adicional Domingo Giménez (Universidad de Murcia) 3 / 24
4 Ideas generales de Divide y Vencerás Dividir un problema p en subproblemas p 1, p 2,...,p n. Resolver los subproblemas p i obteniendo subsoluciones s i. Combinar las soluciones parciales s 1, s 2,...,s n 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. Es el esquema más adecuado para paralelizar. Se puede considerar que todos los programas paralelos siguen este esquema. Domingo Giménez (Universidad de Murcia) 4 / 24
5 Paralelismo en Divide y Vencerás La solución de los subproblemas s i se puede hacer en paralelo. La división debe producir subproblemas de coste balanceado. La división y la combinación implican comunicaciones y sincronización. Si consideramos un árbol de llamadas recursivas, el Grafo de Dependencias viene determinado por el árbol, y podemos considerar que seguimos el paradigma de programación paralela en árbol. Ordenación por mezcla árbol o no árbol? Domingo Giménez (Universidad de Murcia) 5 / 24
6 Ejemplo - Ordenación por Mezcla, Memoria Compartida #pragma omp parallel for private(i) for(i=0;i<p;i++) ordenarsimple(i,a); //cada hilo ordena un trozo proc=p/2; //numero de hilos que intervienen en la mezcla for(i=1;i<log p;i++) { #pragma omp parallel for private(j) for(j=0,j<proc;j++) 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, sino que se divide en función del número de procesadores. Cómo podría ser con recursión? Por ejemplo, con tareas. Cuál es el coste de la mezcla? (n) y del algoritmo completo? ( n log n p + n) Cómo se puede hacer la mezcla de otra forma? Domingo Giménez (Universidad de Murcia) 6 / 24
7 Ejemplo - Ordenación por Mezcla, Paso de Mensajes Envio de n/p datos a cada proceso //distintas posibilidades En cada Pi, i=0,1,...,p-1: ordenar(0,n/p-1,a); //cada proceso con a local activo=1; desp=2; for(j=1;j<=log p;j++) if(activo==1) { if(i mod desp==0) { recibir en b (n/p)*(desp/2) datos de Pi+desp/2; mezclar a y b en a; } else { enviar (n/p)*(desp/2) datos de a a Pi-desp/2; activo=0; } desp=desp*2; } Cómo se hace el envío inicial? Qué coste tiene? Qué memoria necesita cada proceso? Cuál es el coste de la mezcla? y del algoritmo completo? Cómo se puede hacer la mezcla de otra forma? Domingo Giménez (Universidad de Murcia) 7 / 24
8 Ejemplo - Ordenación Rápida Secuencial: ordenar(p,q,a): if(q-p>base) { m=particionar(p,q,a); ordenar(p,m,a); ordenar(m+1,q,a); } else ordenarbasico(p,q,a); Problemas para el paralelismo: Domingo Giménez (Universidad de Murcia) 8 / 24
9 Ejemplo - Ordenación Rápida Secuencial: ordenar(p,q,a): if(q-p>base) { m=particionar(p,q,a); ordenar(p,m,a); ordenar(m+1,q,a); } else ordenarbasico(p,q,a); Problemas para el paralelismo: Cuál es el caso más desfavorable? Domingo Giménez (Universidad de Murcia) 8 / 24
10 Ejemplo - Ordenación Rápida Secuencial: ordenar(p,q,a): if(q-p>base) { m=particionar(p,q,a); ordenar(p,m,a); ordenar(m+1,q,a); } else ordenarbasico(p,q,a); Problemas para el paralelismo: Cuál es el caso más desfavorable? Cómo se balancea el trabajo? Domingo Giménez (Universidad de Murcia) 8 / 24
11 Ejemplo - Ordenación Rápida Secuencial: ordenar(p,q,a): if(q-p>base) { m=particionar(p,q,a); ordenar(p,m,a); ordenar(m+1,q,a); } else ordenarbasico(p,q,a); Problemas para el paralelismo: Cuál es el caso más desfavorable? Cómo se balancea el trabajo? Cómo se sabe el tamaño local de datos? Domingo Giménez (Universidad de Murcia) 8 / 24
12 Ejemplo - Ordenación Rápida Secuencial: ordenar(p,q,a): if(q-p>base) { m=particionar(p,q,a); ordenar(p,m,a); ordenar(m+1,q,a); } else ordenarbasico(p,q,a); Problemas para el paralelismo: Cuál es el caso más desfavorable? Cómo se balancea el trabajo? Cómo se sabe el tamaño local de datos? Cómo se sabe el tamaño de los envíos? Domingo Giménez (Universidad de Murcia) 8 / 24
13 Ejemplo - Ordenación Rápida, Memoria Compartida m[0]=0; m[1..p]=n-1; m[p/2]=particionar(0,n-1,a); proc=2; for(i=1;i<log p;i++) { #pragma omp parallel for private(j) for(j=0;j<proc;j++) m[p/(2*proc)+j*p/proc]=particionar(m[j*p/proc],m[(j+1)*p/proc],a); proc=2*proc; } #pragma omp parallel for private(i) for(i=0;i<p;i++) ordenar(m[i],m[i+1],a); Domingo Giménez (Universidad de Murcia) 9 / 24
14 Ejemplo - Ordenación Rápida, Memoria Compartida m[0]=0; m[1..p]=n-1; m[p/2]=particionar(0,n-1,a); proc=2; for(i=1;i<log p;i++) { #pragma omp parallel for private(j) for(j=0;j<proc;j++) m[p/(2*proc)+j*p/proc]=particionar(m[j*p/proc],m[(j+1)*p/proc],a); proc=2*proc; } #pragma omp parallel for private(i) for(i=0;i<p;i++) ordenar(m[i],m[i+1],a); Qué coste tiene? Domingo Giménez (Universidad de Murcia) 9 / 24
15 Ejemplo - Ordenación Rápida, Memoria Compartida m[0]=0; m[1..p]=n-1; m[p/2]=particionar(0,n-1,a); proc=2; for(i=1;i<log p;i++) { #pragma omp parallel for private(j) for(j=0;j<proc;j++) m[p/(2*proc)+j*p/proc]=particionar(m[j*p/proc],m[(j+1)*p/proc],a); proc=2*proc; } #pragma omp parallel for private(i) for(i=0;i<p;i++) ordenar(m[i],m[i+1],a); Qué coste tiene? Cómo se puede dividir el trabajo de otra manera? Domingo Giménez (Universidad de Murcia) 9 / 24
16 Ejemplo - Ordenación Rápida, Memoria Compartida m[0]=0; m[1..p]=n-1; m[p/2]=particionar(0,n-1,a); proc=2; for(i=1;i<log p;i++) { #pragma omp parallel for private(j) for(j=0;j<proc;j++) m[p/(2*proc)+j*p/proc]=particionar(m[j*p/proc],m[(j+1)*p/proc],a); proc=2*proc; } #pragma omp parallel for private(i) for(i=0;i<p;i++) ordenar(m[i],m[i+1],a); Qué coste tiene? Cómo se puede dividir el trabajo de otra manera? Cómo se puede hacer una división balanceada? Domingo Giménez (Universidad de Murcia) 9 / 24
17 Ejemplo - Ordenación Rápida, Memoria Compartida m[0]=0; m[1..p]=n-1; m[p/2]=particionar(0,n-1,a); proc=2; for(i=1;i<log p;i++) { #pragma omp parallel for private(j) for(j=0;j<proc;j++) m[p/(2*proc)+j*p/proc]=particionar(m[j*p/proc],m[(j+1)*p/proc],a); proc=2*proc; } #pragma omp parallel for private(i) for(i=0;i<p;i++) ordenar(m[i],m[i+1],a); Qué coste tiene? Cómo se puede dividir el trabajo de otra manera? Cómo se puede hacer una división balanceada? Cómo generalizar a p no potencia de dos? Domingo Giménez (Universidad de Murcia) 9 / 24
18 Ejemplo - Ordenación Rápida, Paso de Mensajes 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;j<=log p;j++) { if(activo==1) if(i mod desp==0) { m=particionar(0,m1,a); enviar m1-m+1 y a[m+1],...,a[m1] a Pi+desp/2; m1=m; } else { 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); acumular sobre P0; Qué problemas de implementación tenemos? Domingo Giménez (Universidad de Murcia) 10 / 24
19 Descomposición recursiva Se divide un problema en subproblemas completamente independientes, que se pueden dividir recursivamente en otros subproblemas. Es un esquema divide y vencerás, pero no sabemos los subproblemas a los que puede dar lugar. Ejemplo: en la ordenación rápida puede que la parte izquierda o derecha tenga cero o un elemento, y no hace falta llamar recursivamente con ella. Tiene que haber un criterio para decidir si se realiza la llamada. En Memoria Compartida se puede hacer con tareas. En Memoria Distribuida se generan tareas que hay que gestionar cómo asignar a los procesos (técnica de bolsa de tareas). Domingo Giménez (Universidad de Murcia) 11 / 24
20 Descomposición recursiva - Aproximación recursiva de integral El número de intervalos de integración no es fijo. Cada intervalo se divide en dos subintervalos. Se sigue dividiendo un intervalo cuando el área de su trapecio se diferencia con una cierta tolerancia del área de sus dos subtrapecios. Domingo Giménez (Universidad de Murcia) 12 / 24
21 Ejemplos numéricos Multiplicación rápida de matrices. Método de Strassen. Multiplicación de enteros largos. Método de Karatsuba y Ofman. P = (A 11 + A 22 )(B 11 + B 22 ) Q = (A 12 + A 22 ) B 11 R = A 11 (B 12 B 22 ) S = A 22 (B 21 B 11 ) uv = 10 2S wy+10 S ((w x)(z y)+wy+xz)+xz T = (A 11 + A 12 ) B 22 U = (A 21 A 11 )(B 11 + B 12 ) V = (A 12 A 22 )(B 21 + B 22 ) C 11 = P + S T + U C 12 = R + T C 21 = Q + S C 22 = P + R Q + U Cuántas tareas generar y cómo asignarlas a los procesos? Grafos de dependencia? Domingo Giménez (Universidad de Murcia) 13 / 24
22 Contenido 1 Divide y Vencerás 2 Programación Dinámica 3 Otros ejemplos y trabajo adicional Domingo Giménez (Universidad de Murcia) 14 / 24
23 Ideas generales de la 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. Domingo Giménez (Universidad de Murcia) 15 / 24
24 Ideas generales de la Programación Dinámica Memoria Compartida: En cada fila intervienen los procesadores obteniendo cada uno valores de distintos tamaños, basándose en la fila anterior para leer. No hay problema de coherencia, pero se necesita sincronización entre los pasos sucesivos (uno por fila), lo que se puede ver como Paralelismo Síncrono. Paso de Mensajes: Un proceso puede necesitar datos almacenados en otro. Las flechas que cruzan de un proceso a otro determinan comunicaciones. Domingo Giménez (Universidad de Murcia) 16 / 24
25 Ejemplo - Problema de la Mochila 0/1 Mochila de capacidad C; objetos numerados 1, 2,...,n; cada objeto tiene un peso p i y un beneficio b i. Maximizar n i=1 x ib i sujeto a x i = 0 o 1, y n i=1 x ip i C Se resuelve con la ecuación de recurrencia: M(i, X) = max{m(i 1, X),M(i 1, X p i )+b i } Ejemplo: C = 9, p = (3, 5, 2), b = (4, 6, 5) Domingo Giménez (Universidad de Murcia) 17 / 24
26 Ejemplo - Problema de la Mochila 0/1, Memoria Compartida for(i=1;i<n;i++) #pragma omp parallel for for(j=1;j<=c;j++) 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;k<=j*c/p;k++) M[i,k]=max{M[i-1,k],M[i-1,k-p[i]]+b[i]}; Paralelismo Síncrono. El esquema es con paralelismo implícito, pero podría ser explícito, para reducir coste de gestión de hilos. En este problema el esquema de dependencias entre filas varía, pero siempre depende de dos valores (fórmula de recursión). Generalizar para C no múltiplo de p. Domingo Giménez (Universidad de Murcia) 18 / 24
27 Ejemplo - Problema de la Mochila 0/1, Paso de Mensajes Suponiendo que cada proceso trata una columna: Para cada Pi, i=1,...,c if(p[1]>=i) M=b[1]; else M=0; if(i+p[2]<=c) //comprueba los procesos que necesitan datos enviar M a Pi+p[2]; for(j=2;j<n;j++) { if(i-p[j]>=1) //comprueba si recibe dato de la fila anterior recibir en N de Pi-p[j]; else N=-infinito; M=max{M,N+b[j]}; if(i+p[j+1]<=c) enviar M a Pi+p[j+1]; } if(i-p[n]>=1) recibir en N de Pi-p[n]; else N=-infinito; M=max{M,N+b[n]}; Cómo se quita la restricción? Qué coste tiene? Domingo Giménez (Universidad de Murcia) 19 / 24
28 Ejemplo - Problema de la devolución de monedas Dado un conjunto de n tipos de monedas, cada una con valor v i y con una cantidad de monedas de ese tipo c i, y dada una cantidad P, encontrar el número mínimo de monedas que tenemos que usar para obtener esa cantidad. Ecuación de recurrencia: Cambio(i, Q) = min {Cambio(i 1, Q k v i)+k} k=0,1,...,min{q/v i,c i } Ejemplo: n = 3, P = 8, v = (1, 4, 6), no límite en c. El patrón de comunicaciones varía en las iteraciones, y además cada proceso puede enviar y/o recibir de más de un proceso. Domingo Giménez (Universidad de Murcia) 20 / 24
29 Ejemplo - Problemas de laberintos Distintas posibilidades: número de caminos entre dos puntos, longitud mínima... Varios pasos para formar caminos de longitud 1, 2,... hasta la longitud total. Ejemplo, dado el damero: encontrar la longitud mínima de la casilla superior izquierda a la inferior derecha, suponiendo que se puede mover sólo a derecha y abajo y que la longitud del camino es la suma de los números en todas las casillas por las que pasa. Los primeros pasos son: Se puede dividir el trabajo en bloques de columnas, pero los últimos procesos tardan en empezar. Posibles alternativas? Domingo Giménez (Universidad de Murcia) 21 / 24
30 Pipeline en problemas de Programación Dinámica Se puede no sincronizar por filas, sino que cada proceso trabaje con los datos que necesita en cuanto estén disponibles. El esquema se transforma de Paralelismo Síncrono a Paralelismo Pipeline. Ejemplo del laberinto. Pasos: Cómo funcionaría en los otros ejemplos vistos? Domingo Giménez (Universidad de Murcia) 22 / 24
31 Contenido 1 Divide y Vencerás 2 Programación Dinámica 3 Otros ejemplos y trabajo adicional Domingo Giménez (Universidad de Murcia) 23 / 24
32 Se pueden ver otros ejemplos de Divide y Vencerás y Programación Dinámica de la asignatura de Algoritmos y Estructuras de Datos y pensar formas de paralelización. Hay unos pocos problemas del Concurso de Programación Paralela que se pueden abordar con Divide y Vencerás, los que llevan parte de ordenación. Programación Dinámica, alguno de laberintos. Domingo Giménez (Universidad de Murcia) 24 / 24
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 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 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 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 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 detallesALGORITMOS Y PROGRAMACIÓN PARALELA. Esquemas de programación paralela
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 Esquemas de algoritmos
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 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 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 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 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 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 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 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 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 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 detalles259. El número de combinaciones de m objetos entre un conjunto de n, denotado por n, para n 1 y 0 m n, se puede definir recursivamente por: m
258. Aplicar el algoritmo de programación dinámica para el problema del cambio de monedas sobre el siguiente ejemplo: n = 3, P = 9, c = (1, 3, 4). Qué ocurre si multiplicamos P y c por un valor constante,
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 detallesTema 2. Divide y vencerás.
Programa de teoría Parte I. Estructuras de Datos. 1. Abstracciones especificaciones. 2. Conjuntos diccionarios. 3. Representación de conjuntos mediante árboles. 4. Grafos. Parte II. Algorítmica. 1. Análisis
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 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 Dinámica
Programación Dinámica Es aplicada típicamente a problemas de optimización, donde puede haber muchas soluciones, cada una tiene un valor asociado y prentendemos obtener la solución con valor óptimo. Al
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 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 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 detalles4.2. El número de combinaciones de m objetos entre un conjunto de n, denotado por n, para n 1 y 0 m n, se puede definir recursivamente por: m
4.1. Aplicar el algoritmo de programación dinámica para el problema del cambio de monedas sobre el siguiente ejemplo: n = 3, P = 9, c = (1, 3, 4). Qué ocurre si multiplicamos P y c por un valor constante,
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 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 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 detallesAlgoritmos y Estructuras de Datos II, Segundo del Grado de Ingeniería Informática, Test de Programación Dinámica, 4 de mayo 2017
Algoritmos y Estructuras de Datos II, Segundo del Grado de Ingeniería Informática, Test de Programación Dinámica, 4 de mayo 2017 Para cada uno de los dos problemas siguientes, hay que explicar cómo se
Más detallesAnálisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera
Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera RECURSIÓN La recursión es una técnica fundamental en el diseño de algoritmos, que está basada en la solución de versiones más pequeñas del
Más detallesAnálisis de algoritmos
Tema 08: Divide y vencerás (DyV) M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Introducción Divide y vencerás Observaciones
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 detallesEsquema de Dividir y Vencer
Esquema de Dividir y Vencer Amalia Duch Barcelona, marzo de 2006 Índice 1. Esquema general 1 2. Búsqueda binaria (binary search) 2 3. Ordenación por fusión (merge sort) 2 4. Ordenación rápida (quick sort)
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 detallesApuntes de Teórico PROGRAMACIÓN 3
Apuntes de Teórico PROGRAACIÓN Programación Dinámica Versión. Índice Índice... Introducción... Principio de optimalidad...5 Ejemplo: Camino de menor costo...6 Ejemplo: problema de la mochila...6 Aplicación
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 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 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 detallesProgramación dinámica
Parte de Algoritmos de la asignatura de Programación Master de Bioinformática Programación dinámica Web asignatura: http://dis.um.es/~domingo/algbio.html E-mail profesor: domingo@um.es Transparencias preparadas
Más detalles1. Planteamiento general
Algoritmos de tipo Divide y Vencerás 1. Planteamiento general 2. Determinación del caso base 3.1. Búsqueda binaria 3.3. Problema de la selección 3.4. Multiplicación de matrices de Strassen 1. Planteamiento
Más detallesAlgorítmica y Complejidad. Tema 5 Divide y Vencerás.
Algorítmica y Complejidad Tema Divide y Vencerás. . Método.. Un ejemplo sencillo.. Complejidad del método.. Ejemplo: El máximo subarray.. Ejemplo: Multiplicación de enteros. . Método.. Un ejemplo sencillo..
Más detallesAlgoritmos y Estructuras de Datos II
27 de mayo de 2013 Clase de hoy 1 Repaso Divide y vencerás Algoritmos voraces 2 3 Divide y vencerás Algoritmos voraces Repaso cómo vs. qué 3 partes 1 análisis de algoritmos 2 tipos de datos 3 técnicas
Más detallesCómputo paralelo con openmp y C
Cómputo paralelo con openmp y C Sergio Ivvan Valdez Peña Guanajuato, México. 13 de Marzo de 2012 Sergio Ivvan Valdez Peña Cómputo Guanajuato, paralelo conméxico. openmp y () C 13 de Marzo de 2012 1 / 27
Más detallesDividir-conquistar y podar-buscar
Técnicas de diseño de algoritmos Dividir-conquistar y podar-buscar Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL DC y PB p. 1 Diseño de algoritmos La meta: encontrar una manera eficiente
Más detallesAnálisis y Diseño de Algoritmos
Análisis y Diseño de Algoritmos Introducción: El Rol de los Algoritmos en Computación DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Temario 2 1. Introducción 2. Notación Asintótica 3. Recurrencias
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 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 Dinámica
Universidad de Chile Facultad de Ciencias Físicas y Matemáticas Departamento de Ingeniería Industrial IN34A: Clase Auxiliar Programación Dinámica Marcel Goic F. 1 1 Esta es una versión bastante preliminar
Más detallesAnálisis de algoritmos. Recursividad
Análisis de algoritmos Recursividad 1 Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más pequeña dentro de sí. Ésta muñeca, también contiene
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 detallesProgramación Dinámica
Programación Dinámica Agustín Santiago Gutiérrez Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Septiembre 2014 Agustín Gutiérrez (UBA) Programación Dinámica Septiembre 2014 1 / 10
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 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 detallesDecrementa y vencerás II
Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 21 de febrero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás II 21 de febrero de 2018 1 / 22 1 Decrementa y vencerás II Dr. Eduardo
Más detallesTEMA 2: PROGRAMACIÓN PARALELA (I)
Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas ARQUITECTURA DE COMPUTADORES II AUTORES: David Expósito Singh Florin Isaila Daniel Higuero Alonso-Mardones Javier García Blas Borja Bergua
Más detallesTécnicas para el Diseño de Algoritmos
Técnicas para el Diseño de Algoritmos Algoritmos Algoritmos voraces Divide y conquista Programación dinámica Backtracking Algoritmos Voraces Algoritmos Voraces Algoritmos que implementan una búsqueda miope
Más detallesAlgoritmos y Estructuras de Datos Curso 06/07. Ejercicios
9..En un problema de backtracking estamos interesados en almacenar de forma explícita el árbol recorrido por el algoritmo. De cada nodo del árbol sólo necesitamos saber un número, que indica el orden en
Más detallesEcuaciones de recurrencia. Abraham Sánchez López FCC/BUAP Grupo MOVIS
Ecuaciones de recurrencia Abraham Sánchez López FCC/BUAP Grupo MOVIS Introducción, I Cuando se analiza la complejidad de un algoritmo recursivo, es frecuente que aparezcan funciones de costo también recursivas,
Más detallesAlgorítmica y Lenguajes de Programación. Algoritmos voraces y divide y vencerás
Algorítmica y Lenguajes de Programación Algoritmos voraces y divide y vencerás Algoritmos voraces. Introducción (i) Las personas glotonas (voraces) intentan coger tanto como pueden en cada momento. Los
Más detallesSÍLABO DEL CURSO DE ANALISIS Y DISEÑO DE ALGORITMOS
SÍLABO DEL CURSO DE ANALISIS Y DISEÑO DE ALGORITMOS I. INFORMACIÓN GENERAL: 1.1 Facultad: Ingeniería 1.2 Carrera Profesional: Ingeniería de Sistemas Computacionales 1.3 Departamento: -------------------------
Más detallesEjercicios sobre recursividad
Ejercicios sobre recursividad 11 de febrero de 2003 1. Implementa una función recursiva que devuelva la suma de los dígitos de un número natural, que se le pasa por parámetro. 2. Implementa una función
Más detallesGrupo de Computación Científica y Programación Paralela
Grupo de Computación Científica y Programación Paralela Universidad de Murcia domingo@um.es http://dis.um.es/~domingo Reunión de proyecto de investigación, Valencia, 12-13 noviembre 2009 Contents 1 El
Más detallesTema 2. Fundamentos Teóricos de la. programación dinámica Teorema de Optimalidad de Mitten
Tema 2 Fundamentos Teóricos de la Programación Dinámica 2.1. Teorema de Optimalidad de Mitten El objetivo básico en la programación dinámica consiste en descomponer un problema de optimización en k variables
Más detallesANÁLISIS Y DISEÑO DE ALGORITMOS. PRACTICAS
ANÁLISIS Y DISEÑO DE ALGORITMOS. PRACTICAS 2004-2005 PRACTICA 1: MEDICIÓN DEL TIEMPO. ALGORITMOS DE ORDENACIÓN Crear un conjunto de funciones que permitan la medición del tiempo de ejecución de los programas,
Más detallesBacktracking: Esquema General
Backtracking Idea: Técnica para recorrer sistemáticamente todas las posibles configuraciones de un espacio asociado a soluciones candidatos de un problema computacional. Se puede pensar este espacio tiene
Más detallesAnálisis de Algoritmos
Parte de Algoritmos de la asignatura de Programación Master de Bioinformática Análisis de Algoritmos Web asignatura: http://dis.um.es/~domingo/algbio.html E-mail profesor: domingo@um.es Transparencias
Más detallesALGORITMOS Y ESTRUCTURAS DE DATOS II GRADO INGENIERÍA INFORMÁTICA, CURSO 14/15 PRÁCTICA DE DIVIDE Y VENCERÁS Y ANÁLISIS DE ALGORITMOS Grupos 1 y 3
ALGORITMOS Y ESTRUCTURAS DE DATOS II GRADO INGENIERÍA INFORMÁTICA, CURSO 14/15 PRÁCTICA DE DIVIDE Y VENCERÁS Y ANÁLISIS DE ALGORITMOS Grupos 1 y 3 A. Contexto Las técnicas generales de diseño de algoritmos
Más detallesTaller de Programación Paralela
Taller de Programación Paralela Departamento de Ingeniería Informática Universidad de Santiago de Chile April 17, 2008 Motivación Programar aplicaciones paralelas no es una tarea trivial. Paralelismo
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 detallesProblema de las N Reinas. Resolución paralela
Problema de las N Reinas Resolución paralela Indice Introducción al problema Representación y Soluciones Resolución secuencial Resolución paralela Conclusiones Bibliografía 2 3 Introducción Introducción
Más detallesIntroducción a la recursividad. Diseño y Análisis de Algoritmos
Diseño y Análisis de Algoritmos Contenidos Contenidos 1 Introducción 2 Ejemplos 3 Problemas variados 4 Problemas combinatorios URJC DAA 2 / 52 Introducción Introducción URJC DAA 3 / 52 Introducción Qué
Más detallesEstructuras de Datos y Algoritmos. Curso 2009/2010. Tema 3: Divide y Vencerás
Estructuras de Datos y Algoritmos Facultad de Informática Universidad Politécnica de Valencia Curso 2009/2010 Tema 3: Divide y Vencerás FI UPV: Curso 2009/2010 TEMA 3. Divide y Vencerás Objetivos Estudio
Más detallesPrograma de la asignatura Curso: 2006 / 2007 ALGORITMIA (4456)
Programa de la asignatura Curso: 2006 / 2007 ALGORITMIA (4456) PROFESORADO Profesor/es: ANTONIO EDUARDO RENEDO MENA - correo-e: arenedo@ubu.es FICHA TÉCNICA Titulación: INGENIERÍA EN INFORMÁTICA Centro:
Más detallesBENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD CIENCIAS DE LA COMPUTACION
BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD CIENCIAS DE LA COMPUTACION PROGRAMA DE LA MATERIA CORRESPONDIENTE A LA LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN. Coordinación: NOMBRE DE LA MATERIA:
Más detallesMultiplicación de Matrices en Sistemas cc-numa Multicore. Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas
Multiplicación de Matrices en Sistemas cc-numa Multicore Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas Índice de Contenido 1. Introducción 2. Línea de Investigación 3. Sistemas Empleados
Más detallesTecnologías en la Educación Matemática
Tecnologías en la Educación Matemática Datos, Expresiones, Condicionales y Repetición Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR 1 Datos Los algoritmos combinan datos
Más detallesProgramación dinámica
Algoritmos y Estructura de Datos III Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires 03 de Abril de 2013 Repaso Aplica a problemas de optimización donde obtenemos una solución utilizando
Más detallesTema 7: Problemas clásicos de Programación Lineal
Tema 7: Problemas clásicos de Programación Lineal 1.- Características generales de un problema de transporte y asignación Surgen con frecuencia en diferentes contextos de la vida real. Requieren un número
Más detallesÍNDICE INTRODUCCIÓN...13
ÍNDICE INTRODUCCIÓN...13 CAPÍTULO 1. LENGUAJE ALGORÍTMICO...15 1.1 DEFINICIÓN DE ALGORITMO...16 1.2 LA ROTACIÓN DE UNA LISTA DE NÚMEROS NATURALES...20 1.3 CUESTIONES...23 1.3.1 Dos comerciales en el restaurante...23
Más detallesEstrategias de Diseño de Algoritmos
Estrategias de Diseño de Algoritmos Introducción A través de los años, los científicos de la computación han identificado diversas técnicas generales que a menudo producen algorit mos eficientes para la
Más detallesAlgoritmos y Estructuras de Datos
1 / 36 Universidad Icesi Facultad de Ingeniería 2017-2 2 / 36 Agenda del día 1 3 / 36 Por qué usamos recurrencias en análisis de algoritmos? 3 / 36 Por qué usamos recurrencias en análisis de algoritmos?
Más detallesEn esta práctica se trata de aplicar la técnica divide y vencerás en la resolución de problemas de recorrido de cadenas.
ALGORITMOS Y ESTRUCTURAS DE DATOS II GRADO INGENIERÍA INFORMÁTICA, CURSO 17/18 PRÁCTICA DE DIVIDE Y VENCERÁS Y ANÁLISIS DE ALGORITMOS subgrupos 1.3, 3.1+PES, 3.2 (profesor Domingo Giménez) A. Contexto
Más detallesDivide & Conquer. Herman Schinca. Clase de Junio de 2011
Divide & Conquer Herman Schinca Clase 20 7 de Junio de 2011 Divide y vencerás Idea aplicable a muchas situaciones de la vida. Origen histórico atribuído a Julio César en relación a sus estrategias militares.
Más detallesCilk. Un entorno de programación paralela. Tomás Muñoz Rodríguez < > 17 de noviembre de 2011
Un entorno de programación paralela Tomás Muñoz Rodríguez < tomas.munoz@um.es > 17 de noviembre de 2011 Profesor: Domingo Jiménez Cánovas Asignatura: Metodología de la Programación Paralela Facultad de
Más detallesAnálisis y Diseño de Algoritmos
Análisis y Diseño de Algoritmos Recurrencias DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Introducción 2 Cuando un algoritmo se llama a sí mismo Su tiempo de ejecución se puede describir
Más detallesInformática Nivel superior Prueba 1
Informática Nivel superior Prueba 1 Viernes 4 de noviembre de 2016 (tarde) 2 horas 10 minutos Instrucciones para los alumnos yno abra esta prueba hasta que se lo autoricen. ysección A: conteste a todas
Más detallesAnálisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera
Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera Algoritmos probabilistas Ene. 2010 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 2 Algoritmos multihilos
Más detallesHeurísticas en el recorrido de árboles de soluciones
Heurísticas en el recorrido de árboles de soluciones. Árboles de soluciones. Repaso de backtracking y branch and bound. Uso de heurísicas en backtracking 4. Uso de heurísticas en branch and bound . Árboles
Más detallesRESUMEN DE ALGORITMOS PROBABILÍSTICOS
RESUMEN DE ALGORITMOS PROBABILÍSTICOS En los algoritmos probabilísticos hay ciertas decisiones que se toman al azar bajo condiciones estadísticamente estables como una distribución uniforme. Normalmente
Más detalles1 Primitivas básicas de OpenMP
1 Primitivas básicas de OpenMP Consultar la página oficial de la plataforma OpenMP http://www.openmp.org/drupal/ Pragmas Es una directiva para el compilador que permite la definición de nuevas directivas
Más detallesDiseño de algoritmos
Diseño de algoritmos Programación Dinámica Jesús Bermúdez de Andrés Universidad del País Vasco/Euskal Herriko Unibertsitatea (UPV/EHU) Curso 2008-09 1 Programación Dinámica Definición de la técnica Funciones
Más detallesTema 23: Técnicas de diseño descendente de algoritmos
Tema 23: Técnicas de diseño descendente de algoritmos Informática (2010 11) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla
Más detallesSplines (funciones polinomiales por trozos)
Splines (funciones polinomiales por trozos) Problemas para examen Interpolación lineal y cúbica 1. Fórmulas para la interpolación lineal. Dados t 1,..., t n, x 1,..., x n R tales que t 1
Más detalles