Divide y Vencerás Programación Dinámica

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

Download "Divide y Vencerás Programación Dinámica"

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

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

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

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

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

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

ALGORITMOS 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 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

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

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

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

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

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

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

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

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

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

259. 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

259. 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 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

Tema 2. Divide y vencerás.

Tema 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 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

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 Dinámica

Programació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 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

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

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

4.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.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 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

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

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

Algoritmos 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 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 detalles

Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera

Aná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 detalles

Análisis de algoritmos

Aná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 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

Esquema de Dividir y Vencer

Esquema 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 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

Apuntes de Teórico PROGRAMACIÓN 3

Apuntes 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 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

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

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

Programación dinámica

Programació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 detalles

1. Planteamiento general

1. 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 detalles

Algorítmica y Complejidad. Tema 5 Divide y Vencerás.

Algorí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 detalles

Algoritmos y Estructuras de Datos II

Algoritmos 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 detalles

Cómputo paralelo con openmp y C

Có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 detalles

Dividir-conquistar y podar-buscar

Dividir-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 detalles

Análisis y Diseño de Algoritmos

Aná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 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

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 Dinámica

Programació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 detalles

Análisis de algoritmos. Recursividad

Aná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 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

Programación Dinámica

Programació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 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

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

Decrementa y vencerás II

Decrementa 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 detalles

TEMA 2: PROGRAMACIÓN PARALELA (I)

TEMA 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 detalles

Técnicas para el Diseño de Algoritmos

Té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 detalles

Algoritmos y Estructuras de Datos Curso 06/07. Ejercicios

Algoritmos 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 detalles

Ecuaciones de recurrencia. Abraham Sánchez López FCC/BUAP Grupo MOVIS

Ecuaciones 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 detalles

Algorí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 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 detalles

SÍLABO DEL CURSO DE ANALISIS Y DISEÑO DE ALGORITMOS

SÍ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 detalles

Ejercicios sobre recursividad

Ejercicios 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 detalles

Grupo de Computación Científica y Programación Paralela

Grupo 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 detalles

Tema 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 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 detalles

ANÁLISIS Y DISEÑO DE ALGORITMOS. PRACTICAS

ANÁ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 detalles

Backtracking: Esquema General

Backtracking: 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 detalles

Análisis de Algoritmos

Aná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 detalles

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

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 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 detalles

Taller de Programación Paralela

Taller 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 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

Problema de las N Reinas. Resolución paralela

Problema 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 detalles

Introducción a la recursividad. Diseño y Análisis de Algoritmos

Introducció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 detalles

Estructuras de Datos y Algoritmos. Curso 2009/2010. Tema 3: Divide y Vencerás

Estructuras 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 detalles

Programa de la asignatura Curso: 2006 / 2007 ALGORITMIA (4456)

Programa 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 detalles

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD CIENCIAS DE LA COMPUTACION

BENEMÉ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 detalles

Multiplicació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 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 detalles

Tecnologías en la Educación Matemática

Tecnologí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 detalles

Programación dinámica

Programació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 detalles

Tema 7: Problemas clásicos de Programación Lineal

Tema 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 Í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 detalles

Estrategias de Diseño de Algoritmos

Estrategias 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 detalles

Algoritmos y Estructuras de Datos

Algoritmos 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 detalles

En esta práctica se trata de aplicar la técnica divide y vencerás en la resolución de problemas de recorrido de cadenas.

En 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 detalles

Divide & Conquer. Herman Schinca. Clase de Junio de 2011

Divide & 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 detalles

Cilk. Un entorno de programación paralela. Tomás Muñoz Rodríguez < > 17 de noviembre de 2011

Cilk. 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 detalles

Análisis y Diseño de Algoritmos

Aná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 detalles

Informática Nivel superior Prueba 1

Informá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 detalles

Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera

Aná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 detalles

Heurísticas en el recorrido de árboles de soluciones

Heurí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 detalles

RESUMEN DE ALGORITMOS PROBABILÍSTICOS

RESUMEN 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 detalles

1 Primitivas básicas de OpenMP

1 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 detalles

Diseño de algoritmos

Diseñ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 detalles

Tema 23: Técnicas de diseño descendente de algoritmos

Tema 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 detalles

Splines (funciones polinomiales por trozos)

Splines (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