Programación Dinámica
|
|
|
- Alfonso Montes Godoy
- hace 7 años
- Vistas:
Transcripción
1 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 que son mas fáciles de resolver, pero en este caso se empieza resolviendo los problemas más pequeños. Una vez resueltos estos subproblemas, se combinan las soluciones obtenidas para generar la solución del problema original. La idea es evitar resolver más de una vez los mismos problemas. Técnica bottom- up
2 Programación Dinámica Principio de optimalidad : un problema de optimización satisface el principio de optimalidad si en una sucesión óptima de decisiones o elecciones, cada subsucesión es a su vez óptima. (es necesario que se cumpla para poder usar la técnica de programación dinámica, no todos los problemas lo cumplen)
3 Ejemplos: Coeficientes binomiales Producto de matrices Comparación de secuencias de DN Subsecuencia creciente máxima rbol de búsqueda óptimo etc.
4 Cálculo de coeficientes binomiales Supongamos que queremos calcular los coeficientes binomiales usando la siguiente función ( divide and conquer ): Función C(n,k) si k = 0 or k = n entonces return sino return C (n, k) + C (n, k) Es eficiente calcular así?. No, los mismos valores de C(n,k) son calculados varias veces. Cuál es la complejidad de este algoritmo?. Ω ( n ) k
5 Triángulo de Pascal k k n..... n......
6 C(n, k) C(n, k) C (n,k) Cuál es la complejidad de este algoritmo?. Cuánta memoria requiere?. Hay que guardar en memoria toda la tabla?.
7 La fórmula que usamos aquí es la misma que en el algoritmo divide and conquer, pero acá no calculamos varias veces lo mismo. Tenemos entonces una complejidad de O(nk).
8 Problema de la multiplicación de n matrices Queremos ver la forma óptima de calcular M= M M 2 M 3. M n Por la propiedad asociativa del producto de matrices esto puede hacerse de muchas formas. Queremos determinar la que minimiza el número de operaciones necesarias. Vale el principio de optimalidad acá?
9 Ejemplo: supongamos que es de 3 x5, B de 5 x 89, C de 89 x 3 y D de 3 x 34. ((B)C)D requiere 0582 multiplicaciones (B)(CD) requiere 5420 multiplicaciones ((BC))D requiere 2856 multiplicaciones ((BC)D) requiere 4055 multiplicaciones (B(CD)) requiere 2648 multiplicaciones
10 Para ver cuál es la forma óptima de multiplicar deberíamos analizar todas las formas posibles de poner los paréntesis y ver cual es la mejor. Sea M =( M M 2 M 3. M i )(M i+ M i+2. M n ) Sea T(i) la cantidad de formas de poner los paréntesis en el lado derecho y T(n-i) en el lado izquierdo. Entonces para cada i hay T(i)T(n-i) formas de poner los paréntesis para toda la expresión y T(n) = Σ i T(i) T(n-i) partir de que T() = se puede calcular la expresión para cualquier n. (números catalanes).
11 n T(n) Encontrar de esta forma (algoritmo de fuerza bruta) la mejor manera de calcular la cantidad de multiplicaciones que requiere cada posibilidad es del orden Ω (4 n /n). 2n 2n-2 Dem: ejercicio, usar que n 4 n / (2n+) y T(n) = /n n )
12 Cómo usar Programación Dinámica para resolver este problema? Construimos una tabla m ij ( i j n) donde m ij es la cantidad mínima de multiplicaciones necesaria para calcular M i M i+ M i+2.m j. La solución al problema es entonces m n. Suponemos que las dimensiones de la matriz M i están dadas por un vector d i, 0 i n, donde la matriz Mi tiene d i filas y d i columnas y armamos la tabla diagonal por diagonal, para cada diagonal s, s = 0,., n s=0 : m ii = 0 para i=,2, n s= : m i i+ = d i d i d i+ para i=,2, n < s < n : m i i+s = min i k < i+s {m ik + m k+ i+s + d i d k d i +s } para i=,2, n-s
13 En el ejemplo anterior d= ( 3,5,89,3,34) y entonces. Para s = m 2 = 5785, m 23 = 335, m 34 = Para s =2 m 3 = 530, m 24 = 845. Para s = 3 m 4 = 2856 J= i= s= s= s= 4 0 s=0
14 Cómo guardar la información para saber además cuál es la forma de hacer el producto tener este número de multiplicaciones?. Complejidad : en cada diagonal s hay que calcular n-s elementos y para cada uno de ellos hay que elegir entre s posibilidades, entonces la cantidad de operaciones del algoritmo es del orden de: Σ s (n-s)s = n Σ s s - Σ s s 2 = n 2 (n)/2 n (n) (2n)/6 = (n 3 n )/6 o sea la complejidad del algoritmo es O(n 3 ).
15 Triangulación de mínimo peso Una triangulación de un polígono convexo P = {v, v 2... v n, v } es un conjunto de diagonales que particiona el polígono en triángulos. El peso de la triangulación es la suma de las longitudes de sus diagonales. Ejemplo: dos triangulaciones de un mismo polígono. Observar que cada eje del polígono original está en un solo triángulo.
16 Dado un segmento que une dos vértices adyacentes, transformarlo en un triángulo implica determinar el tercer vértice. Una vez identificado este vértice al polígono le quedan dos polígonos menores que deben ser a su vez triangulados. Sea T [i,j] el costo de triangular una de las parte del polígono que queda después de trazar una diagonal desde el vértice v i al vértice v j,, sin tomar en cuenta la longitud d ij de la cuerda que va de v i a v j (para no contarla dos veces).
17 k i j T [i,j] = min k = i,j {T [i,k] + T [k,j] + d ik + d kj } Caso base, cuando i y j son vecinos: T [i, i+] = 0
18 lgoritmo para triangulación del polígono Triangulación-mínima (P) para i =,n hacer T[i,i+] =0 para gap =, n para i =, n-gap hacer j= i+gap T [i,j] = min k=i,j {T [i,k] + T [k+,j] + d ik + d kj } return T[,n] =========================== Complejidad : O(n 3 ) Complejidad espacial: O(n 2 ) ===========================
19
20 Qué pasa si el polígono no es convexo?. Qué pasaría si hubiera puntos en el interior del polígono?. El número de subregiones en cada paso ya no es 2 y crece exponencialmente y entonces el algoritmo de programación dinámica no es eficiente. No se conocen algoritmos polinomiales para el problema de triangulación en este caso.
21 Comparación de secuencias de DN Supongamos que tenemos dos secuencias de DN GCGGTTG y GTCGGTG Queremos decidir si son parecidas o no. Para qué se usa esto? lineamiento G- CGGTTG GTCGGTG Objetivo: construir un algoritmo que determine la mejor alineación global entre dos secuencias (que pueden tener distinta longitud). signamos valores a las coincidencias, a las diferencias y a los gaps. (Las transparencias que siguen sobre este tema, fueron preparadas por alumnos de la materia Biología Computacional, ver página web).
22 Scores Ejemplo T S G CGGTTG GTCGGTG match = + mismatch = gap penalty = -2 Score(T, S) = 9 x + x () + x (-2) = 6
23 lgoritmo de Programación dinámica Needleman & Wunsch (970) Encuentra el mejor scoring para un alineamiento global de dos secuencias partir de allí se determina un alineamiento que tiene ese score óptimo. De acuerdo a los parámetros elegidos la alineación óptima puede variar.
24 Se quiere alinear las secuencias S y T. Sea n el tamaño de S y m el de T. Hay n+ posibles prefijos de S y m+ posibles prefijos de T (incluyendo el string vacío). Se genera una matriz F de (n+)x(m+) elementos. El elemento F(i, j) tendrá la mejor similitud entre las subsecuencias S[...i] y T[...j].
25 Dadas las secuencias: S = C T = GC G C C
26 Cálculo de la similitud óptima F(i,j) F(i,j) F(i,j) F(i, j) F(i,, j)= max F(i, j)+ j )+p(i,j) F(i, j)-w F(i,, j) j )-w w=penalización del Gap
27 Llenado de la Matriz Se llena la matriz la primera fila y la primera columna con múltiplos de la penalidad por espacio. Se llenan los elementos interiores F[i,j] = max F[i, j] + g F[i, j] + p(i,j) F[i, j] + g g = penalidad por espacio, p(i,j) = valor del matching entre S(i) y T(j) Sigue cualquier orden que permita tener los valores F[i, j- ], F[i, j], F[i, j]. Como fila por fila ( de izquierda a derecha) o columna por columna (de arriba hacia abajo).
28 lgoritmo n = long(s) m = long(t) Para i = 0 hasta n hacer F[i, 0] = i g Para i = 0, m hacer F[0, i] = i g Para i =, n hacer Return F Para j =, m hacer F[i, j] = max (F[i, j] + g, F[i, j] + p(i,j), F[i, j] + g)
29 Inicio de la matriz: G C 0-2 C
30 Inicio de la matriz: G C G C C C
31 G C C -8
32 G C C -8
33 G C ??? -2 F(i,, j)= max F(i, j)+ j )+s(i,j) F(i, j)-w F(i,, j) j )-w -4-6 C -8
34 G C F(i,, j)= max F(i, j)+ j )+s(i,j) F(i, j)-w F(i,, j) j )-w -4-6 C -8
35 G C F(i,, j)= max F(i, j)+ j )+s(i,j) F(i, j)-w F(i,, j) j )-w -4 G -6 C -8
36 G C F(i,, j)= max F(i, j)+ j )+s(i,j) F(i, j)-w F(i,, j) j )-w C score óptimo global
37 Tenemos el valor de la similitud entre las secuencias. G C hora necesitamos reconstruir el alineamiento C
38 Determinación del alineamiento óptimo Se comienza desde el valor de F[n,m] y se realiza el camino inverso hasta llegar al valor F[0,0]. Por cada valor F[i,j] se testea si provino de F[i, j] + p(i,j) o F[i, j] g o F[i, j] g.
39 Hay que tomar la última coincidencia del alineamiento y comenzar a buscar un camino hacia atrás s que maximice la función,, es decir siguiendo los valores más m s altos. Puede haber empates. En ese caso cualquier camino que se tome conducirá a la formación n de un alineamiento de score óptimo.
40 G C C -3 G C Máxima preferencia C
41 G C C G C C
42 lgoritmo de programación dinámica para el problema de la mochila Trabajaremos con la siguiente versión del problema de la mochila. Problema P(n, k): dado un entero k y n items i de diferentes tamaños k i, encontrar un subconjunto de los items tal que sumen exactamente K o determinar que no existe tal conjunto. Cómo se expresa el principio de optimalidad acá?.
43 lgoritmo knapsack Input: S un array con los tamaños de cada item y K. Output: Un arreglo de dos dimensiones tal que P[i,k].exist = true si existe una solución con los primeros i elementos para una mochila de tamaño k y P[i,k].belong = true si el elemento i pertenece a esa solución.
44 lgoritmo Empezar P[0,0] exist = true para k =,K hacer P[0,k].exist = false para i =,n hacer para k = 0,K hacer P[i,k]. exist = false if P[i,k]. exist then P[i,k]. exist = true P[i,k]. belong = false else if k-s[i] 0 if P[i,k-S[i]]. exist then P[i,k]. exist = true P[i,k]. belong = true end
45 Ejemplo: aplicar el algoritmo anterior a 4 items de tamaño 2,3,5 y 6 tamaños de la mochila desde 2 a 6. k I O I - I O O - O - I I - I O O - O I O O I O I - I I - I Referencias de la tabla: I : se encontró una solución que contiene este item O: se encontró una solución sin este item - : no hay solución hasta el momento (si este símbolo aparece en la última línea quiere decir que no hay solución para este tamaño de mochila)
46 Ejercicio: Pensar un algoritmo de programación dinámica con ideas similares a este para el problema de la mochila más general, es decir cuando queremos resolver sujeto a que Max Σ j c j x j Σ j a j x j b x j {0,}
47 Subsecuencia creciente más larga Determinar la subsecuencia creciente más larga de una sucesión de números. Ejemplo: S = { 9,5,2,8,7,3,,6,4) Las subsecuencias más largas son {2,3,4} o {2,3,6 } Para construir un algoritmo de programación dinámica definimos: l i = longitud de la secuencia creciente más larga que termina con el número s i p i = predecesor de s i en la secuencia creciente más larga que termina con el número s i Vale el principio de optimalidad en este caso?. Cómo se expresaría?.
48 Relación de recurrencia: l 0 = 0 l i = max j<i l j +, con s j < s i La solución al problema la da max i n l i
49 sucesión longitud predecesor Complejidad? O(n 2 ) ( se podría implementar en O(nlogn)) Cuál es la complejidad espacial?. Cómo hacemos para tener también la sucesión y no sólo la longitud?.
50 rboles de búsqueda óptimos árbol binario de búsqueda: cada nodo contiene una clave, y el valor contenido en cada nodo interno es mayor o igual (numérica o lexicográficamente) que él de sus descendientes por la rama izquierda y menor o igual que los de la derecha. Cuántos árboles binarios de búsqueda distintos puede haber con un número dado n de palabras código (o clave)?. Cómo podemos determinar el árbol binario que minimiza el número promedio de comparaciones necesarias para encontrar una clave.
51 Supongamos que tenemos un conjunto c < c 2 <..< c n de claves con probabilidad p i de ser buscadas. Si la clave c i está en el nivel d i entonces hacen falta d i + comparaciones para encontrarla. Suponemos p i = Entonces para un árbol dado la cantidad de comparaciones que tenemos que hacer en media para buscar una clave es C = i p i (d i + )
52 Dado un conjunto de claves y sus probabilidades queremos construir un árbol que minimice esta función, usando programación dinámica. Se cumple el principio de optimalidad?. en un árbol óptimo todos sus subárboles son óptimos para las claves que contienen Ejercicio: pensar una forma de determinar un árbol óptimo usando programación dinámica. Hay otros métodos para resolver este problema (lgoritmo de Huffman)
53 Relación de recurrencia? Sea: m ij = j k= i p k (probabilidad de que una clave esté en la sucesión c i,c i+, c j ) C ij número de comparaciones promedio que se hacen en un subárbol óptimo que contiene las claves c i,c i+, c j, cuando buscamos en el árbol completo. C ij = 0 para j = i C k ij número de comparaciones promedio en un subárbol que contiene las claves c i,c i+, c j, y tiene a la clave k en la raíz. (siempre pensando que buscamos una clave en todo el árbol)
54 Si la clave k es la raíz de ese subárbol podemos calcular: C k ij = m ij + C i,k + C k+,j o sea dado un subárbol con raíz k: la probabilidad de que la clave buscada se una de las del subárbol o sea alguna de las c i,c i+, c j es m ij una comparación se hace con c k y el resto en el árbol derecho o en el árbol izquierdo Y si queremos que el subárbol sea optimo la raíz tiene que ser elegida de modo a minimizar C ij = m ij + min i k j {C i,k + C k+,j }
55 Ejemplo: i p i Calculamos la matriz de los m ij
56 partir de esto podemos calcular los C ij usando la fórmula de recurrencia y obtener el mínimo número de comparaciones promedio necesarias del árbol óptimo Cómo hacemos para determinar el árbol óptimo?
57 La técnica de Programación Dinámica se aplica también a problemas con variables continuas ( los ejemplos que vimos acá fueron todos con variables discretas). En el caso de variables continuas puede ser necesario resolver en el marco de las ecuaciones de recurrencia, problemas de maximización o minimización continuos, usando las herramientas habituales del cálculo u otras.
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
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
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
Programación dinámica p. 1
Técnicas de diseño de algoritmos Programación dinámica Dra. Elisa Schaeffer [email protected] PISIS / FIME / UANL Programación dinámica p. 1 Programación dinámica En programación dinámica, uno
Programación Dinámica
Programación Dinámica Adaptado de Algorithm Design Goodrich and Tamassia Programación Dinámica 1 Calculando la serie de Fibonacci 1,1,2,3,5,8,13,21,. fib(n) = 1 si n = 0,1 fib(n 1) + fib(n 2) o.c. Programación
Programación Dinámica 1
Programación Dinámica 1 El método de programación dinámica sirve para resolver problemas combinando las soluciones de subproblemas. Normalmente es usada para resolver problemas de optimización. Al construir
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,
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 =
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:
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
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
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: [email protected] Transparencias preparadas
Teoría de grafos y optimización en redes
Teoría de grafos y optimización en redes José María Ferrer Caja Universidad Pontificia Comillas Definiciones básicas Grafo: Conjunto de nodos (o vértices) unidos por aristas G = (V,E) Ejemplo V = {,,,,
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
1. Método general. 2. Análisis de tiempos de ejecución. 3. Ejemplos de aplicación Problema de las 8 reinas Problema de la mochila 0/1.
Backtracking. Método general. 2. Análisis de tiempos de ejecución. 3. Ejemplos de aplicación. 3.. Problema de las 8 reinas. 3.2. Problema de la mochila 0/. Método general El backtracking (método de retroceso
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,
Análisis y Diseño de Algoritmos
Análisis y Diseño de Algoritmos Algoritmos Voraces DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Introducción Siempre toman la mejor opción en cada momento (punto de decisión del algoritmo)
Diseño y Análisis de Algoritmos
1. Recursividad 2. "Dividir para Reinar" 3. Recursividad y Tabulación (Programación Dinámica) 4. Métodos Matemáticos Funciones discretas Notación O Ecuaciones de recurrencia 5. Casos de Estudio Breve descripción
Análisis de algoritmos
Tema 09: Programación dinámica M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom 1 Contenido Introducción Programación dinámica Enfoques de
Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande
Complejidad computacional Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Algoritmos - clase 10 Introducción a la complejidad computacional y
Similitud de Secuencias: de un Par a Todas contra Todas
Similitud de Secuencias: de un Par a Todas contra Todas Ricardo Baeza-Yates Centro de Investigación de la Web Depto. de Ciencias de la Computación Universidad de Chile [email protected] Resumen Similitud
Figura 1: Esquema de las tablas simplex de inicio y general.
RELACIONES PRIMAL-DUAL Los cambios que se hacen en el modelo original de programación lineal afectan a los elementos de la tabla óptima actual el que se tenga en el momento, que a su vez puede afectar
Algoritmos para determinar Caminos Mínimos en Grafos
Problemas de camino mínimo Algoritmos para determinar Caminos Mínimos en Grafos Algoritmos y Estructuras de Datos III DC, FCEN, UBA, C 202 Problemas de camino mínimo Dado un grafo orientado G = (V, E)
Recurrencias. Si a 0, a 1, a 2, es una progresión geométrica, entonces a 1 /a 0 = a 2 /a 1 = = a n+1 /a n = r, la razón común.
Recurrencias Def. Progresión geométrica. Es una sucesión infinita de números, como: 5, 45, 135, donde el cociente de cualquier término entre su predecesor es una constante, llamada razón común. (Para nuestro
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
Matemáticas Discretas L. Enrique Sucar INAOE. Teoría de Grafos. Problema de los puentes de Königsberg [Euler]
Matemáticas Discretas L. Enrique Sucar INAOE Teoría de Grafos Problema de los puentes de Königsberg [Euler] Teoría de Grafos Definición y terminología Tipos de grafos Trayectorias y circuitos Isomorfismo
Algoritmos de búsqueda exhaustiva
Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 31 de enero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de búsqueda exhaustiva 31 de enero de 2018 1 / 22 1 Algoritmos de búsqueda exhaustiva
95.12 Algoritmos y Programación II Práctica 7: árboles
Notas preliminares 95.12 Algoritmos y Programación II Práctica 7: árboles El objetivo de esta práctica es introducir distintas clases de estructuras de datos arbóreas y algoritmos para manipularlas. Los
Algoritmos para strings (3) Bioinformática, Elvira Mayordomo
Algoritmos para strings (3) Bioinformática, 17-2-16 Elvira Mayordomo Hoy Otras aplicaciones de árboles sufijos El problema del substring Substring común más largo Solapes (Overlaps) Repeticiones (exactas
Análisis de algoritmos
Tema 09: Programación dinámica Solicitado: Ejercicios 06: Programación dinámica de Fibonacci y Coeficientes Binomiales M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom
Geometría. Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires. Training Camp 2012
Geometría Leopoldo Taravilse Francisco Roslán Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Training Camp 2012 Leopoldo Taravilse, Francisco Roslán (UBA) Geometría TC 2012 1 / 30
Algoritmos glotones. mat-151
Algoritmos glotones (greedy) mat-151 Alonso Ramirez Manzanares Computación y Algoritmos 04.06.2009 Algoritmos glotones Algoritmos utilizados en problemas de optimización. Estos algoritmos siguen típicamente
Triangulación de polígonos
Computación Geométrica Triangulación de polígonos Algoritmos iniciales Introducción a la Geometría Computacional Copyright 2010-2011 Universidad de Alicante 1 Índice Historia Conceptos previos Triangulación
Semana 07[1/21] Sumatorias. 12 de abril de Sumatorias
Semana 07[/] de abril de 007 Semana 07[/] Progresiones aritméticas Progresión aritmética Es una sumatoria del tipo (A + d) es decir, donde a A + d, para valores A, d Ê. Utilizando las propiedades de sumatoria,
Números de Catalan Armando Alcalá Vallejo Instituto de Física y Mamtemáticas (953) Ext. 500
Números de Catalan Armando Alcalá Vallejo Instituto de Física y Mamtemáticas (953) 53 2 03 99 Ext. 500 [email protected] Estos números, los cuales son la solución de varios problemas en diferentes
Programación Dinámica
Programación Dinámica Agustín Santiago Gutiérrez, Juan Cruz Piñero Facultad de Ciencias Exactas y Naturales - Universidad de Buenos Aires Facultad de Informática - Universidad Nacional del Comahue Training
Programación Dinámica
Leopoldo Taravilse Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Training Camp 2012 Leopoldo Taravilse (UBA) TC 2012 1 / 34 Contenidos 1 Recursión Principio de Optimalidad Ejemplos
Parte de Algoritmos de la asignatura de Programación Master de Bioinformática. Búsqueda exhaustiva
Parte de Algoritmos de la asignatura de Programación Master de Bioinformática Búsqueda exhaustiva Web asignatura: http://dis.um.es/~domingo/algbio.html E-mail profesor: [email protected] Transparencias preparadas
Estratégias generales de análisis y diseño de algorítmos
Estratégias generales de análisis y diseño de algorítmos comp-420 Ayudantes Hugo Eduardo Dueñas [email protected] (ordinaria) Alberto José Ramirez Valadez [email protected] (ordinaria) Mandar tareas (programas)
Formulación del problema de la ruta más corta en programación lineal
Formulación del problema de la ruta más corta en programación lineal En esta sección se describen dos formulaciones de programación lineal para el problema de la ruta más corta. Las formulaciones son generales,
Algoritmos pseudo-polinomiales
Análisis de Algoritmos Algoritmos pseudo-polinomiales Dra. Elisa Schaeffer [email protected] PISIS / FIME / UANL Algoritmos pseudo-polinomiales p. 1 HAMILTON PATH es NP-completo La reducción es
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
El número asintótico de cuadrados mágicos de primos
El número asintótico de cuadrados mágicos de primos Carlos Vinuesa del Río Instituto de Ciencias Matemáticas Congreso de Jóvenes Investigadores, RSME Sevilla, 19 de septiembre de 2013 Progresiones y cuadrados
Técnicas de diseño de algoritmos Programación dinámica
Técnicas de diseño de algoritmos Programación dinámica Luis Javier Rodríguez Fuentes Amparo Varona Fernández Departamento de Electricidad y Electrónica Facultad de Ciencia y Tecnología, UPV/EHU [email protected]
GUIA DE TRABAJO Materia: Matemáticas. Tema: Geometría 3- Explorando el polígono. Fecha: Profesor: Fernando Viso
GUIA DE TRABAJO Materia: Matemáticas. Tema: Geometría 3- Explorando el polígono. Fecha: Profesor: Fernando Viso Nombre del alumno: Sección del alumno: CONDICIONES: Marco teórico: Trabajo individual. Sin
Introducción a la Geometría Computacional. Análisis de Algoritmos
Introducción a la Geometría Computacional Análisis de Algoritmos Geometría Computacional La Geometría Computacional surgió a finales de los 70s del área de diseño y análisis de algoritmos. Estudio sistemático
Descomposicion en Polígonos Monótonos. comp-420
Descomposicion en Polígonos Monótonos comp-420 Triangulación de Polígonos Teorema 1: Todo polígono simple admite una triangulación, y cualquier triangulación de un polígono simple con n vértices consta
CAPÍTULO 4 PROGRAMACIÓN LINEAL ENTERA
CAPÍTULO 4 PROGRAMACIÓN LINEAL ENTERA Programación Lineal Entera Es una técnica que permite modelar y resolver problemas cuya característica principal es que el conjunto de soluciones factibles es discreto.
Relaciones. Estructuras Discretas. Relaciones. Relaciones en un Conjunto. Propiedades de Relaciones en A Reflexividad
Estructuras Discretas Relaciones Definición: relación Relaciones Claudio Lobos, Jocelyn Simmonds clobos,[email protected] Universidad Técnica Federico Santa María Estructuras Discretas INF 152 Sean
Análisis de Datos. Combinación de clasificadores. Profesor: Dr. Wilfrido Gómez Flores
Análisis de Datos Combinación de clasificadores Profesor: Dr. Wilfrido Gómez Flores 1 Introducción Diversos algoritmos de clasificación están limitados a resolver problemas binarios, es decir, con dos
Jueves, 30 de abril. Ejemplo de recursión. Ejemplo de PD. Ejemplo de programación dinámica. Programación dinámica
.0 Jueves, 0 de abril Programación dinámica. Recursión. Principio de optimalidad. Entregas: material de clase. Programación dinámica Transforma un problema de optimización complejo en una secuencia problemas
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
Algoritmos de Planos de Corte
Algoritmos de Planos de Corte Problema: max {cx / x X} con X = {x / Ax b, x Z n + } Proposición: conv (X) es un poliedro que puede entonces escribirse como conv (X) = {x / Ax b, x 0} Lo mismo ocurre para
Repaso de aritmética para ICPC
Fidel I. Schaposnik (UNLP) - [email protected] 15 de julio de 2013 Contenidos Números naturales Cálculo de números primos Factorización, ϕ(n) de Euler y cantidad de divisores de n Contenidos Números naturales
Arreglos. Algoritmos y Estructuras de Datos I. Arreglos en C++ Arreglos y listas
Arreglos Algoritmos y Estructuras de Datos I Primer cuatrimestre 2007 Teórica de imperativo 3 Algoritmos de búsqueda secuencias de una cantidad fija de variables del mismo tipo se declaran con un nombre,,
Algoritmos para strings. Bioinformática Elvira Mayordomo
Algoritmos para strings Bioinformática 12-2-16 Elvira Mayordomo Hoy Notación básica para strings El problema de string matching: String matching automata Boyer-Moore Árboles de sufijos (con otras aplicaciones)
ESTRUCTURA DE DATOS. ABB Arboles de Búsqueda Binaria
ESTRUCTURA DE DATOS ABB Arboles de Búsqueda Binaria ÁRBOLES BINARIOS Hasta ahora nos hemos dedicado a estudiar TAD que de una u otra forma eran de naturaleza lineal, o unidimensional. En los tipos abstractos
Métodos de alineamiento. Bioinformática, Elvira Mayordomo
Métodos de alineamiento Bioinformática, 24-2-16 Elvira Mayordomo Motivación: 2 razones para comparar secuencias biológicas 1. Los errores y omisiones en los datos biológicos producidos en la extracción
La segunda observación permite reformular el problema de una manera más simple:
Problema partición Enunciado A: dados N enteros positivos, N>1, decir si estos pueden dividirse en dos grupos cuya suma sea la misma. Ejemplo: si el conjunto es {1,2,3,9,2,11,4}, una forma de partirlo
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..
Formulando con modelos lineales enteros
Universidad de Chile 19 de marzo de 2012 Contenidos 1 Forma de un problema Lineal Entero 2 Modelando con variables binarias 3 Tipos de Problemas Forma General de un MILP Problema de optimización lineal
Intersección de Segmentos de Recta. Geometría Computacional, MAT-125
Intersección de Segmentos de Recta Geometría Computacional, MAT-125 Dados dos conjuntos de segmentos de recta, calcular todas las intersecciones entre los segmentos de un conjunto y los segmentos del otro
Métodos de alineamiento (3) Bioinformática, Elvira Mayordomo
Métodos de alineamiento (3) Bioinformática, 7-3-16 Elvira Mayordomo Hoy veremos Multialineamiento (MSA): Un problema NP-completo Algoritmo aproximado para Multialineamiento: el método de la estrella Métodos
Geometría Computacional. Dr. Antonio Marín Hernández
Geometría Computacional Dr. Antonio Marín Hernández Centro de Investigación en Inteligencia Artificial Universidad Veracruzana [email protected] www.uv.mx/anmarin Contenido Introducción Intersección de segmentos
Introducción a la programación lineal
Introducción a la programación lineal La programación lineal se aplica a modelos de optimización en los que las funciones objetivo y restricción son estrictamente lineales. La técnica se aplica en una
El problema del agente viajero
CO- (F0) //00 El problema del agente viajero Un vendedor tiene que visitar n + ciudades, cada una exactamente una vez. La distancia entre cada par de ciudades viene dada por d ij (en general d ij d ji
ÁLGEBRA LINEAL I Algunas soluciones a la Práctica 3
ÁLGEBRA LINEAL I Algunas soluciones a la Práctica 3 Matrices y determinantes (Curso 2011 2012) 2. Sea A una matriz diagonal n n y supongamos que todos los elementos de su diagonal son distintos entre sí.
Problema ejemplo. El Arte de la Programación Rápida. Backtracking
El Arte de la Programación Rápida Backtracking Problema ejemplo Vamos a analizar la técnica de backtracking a través de un ejemplo. El problema de las 8 reinas Cómo ubicar 8 reinas en un tablero sin que
INTRODUCCIÓN AL ANÁLISIS DE DATOS ORIENTACIONES (TEMA Nº 7)
TEMA Nº 7 DISTRIBUCIONES CONTINUAS DE PROBABILIDAD OBJETIVOS DE APRENDIZAJE: Conocer las características de la distribución normal como distribución de probabilidad de una variable y la aproximación de
Ordenamiento (Sorting)
Ordenamiento (Sorting) El problema del ordenamiento Ordenar: arreglo[α] arreglo[α], donde α es un tipo tal que está definida la relación < α Uno de los problemas más clásicos, útiles y estudiados de la
Tema 3: El Método Simplex. Algoritmo de las Dos Fases.
Tema 3: El Método Simplex Algoritmo de las Dos Fases 31 Motivación Gráfica del método Simplex 32 El método Simplex 33 El método Simplex en Formato Tabla 34 Casos especiales en la aplicación del algoritmo
El determinante de una matriz se escribe como. Para una matriz, el valor se calcula como:
Materia: Matemática de 5to Tema: Definición de Determinantes Marco Teórico Un factor determinante es un número calculado a partir de las entradas de una matriz cuadrada. Tiene muchas propiedades e interpretaciones
Análisis de algoritmos
Tema 08: Divide y vencerás (DyV) M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom 1 Contenido Introducción Divide y vencerás Observaciones
Ejercicios tipo final
Ejercicios tipo final En la primera parte pondremos los enunciados de los ejercicios, en la segunda algunas sugerencias y en la tercera se encuentran las resoluciones 1 Ejercicios 1 Si A R 3x2, B R 2x1
Problemas de programación entera: El método Ramifica y Acota. Investigación Operativa, Grado en Estadística y Empresa, 2011/12
Problemas de programación entera: El método Ramifica y Acota Prof. José Niño Mora Investigación Operativa, Grado en Estadística y Empresa, 2011/12 Esquema La estrategia Divide y vencerás Árboles de enumeración
Método de diferencias finitas para ecuaciones diferenciales parciales elípticas. (Parte II)
Método de diferencias finitas para ecuaciones diferenciales parciales elípticas (Parte II) Métodos numéricos para sistemas lineales Solución numérica de EDPs requiere resolver sistemas de ecuaciones lineales
Tema 3. Análisis de costes
Tema 3. Análisis de costes 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
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
Forma estándar de un PPL con m restricciones y n variables. (b 0)
Forma estándar de un PPL con m restricciones y n variables Maximizar (minimizar) Z = c 1 x 1 + c 2 x 2 +... + c n x n a 11 x 1 + a 12 x 2 +... + a 1n x n = b 1 a 21 x 1 +a 22 x 2 +... + a 2n x n = b 2...
Programación Dinámica
, Algoritmos y Programación 6 de Abril de 2010 Alejandro Deymonnaz Definiciones Divide and Conquer Deiniciones previas Problema recursivo Un problema recursivo es un problema que se puede resolver en base
El método simplex 1. 1 Forma estándar y cambios en el modelo. 2 Definiciones. 3 Puntos extremos y soluciones factibles básicas. 4 El método simplex.
El método simplex Forma estándar y cambios en el modelo. Definiciones. Puntos extremos y soluciones factibles básicas. 4 El método simplex. Definiciones y notación. Teoremas. Solución factible básica inicial.
1 ÁLGEBRA DE MATRICES
1 ÁLGEBRA DE MATRICES 1.1 DEFINICIONES Las matrices son tablas numéricas rectangulares. Se dice que una matriz es de dimensión m n si tiene m filas y n columnas. Cada elemento de una matriz se designa
ÁLGEBRA Ejercicios no resueltos de la Práctica 3
ÁLGEBRA Ejercicios no resueltos de la Práctica 3 Matrices y determinantes (Curso 2007 2008) 15. Encontrar la (única) respuesta correcta, de entre las indicadas, a las siguientes cuestiones: (b) En una
Algorítmica y Lenguajes de Programación. Eficiencia y notación asintótica (i)
Algorítmica y Lenguajes de Programación Eficiencia y notación asintótica (i) Eficiencia y notación asintótica. Introducción Para resolver un problema pueden existir varios algoritmos. Por tanto, es lógico
Alineamiento múltiple de secuencias
Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 11 de junio del 2013 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Alineamiento múltiple de secuencias 11 de junio del 2013 1 / 39 1 Alineamiento múltiple de
Flujos de redes (Network Flows NF)
Fluos de redes (Network Flows NF). Terminología. Árbol generador mínimo. Camino mínimo 4. Fluo máximo 5. Fluo de coste mínimo TEORÍA DE GRAFOS. OPTIMIZACIÓN EN REDES Terminología Red o grafo (G) Nodos
Análisis de Sensibilidad de los Resultados
Pontificia Universidad Católica Escuela de Ingeniería Departamento de Ingeniería Industrial y de Sistemas Clase 22 Análisis de Sensibilidad de los Resultados ICS 02 Optimización Profesor : Claudio Seebach
RESOLUCIÓN DE SISTEMAS LINEALES
Contenido 1 Métodos de Solución Contenido Métodos de Solución 1 Métodos de Solución Desarrollamos el algoritmo de sustitución regresiva, con el que podremos resolver un sistema de ecuaciones lineales cuya
Tema 3 Optimización lineal. Algoritmo del simplex
Tema 3 Optimización lineal. Algoritmo del simplex José R. Berrendero Departamento de Matemáticas Universidad Autónoma de Madrid Contenidos del tema 3 Teorema fundamental de la programación lineal. Algoritmo
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.
Coloreo de vértices Definiciones: Coloreo de Grafos. Cotas para χ Proposición: Si H es un subgrafo de G entonces χ(h) χ(g).
Coloreo de vértices Definiciones: Coloreo de Grafos Algoritmos y Estructuras de Datos III Un coloreo (válido) de los vértices de un grafo G = (V, X ) es una asignación f : V C, tal que f (v) f (u) (u,
Universidad Nacional de Ingeniería Facultad de Ciencias. Física Computacional CC063. Algebra Lineal. Prof: J. Solano 2012-I
Universidad Nacional de Ingeniería Facultad de Ciencias Física Computacional CC063 Algebra Lineal Prof: J. Solano 2012-I Introduccion Aqui trabjaremos con operaciones basicas con matrices, tales como solucion
Comparación de secuencias
Comparación de secuencias Por qué nos interesa comparar secuencias de ADN o proteínas de distintos orígenes? Cómo se pueden alinear secuencias? Alineamiento de secuencias Dos tipos de alineamientos Alineamiento
