Análisis de algoritmos

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

Download "Análisis de algoritmos"

Transcripción

1 Tema 09: Programación dinámica M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom 1

2 Contenido Introducción Programación dinámica Enfoques de la programación dinámica Principio de optimalidad Diseño de un algoritmo de programación dinámica Ejemplos Fibonacci Cálculo del coeficiente binomial 2

3 Introducción La técnica divide y vencerás señala que es posible dividir un problema en subproblemas y combinar las soluciones para resolver el problema original. En ocasiones resolver subproblemas nos lleva a considerar subproblemas idénticos. Si aprovechamos la duplicación, resolviendo cada problema una sola vez, guardando la solución para su uso posterior entonces tendremos un algoritmo más eficiente. 3

4 La idea de la programación dinámica es evitar repetición de cálculos. La base de la programación dinámica es el razonamiento inductivo: Como resolver un problema combinando soluciones para problemas más pequeños? Se resuelven primero los subproblemas más pequeños y por tanto más simples. Combinando las soluciones se obtienen las soluciones de ejemplares sucesivamente más grandes hasta llegar al ejemplar original. 4

5 Programación dinámica La programación dinámica es un método para reducir el tiempo de ejecución de un algoritmo mediante la utilización de subproblemas superpuestos y subestructuras óptimas. Una subestructura óptima significa que se pueden usar soluciones óptimas de subproblemas para encontrar la solución óptima del problema en su conjunto. Un problema tiene subproblemas superpuestos si se usa un mismo subproblema para resolver diferentes problemas mayores. 5

6 Los algoritmos divide y vencerás están dentro de los métodos descendentes. Empezar con el problema original y descomponerlo en pasos sucesivos en problemas de menor tamaño. La programación dinámica por el contrario, es un método ascendente: Resolver primero los problemas pequeños (guardando las soluciones) y después combinarlas para resolver problemas más grandes. La programación dinámica hace uso de: Subproblemas superpuestos Subestructuras óptimas Memoizacion 6

7 En general, se pueden resolver problemas con subestructuras óptimas siguiendo estos tres pasos: 1. Dividir el problema en subproblemas más pequeños. 2. Resolver estos problemas de manera óptima usando este proceso de tres pasos recursivamente. 3. Usar estas soluciones óptimas para construir una solución óptima al problema original. Los subproblemas se resuelven a su vez dividiéndolos en subproblemas más pequeños hasta que se alcance el caso fácil, donde la solución al problema es trivial. 7

8 Ejemplo: Fibonacci (Problemas Ο(c n ) 8

9 Si se llama a fib(5), se produce un árbol de llamadas que contendrá funciones con los mismos parámetros varias veces: 1. fib(5) 2. fib(4) + fib(3) 3. (fib(3) + fib(2)) + (fib(2) + fib(1)) 4. ((fib(2) + fib(1)) + (fib(1) + fib(0))) + ((fib(1) + fib(0)) + fib(1)) 5. (((fib(1) + fib(0)) + fib(1)) + (fib(1) + fib(0))) + ((fib(1) + fib(0)) + fib(1)) 9

10 Cuando se llega en el árbol a los casos base (señalados en la imagen) evidentemente las llamadas a la función se detienen. Pero también podemos notar que existen varios casos en donde se llama recursivamente a números que ya fueron calculados, por ejemplo el 3. Entonces para subsecuentes llamadas la cantidad de operaciones a calcular se volverían exponenciales y la complejidad aproximada sería O(c n ) lo cuál para un n=20 ya es mucho que calcular (O( )n 15,127 llamadas a la función). 10

11 Originalmente, el término de programación dinámica se refería a la resolución de ciertos problemas y operaciones fuera del ámbito de la Ingeniería Informática, al igual que hacía la programación lineal. Aquel contexto no tiene relación con la programación en absoluto; el nombre es una coincidencia. El término también lo usó en los años 40 Richard Bellman, un matemático norteamericano, para describir el proceso de resolución de problemas donde hace falta calcular la mejor solución consecutivamente. Algunos lenguajes de programación funcionales, sobre todo Haskell, pueden usar la memorización automáticamente sobre funciones con un conjunto concreto de argumentos, para acelerar su proceso de evaluación. Esto sólo es posible en funciones que no tengan efectos secundarios. 11

12 Memoizacion Los subproblemas superpuestos provocan resolver varias veces el mismo problema, ya que la solución de un subproblema requiere calcular soluciones que otro subproblema también tenga que calcular. Perder tiempo calculando varias veces la solución al mismo subproblema se puede evitar guardando las soluciones que ya hemos calculado. Entonces, si necesitamos resolver el mismo problema más tarde, podemos obtener la solución de la lista de soluciones calculadas y reutilizarla. Este acercamiento al problema se llama memoización (Memoization en inglés) o memorización se diferencia de 'memorización' puesto que el término ya era usado en matemáticas). 12

13 Se puede resolver el problema, utilizando el enfoque de memorización (guardar los valores que ya han sido calculados para utilizarlos posteriormente). Así, rellenaríamos una tabla con los resultados de los distintos subproblemas, para reutilizarlos cuando haga falta en lugar de volver a calcularlos. La tabla resultante sería una tabla unidimensional con los resultados desde 0 hasta n. 13

14 En programación dinámica comúnmente se utilizan tablas de resultados conocidos que se va generando a medida que se resuelven los subcasos. Function Fibonacci (n:int): int; if (n=0) return 0; else if (n=1) return 1; else if (Fib[n]!=NONE) return Fib[n]; else Fib[n]=Fibonacci(n-1)+fibonacci(n-2); return Fib[n]; f(4) f(3) f(2) f(2) f(1) f(1) f(0) f(1) f(0) 14 f(4) f(3) f(2) f(1) f(0)

15 Subestructuras óptimas Donde tiene mayor aplicación la Programación Dinámica es en la resolución de problemas de optimización. En este tipo de problemas se pueden presentar distintas soluciones, cada una con un valor, y lo que se desea es encontrar la solución de valor óptimo (máximo o mínimo). La solución de problemas mediante esta técnica se basa en el llamado principio de óptimo enunciado por Bellman en 1957 y que dice: En una secuencia de decisiones óptima toda subsecuencia ha de ser también óptima. 15

16 Enfoques de la programación dinámica Top-down: El problema se divide en subproblemas, y estos se resuelven recordando las soluciones por si fueran necesarias nuevamente. Es una combinación de memoización y recursión. Bottom-up: Todos los problemas que puedan ser necesarios se resuelven de antemano y después se usan para resolver las soluciones a problemas mayores. Este enfoque es ligeramente mejor en consumo de espacio y llamadas a funciones, pero a veces resulta poco intuitivo encontrar todos los subproblemas necesarios para resolver un problema dado. 16

17 Fibonacci utilizando (Programación dinámica -Top-down) int tabla[n]; // tabla {-1,-1,,-1} int fibonacci(int n) { if (n<2) return n; if(tabla[n-1] == -1) tabla[n-1] = fibonacci(n-1); if(tabla[n-2] == -1) tabla[n-2] = fibonacci(n-2); tabla[n] = tabla[n-1] + tabla[n-2]; return tabla[n]; } Ο(n) 17

18 Fibonacci utilizando (Programación dinámica - Buttom-up) int fibonacci(int n) { int i; if (n<2) { return n; } else { tabla[0] = 0; tabla[1] = 1; for(i = 2; i < n; i++) tabla[i] = tabla[i-1] + tabla[i-2]; } return tabla[n-1]; } Ο(n) 18

19 Principio de optimalidad Cuando hablamos de optimizar nos referimos a buscar alguna de las mejores soluciones (solución optima) de entre muchas alternativas posibles. Dicho proceso de optimización puede ser visto como una secuencia de decisiones que nos proporcionan la solución optima. En este caso sigue siendo posible el ir tomando decisiones elementales, en la confianza de que la combinación de ellas seguirá siendo óptima, pero será entonces necesario explorar muchas secuencias de decisiones para dar con la correcta, siendo aquí donde interviene la programación dinámica. 19

20 En una secuencia de decisiones óptima toda subsecuencia ha de ser también óptima Contemplar un problema como una secuencia de decisiones equivale a dividirlo en problemas más pequeños y por lo tanto más fáciles de resolver como hacemos en Divide y Vencerás. La programación dinámica se aplica cuando la subdivisión de un problema conduce a: Una enorme cantidad de problemas. Problemas cuyas soluciones parciales se solapan. Grupos de problemas de muy distinta complejidad. 20

21 Diseño de un algoritmo de programación dinámica Para que un problema pueda ser abordado por esta técnica ha de cumplir dos condiciones: 1. La solución al problema ha de ser alcanzada a través de una secuencia de decisiones, una en cada etapa. 2. Dicha secuencia de decisiones ha de cumplir el principio de optimalizad. 21

22 El diseño de un algoritmo de Programación Dinámica consta de los siguientes pasos: 1. Planteamiento de la solución como una sucesión de decisiones y verificación de que ésta cumple el principio de óptimo. 2. Definición recursiva* o iterativa de la solución. 3. Cálculo del valor de la solución óptima mediante una estructura de datos en donde se almacenan soluciones a problemas parciales para reutilizar los cálculos. 4. Construcción de la solución óptima haciendo uso de la información contenida en la estructura de datos. 22

23 Cálculo del coeficiente binomial Los coeficientes binomiales o números combinatorios son una serie de números estudiados en combinatoria que indican el número de formas en que se pueden extraer subconjuntos a partir de un conjunto dado. P.g. Se tiene un conjunto con 6 objetos diferentes {A,B,C,D,E,F}, de los cuales se desea escoger 2 (sin importar el orden de elección). Cuántas formas de elección existen? A B C D E F A,B A,C A,D A,E A,F B,C B,D B,E B,F C,D C,E C,F D,E D,F E,F 23

24 El número de formas de escoger k elementos a partir de un conjunto de n, puede denotarse de varias formas: C n, k, n C k, C 6,2 = 6 C 2 = 6 2 = 15 Los números C(n,k) se conocen como coeficientes binomiales, pero es frecuente referirse a ellos como combinaciones de n en k, o simplemente n en k. n El coeficiente binomial es el número de subconjuntos k de k elementos escogidos de un conjunto con n elementos n k El coeficiente binomial n k está dado por la fórmula n k = n! k! n k! 24

25 Forma recursiva del coeficiente binomial n k = 1 n 1 k 1 + n 1 k 0 si k = 0 o k = n si 0 < k < n en caso contrario Si se desea calcular C(5,3), Cuáles son los casos que se repiten? funcion C(n,k) { Si k = 0 o k = n entonces devolver 1 sino si 0 < k< n devolver C(n-1,k-1) + C(n-1,k) sino devolver 0 } 25

26 Coeficiente binomial (Top-down) int tabla[n] [n]; // tabla[][] {-1,-1,,-1} int coef_bino (int n) { if (k==0 k==n) return 1; else if(k>0&&k<n) { if(tabla[n-1][k-1]==-1) tabla[n-1][k-1]=coef_bino(n-1,k-1); if(tabla[n-1][k]==-1) tabla[n-1][k]=coef_bino(n-1,k); return tabla[n-1][k-1]+tabla[n-1][k]; } else return 0; } 26

27 El algoritmo recursivo que los calcula resulta ser de complejidad exponencial por la repetición de los cálculos que realiza. No obstante, es posible diseñar un algoritmo con un tiempo de ejecución de orden O(nk) basado en la idea del Triángulo de Pascal. Para ello es necesario la creación de una tabla bidimensional en la que ir almacenando los valores intermedios que se utilizan posteriormente. 27

28 Coeficiente binomial (Bottom-up) Se ira construyendo la tabla por filas de arriba hacia abajo y de izquierda a derecha mediante el siguiente algoritmo de complejidad polinómica (Bottom-up). int coef_bino(int n, int k) { int i, j; for(i = 0; i <= n; i++) tabla[i][0] = 1; } for(i = 1; i<= n; i++) tabla[i][1] = i; for(i = 2; i<= k; i++) tabla[i][i] = 1; for(i = 3; i <= n; i++) for(j = 2; j <= i-1; j++) if(j <= k) tabla[i][j] = tabla[i-1][j-1] + tabla[i-1][j]; return tabla[n][k]; 28

29 Resultado Triangulo de Pascal 29

Análisis de algoritmos

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 edfrancom@ipn.mx @edfrancom

Más detalles

Programación Dinámica

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

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

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

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

Tema 5- Diseño Recursivo y. Objetivos Principales. Bibliografía Básica

Tema 5- Diseño Recursivo y. Objetivos Principales. Bibliografía Básica Tema 5- Diseño Recursivo y Eficiente Tema 5- Diseño Recursivo y Eficiente Germán Moltó Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica de Valencia Índice general: 1. Introducción

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

Programación Dinámica

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

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

Programación Dinámica 1

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

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

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 1: Recursividad Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Ejemplos recursivos Recursividad

Más detalles

Algoritmos. Diseño de algoritmos por inducción. Alberto Valderruten. alberto.valderruten@udc.es. Dept. de Computación, Universidade da Coruña

Algoritmos. Diseño de algoritmos por inducción. Alberto Valderruten. alberto.valderruten@udc.es. Dept. de Computación, Universidade da Coruña Divide y Vencerás Diseño de algoritmos por inducción Dept. de Computación, Universidade da Coruña alberto.valderruten@udc.es Contenido Divide y Vencerás 1 Divide y Vencerás 2 Índice Divide y Vencerás 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

Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2

Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2 Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2 Diseño de algoritmos recursivos 1. Dado un vector de enteros de longitud N,

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 10: Árbol binario de búsqueda

Tema 10: Árbol binario de búsqueda Tema 10: Árbol binario de búsqueda M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Árbol binario de

Más detalles

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO. UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO. TRUJILLO Recursividad: La recursividad es una técnica de programación

Más detalles

La recursividad forma parte del repertorio para resolver problemas en Computación y es de los métodos más poderosos y usados.

La recursividad forma parte del repertorio para resolver problemas en Computación y es de los métodos más poderosos y usados. RECURSIVIDAD La recursividad forma parte del repertorio para resolver problemas en Computación y es de los métodos más poderosos y usados. Los algoritmos recursivos ofrecen soluciones estructuradas, modulares

Más detalles

Algoritmos glotones. mat-151

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

Más detalles

Técnicas de diseño de algoritmos Programación dinámica

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 luisjavier.rodriguez@ehu.es

Más detalles

Tema 02: Algoritmia y pseudocódigo

Tema 02: Algoritmia y pseudocódigo M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Pseudocódigo Ejemplo 01 Ejemplo

Más detalles

Jueves, 30 de abril. Ejemplo de recursión. Ejemplo de PD. Ejemplo de programación dinámica. Programación dinámica

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

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 10: Algoritmos ávidos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Introducción Algoritmos ávidos Forma general de un

Más detalles

Programación I Recursividad.

Programación I Recursividad. Programación I Recursividad http://proguno.unsl.edu.ar proguno@unsl.edu.ar Recursividad Técnica de resolución de problemas particulares. La definición de un concepto es recursiva si el concepto es definido

Más detalles

1. PRINCIPIOS BÁSICOS DE PROGRAMACIÓN

1. PRINCIPIOS BÁSICOS DE PROGRAMACIÓN 1. PRINCIPIOS BÁSICOS DE PROGRAMACIÓN Las estructuras de datos bien definidas no son adecuadamente utilizadas si no se realiza una buena programación. La programación estructurada tiene la finalidad de

Más detalles

Tema: Funciones, Procedimientos y Recursividad en C#.

Tema: Funciones, Procedimientos y Recursividad en C#. Tema: Funciones, Procedimientos y Recursividad en C#. Objetivos Programación I, Guía 6 1 Utilizar la sintaxis de las funciones definidas por el usuario (programador) para resolver problemas. Identificar

Más detalles

Algoritmos: Diseño de algoritmos por inducción

Algoritmos: Diseño de algoritmos por inducción Algoritmos: Diseño de algoritmos por inducción Alberto Valderruten LFCIA - Departamento de Computación Facultad de Informática Universidad de A Coruña, España www.lfcia.org/alg www.fi.udc.es Contenido

Más detalles

UAA Sistemas Electrónicos Estructura de Datos Muñoz / Serna

UAA Sistemas Electrónicos Estructura de Datos Muñoz / Serna 2 Recursividad 2.1 Concepto de recursividad Se dice que una función es recursiva cuando dicha función se define en términos de la misma función. Es importante recordar que no todas la funciones pueden

Más detalles

AMBIENTE INTERACTIVO PARA LA VISUALIZACIÓN DE CONCEPTOS ASOCIADOS A LAS TÉCNICAS DE DISEÑO DE ALGORITMOS

AMBIENTE INTERACTIVO PARA LA VISUALIZACIÓN DE CONCEPTOS ASOCIADOS A LAS TÉCNICAS DE DISEÑO DE ALGORITMOS AMBIENTE INTERACTIVO PARA LA VISUALIZACIÓN DE CONCEPTOS ASOCIADOS A LAS TÉCNICAS DE DISEÑO DE ALGORITMOS LIBRO DE PROYECTO PRESENTADO PARA OPTAR AL TÍTULO DE INGENIERO DE SISTEMAS Mauricio Giraldo Acosta

Más detalles

Taller de Programación Dinámica. Definiciones. Caso base. Laboratorio de Algoritmos y Estructuras de Datos III. 10 de Septiembre de 2010

Taller de Programación Dinámica. Definiciones. Caso base. Laboratorio de Algoritmos y Estructuras de Datos III. 10 de Septiembre de 2010 Menú del día Taller de 1 Definiciones Laboratorio de Algoritmos y Estructuras de Datos III Departamento de Computación Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires 10 de Septiembre

Más detalles

Tema 7: Recursividad

Tema 7: Recursividad Tema 7: Recursividad Objetivos: en este tema estudiaremos funciones recursivas; esto es, funciones que se invocan a sí mismas. Estas funciones son equivalentes a estructuras tipo bucle pero permiten especificar

Más detalles

Tema: Funciones, Procedimientos y Recursividad en C#.

Tema: Funciones, Procedimientos y Recursividad en C#. Programación I, Guía 6 1 Tema: Funciones, Procedimientos y Recursividad en C#. Objetivos Utilizar la sintaxis de las funciones definidas por el usuario (programador) para resolver problemas. Identificar

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

La segunda observación permite reformular el problema de una manera más simple:

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

Más detalles

Programación Estructurada

Programación Estructurada Programación Estructurada Código de materia 01 Prof Titular Ing Rafael Brizuela Facultad de tecnología informática UNIVERSIDAD ABIERTA INTERAMERICANA GUÍA DE REPASO CONCEPTUAL PREGUNTAS Unidad 1: Conceptos

Más detalles

Recursión. Capítulo 4

Recursión. Capítulo 4 Recursión Capítulo 4 Introducción La recursión o recursividad es un concepto amplio, con muchas variantes, y difícil de precisar con pocas palabras.. Actividades Cotidianas; fotografía donde se observa

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

TEMA 5: Subprogramas, programación modular

TEMA 5: Subprogramas, programación modular TEMA 5: Subprogramas, programación modular 5.1.-Definición de módulo. Programación modular La programación modular está basada en la técnica de diseño descendente, que como ya vimos consiste en dividir

Más detalles

Análisis de algoritmos

Análisis de algoritmos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 1. Encuentre el orden O de complejidad temporal y espacial del algoritmo de ordenamiento

Más detalles

Programación dinámica: un último ejemplo

Programación dinámica: un último ejemplo Programación dinámica: un último ejemplo Dado: matrices A m n, B n r, C r s de números enteros Para calcular A m n B n r el algoritmo usual realiza m n r multiplicaciones de números enteros Cuántas multiplicaciones

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

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

FICHA DE TRABAJO Nº 14

FICHA DE TRABAJO Nº 14 Nombre FICHA DE TRABAJO Nº 14 Nº orden Bimestre IV 3ºgrado - sección A B C D Ciclo III Fecha: - 10-1 Área Matemática Tema SEGMENTOS ELEMENTOS FUNDAMENTALES DE LA GEOMETRÍA La geometría se basa en tres

Más detalles

2.1 METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS

2.1 METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS 2.1 METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS El proceso de resolución de un problema con una computadora conduce a la escritura de un programa y su ejecución en la misma. Aunque el proceso de diseñar

Más detalles

Introducción a la Programación Dinámica. El Problema de la Mochila

Introducción a la Programación Dinámica. El Problema de la Mochila Tema 1 Introducción a la Programación Dinámica. El Problema de la Mochila La programación dinámica no es un algoritmo. Es más bien un principio general aplicable a diversos problemas de optimización que

Más detalles

Subrutinas. Subrutinas. Erwin Meza Vega

Subrutinas. Subrutinas. Erwin Meza Vega Subrutinas Erwin Meza Vega Outline 1 Introducción 2 Especicación de subrutinas 3 Funciones booleanas 4 Parámetros 5 Recursividad 6 Ejercicios Introducción Programación divide y vencerás Cuando la solución

Más detalles

Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion

Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion UNIDAD IV Analisis Sintactico 4.1 Introduccion Sintaxis significa estructura del orden de las palabras en una frase. La tarea del analisis sintactico es revisar si los símbolos aparecen en el orden correcto

Más detalles

Programación dinámica p. 1

Programación dinámica p. 1 Técnicas de diseño de algoritmos Programación dinámica Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Programación dinámica p. 1 Programación dinámica En programación dinámica, uno

Más detalles

RECURRENCIA RECURSIÓN o RECURSIVIDAD

RECURRENCIA RECURSIÓN o RECURSIVIDAD RECURRENCIA RECURSIÓN o RECURSIVIDAD 1 Definición Definición de diccionario Recursividad: Véase Recursividad 2 Definición Técnica que para resolver problemas basándose en la propia definición del mismo

Más detalles

Recursión Directa. Una función es de recursión directa si contiene una llamada explícita a si misma. return foo (y 1); Recursión Indirecta

Recursión Directa. Una función es de recursión directa si contiene una llamada explícita a si misma. return foo (y 1); Recursión Indirecta Recursión Directa Una función es de recursión directa si contiene una llamada explícita a si misma int foo (int x) { if ( x

Más detalles

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Tema 2 Conceptos básicos de programación. Fundamentos de Informática Tema 2 Conceptos básicos de programación Fundamentos de Informática Índice Metodología de la programación Programación estructurada 2 Pasos a seguir para el desarrollo de un programa (fases): Análisis

Más detalles

Introducción a la programación en C eme - Escuela Universitaria de Música

Introducción a la programación en C eme - Escuela Universitaria de Música Introducción a la programación en C eme - Escuela Universitaria de Música Hoja de ejercicios Nro 3 Ejercicio 1 Considere la siguiente secuencia de 13 números, [0 5 10 2 7 12 4 9 1 6 11 3 8] La regla de

Más detalles

El determinante de una matriz se escribe como. Para una matriz, el valor se calcula como:

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

Más detalles

Tema 13: Apuntadores en C

Tema 13: Apuntadores en C Tema 13: Apuntadores en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Introducción

Más detalles

Álgebra Lineal Ma1010

Álgebra Lineal Ma1010 Álgebra Lineal Ma1010 Métodos Iterativos para Resolver Sistemas Lineales Departamento de Matemáticas ITESM Métodos Iterativos para Resolver Sistemas Lineales Álgebra Lineal - p. 1/30 En esta lectura veremos

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

Matemáticas Discretas Enrique Muñoz de Cote INAOE. Permutaciones y Combinaciones

Matemáticas Discretas Enrique Muñoz de Cote INAOE. Permutaciones y Combinaciones Matemáticas Discretas Enrique Muñoz de Cote INAOE Permutaciones y Combinaciones Contenido Introducción Reglas de la suma y el producto Permutaciones Combinaciones Generación de permutaciones Teorema del

Más detalles

Si un número es múltiplo de otro, u dicho de forma, comprobar si un número es divisor de otro.

Si un número es múltiplo de otro, u dicho de forma, comprobar si un número es divisor de otro. 1.Introducción La programación es una herramienta muy poderosa para resolver todo tipo de problemas, entre ellos los problemas matemáticos. En este artículo se muestra cómo se resuelven algoritmos básicos,

Más detalles

Tema 01: Algoritmia y diagramas de flujo. Estructuras de datos (Prof. Edgardo A. Franco)

Tema 01: Algoritmia y diagramas de flujo. Estructuras de datos (Prof. Edgardo A. Franco) Tema 1 Estructuras de datos (Prof. Edgardo A. Franco) Contenido Algoritmia Qué es un algoritmo? Métodos algorítmicos Diagrama de flujo Símbolos utilizados en los diagramas de flujo Reglas para la construcción

Más detalles

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. 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ás detalles

Figura 1: Esquema de las tablas simplex de inicio y general.

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

Más detalles

Algoritmos y solución de problemas. Fundamentos de Programación Otoño 2008 Mtro. Luis Eduardo Pérez Bernal

Algoritmos y solución de problemas. Fundamentos de Programación Otoño 2008 Mtro. Luis Eduardo Pérez Bernal Algoritmos y solución de problemas Fundamentos de Programación Otoño 2008 Mtro. Luis Eduardo Pérez Bernal Introducción Departamento de Electrónica, Sistemas e Informática En las ciencias de la computación

Más detalles

INTRODUCCIÓN AL USO DE PAQUETES COMPUTACIONALES

INTRODUCCIÓN AL USO DE PAQUETES COMPUTACIONALES INTRODUCCIÓN AL USO DE PAQUETES COMPUTACIONALES Profesoras Especialista Bernal Herrera Fanny Maricela Especialista Franco Valderrama Dalia Elizabeth Página 1 3.1 Objetivo particular del tema 3.0 Tema II

Más detalles

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO FACULTAD DE CS. QUIMICAS, FISICAS Y MATEMATICAS I. DATOS GENERALES DEPARTAMENTO ACADEMICO DE INFORMATICA SILABO 1.1 Asignatura : LENGUAJE DE PROGRAMACION 1.2 Categoría : OE 1.3 Código : IF463AME 1.4 Créditos

Más detalles

TEMA 1: Algoritmos y programas

TEMA 1: Algoritmos y programas TEMA 1: Algoritmos y programas 1.1.-Introducción La razón principal para utilizar un ordenador es para resolver problemas (en el sentido más general de la palabra), o en otras palabras, procesar información

Más detalles

CAPÍTULO 6 PROGRAMACIÓN DINÁMICA. Programación Dinámica

CAPÍTULO 6 PROGRAMACIÓN DINÁMICA. Programación Dinámica CAPÍTULO 6 PROGRAMACIÓN DINÁMICA Programación Dinámica Programación Dinámica En muchos casos las decisiones del pasado afectan los escenarios del futuro. En estos casos se pueden tomar 2 opciones: asumir

Más detalles

Tema 4: Procedimientos y estructuras recursivas

Tema 4: Procedimientos y estructuras recursivas Tema 4: Procedimientos y estructuras recursivas Contenidos 1. Recursión 1.1 Pensando recursivamente 1.2 El coste de la recursión 1.3 Soluciones al coste de la recursión: procesos iterativos 1.4 Soluciones

Más detalles

Tema 5: Traducción dirigida por la sintaxis

Tema 5: Traducción dirigida por la sintaxis Tema 5: Traducción dirigida por la sintaxis Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis

Más detalles

UNIDAD DE APRENDIZAJE I

UNIDAD DE APRENDIZAJE I UNIDAD DE APRENDIZAJE I Saberes procedimentales Interpreta y utiliza correctamente el lenguaje simbólico para el manejo de expresiones algebraicas. 2. Identifica operaciones básicas con expresiones algebraicas.

Más detalles

TÉCNICO UNIVERSITARIO EN COMPUTACIÓN E INFORMÁTICA GUÍA DE ESTUDIO ANÁLISIS Y DISEÑO DE ALGORITMOS I CÓDIGO Elaborada por Kay Guillén Díaz

TÉCNICO UNIVERSITARIO EN COMPUTACIÓN E INFORMÁTICA GUÍA DE ESTUDIO ANÁLISIS Y DISEÑO DE ALGORITMOS I CÓDIGO Elaborada por Kay Guillén Díaz UNIVERSIDAD ESTATAL A DISTANCIA VICERRECTORÍA ACADÉMICA DIRECCIÓN DE EXTENSIÓN UNIVERSITARIA TÉCNICO UNIVERSITARIO EN COMPUTACIÓN E INFORMÁTICA GUÍA DE ESTUDIO ANÁLISIS Y DISEÑO DE ALGORITMOS I CÓDIGO

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

Complejidad computacional (Análisis de Algoritmos)

Complejidad computacional (Análisis de Algoritmos) Definición. Complejidad computacional (Análisis de Algoritmos) Es la rama de las ciencias de la computación que estudia, de manera teórica, la optimización de los recursos requeridos durante la ejecución

Más detalles

Alineamiento múltiple de secuencias

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

Más detalles

Razonamiento Combinatorio (Combinaciones Sin Repetición

Razonamiento Combinatorio (Combinaciones Sin Repetición Razonamiento Combinatorio (Combinaciones Sin Repetición Condicionadas) José Acevedo J. En un conjunto dado de elementos finitos, el estudio de las diferentes maneras en que se pueden arreglar dichos elementos

Más detalles

SGUICES029MT22-A17V1. Bloque 22 Guía: Teorema de Thales y división de segmentos

SGUICES029MT22-A17V1. Bloque 22 Guía: Teorema de Thales y división de segmentos SGUICES09MT-A17V1 Bloque Guía: Teorema de Thales y división de segmentos TABLA DE CORRECCIÓN TEOREMA DE THALES Y DIVISIÓN DE SEGMENTOS N Clave Dificultad estimada 1 C Comprensión Media B Comprensión Media

Más detalles

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Algoritmos y programas. Algoritmos y Estructuras de Datos I Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de

Más detalles

Exponencial, lineal y logarítmico

Exponencial, lineal y logarítmico Exponencial, lineal y logarítmico Se verán en este apartado ejemplos de procesos que cursan en un número de pasos exponencial, lineal o logarítmico en la talla de la entrada. Para ilustrar estos procesos

Más detalles

MATEMÁTICAS APLICADAS A LAS CCSS II (2º BACHILLERATO)

MATEMÁTICAS APLICADAS A LAS CCSS II (2º BACHILLERATO) MATEMÁTICAS APLICADAS A LAS CCSS II (2º BACHILLERATO) 1.1.1 Contenidos y temporalización. Matemáticas Aplicadas a las Ciencias Sociales II 1.1.1.1 Bloque 1. Álgebra (Total : 40 sesiones) Matrices y determinantes

Más detalles

Introducción. Algoritmos y Complejidad. Algoritmos y Algoritmia. Introducción. Problemas e instancias. Pablo R. Fillottrani

Introducción. Algoritmos y Complejidad. Algoritmos y Algoritmia. Introducción. Problemas e instancias. Pablo R. Fillottrani Introducción Introducción Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Algoritmos y Algoritmia Problemas e instancias Primer Cuatrimestre 2014 Algoritmos

Más detalles

PROGRAMACIÓN DINÁMICA. Idalia Flores

PROGRAMACIÓN DINÁMICA. Idalia Flores PROGRAMACIÓN DINÁMICA Idalia Flores CONCEPTOS La programación dinámica es una técnica matemática que se utiliza para la solución de problemas matemáticos seleccionados, en los cuales se toma un serie de

Más detalles

Cubiertas convexas II

Cubiertas convexas II Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 22 de enero del 2013 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Cubiertas convexas II 22 de enero del 2013 1 / 41 1 Cubiertas convexas II Algoritmo QuickHull

Más detalles

MATEMÁTICAS APLICADAS A LAS CIENCIAS SOCIALES II DISTRITO ÚNICO DE ANDALUCÍA

MATEMÁTICAS APLICADAS A LAS CIENCIAS SOCIALES II DISTRITO ÚNICO DE ANDALUCÍA MATEMÁTICAS APLICADAS A LAS CIENCIAS SOCIALES II DISTRITO ÚNICO DE ANDALUCÍA CONTENIDOS Y OBJETIVOS MÍNIMOS PARA EL CURSO 2007/08. 1. INTRODUCCIÓN A LOS CONTENIDOS. ( Decreto 208/2002. B.O.J.A. de 20.08.02

Más detalles

Computación I Curso Facultad de Ingeniería Universidad de la República

Computación I Curso Facultad de Ingeniería Universidad de la República Computación I Curso 2016 Facultad de Ingeniería Universidad de la República Recursión con función cabezal Insituto de Computación - Facultad de Ingeniería 2 Ejercicio 1 a) Escriba una función iterativa

Más detalles

Métodos de gradiente. Métodos de Krylov

Métodos de gradiente. Métodos de Krylov Métodos de gradiente. Métodos de Krylov Damián Ginestar Peiró Departamento de Matemática Aplicada Universidad Politécnica de Valencia Curso 2012-2013 (UPV) Métodos de gradiente. Métodos de Krylov Curso

Más detalles

Reflexiones adicionales

Reflexiones adicionales 92 Medición Área 1. División del paralelogramo con resto Reflexiones adicionales Las imágenes de los paralelogramos de la página 3 plantean una situación interesante que no se hace explícita en el texto:

Más detalles

Unidad 2: Ecuaciones, inecuaciones y sistemas.

Unidad 2: Ecuaciones, inecuaciones y sistemas. Unidad 2: Ecuaciones, inecuaciones y sistemas 1 Unidad 2: Ecuaciones, inecuaciones y sistemas. 1.- Factorización de polinomios. M. C. D y m.c.m de polinomios. Un número a es raíz de un polinomio es 0.

Más detalles

PROGRAMA DE MATEMÁTICA NÚCLEO COMÚN - SEGUNDO DE BACHILLERATO REFORMULACIÓN AJUSTE 2010 INTRODUCCIÓN

PROGRAMA DE MATEMÁTICA NÚCLEO COMÚN - SEGUNDO DE BACHILLERATO REFORMULACIÓN AJUSTE 2010 INTRODUCCIÓN PROGRAMA DE MATEMÁTICA NÚCLEO COMÚN - SEGUNDO DE BACHILLERATO REFORMULACIÓN 2006 - AJUSTE 2010 INTRODUCCIÓN El programa se estructura sobre cuatro Bloques temáticos: Geometría, Funciones, Números y Probabilidad,

Más detalles

Modelos de Desarrollo de Programas Y Programación Concurrente Clase N 3

Modelos de Desarrollo de Programas Y Programación Concurrente Clase N 3 PROGRAMACION FUNCIONAL - Un lenguaje de programación funcional tiene gran flexibilidad, es conciso en su notación y su semántica es sencilla. El inconveniente principal de estos lenguajes ha sido la ineficiencia

Más detalles

Fundamentos de Programación. Flujo de Control I: Estructuras selectivas

Fundamentos de Programación. Flujo de Control I: Estructuras selectivas Fundamentos de Programación Flujo de Control I: Estructuras selectivas El Flujo de Control de un Programa Un algoritmo puede ser construido utilizando combinaciones de tres estructuras de control de flujo

Más detalles

ALN - Curso 2007 Gradiente Conjugado

ALN - Curso 2007 Gradiente Conjugado ALN - Curso 27 Gradiente Conjugado Cecilia González Pérez Junio 27 Métodos Iterativos Pueden ser: Métodos estacionarios Métodos no estacionarios Métodos no estacionarios hacen uso de información, evaluada

Más detalles

Programación MODULAR: Subalgoritmos - funciones y procedimientos

Programación MODULAR: Subalgoritmos - funciones y procedimientos Programación MODULAR: Subalgoritmos - funciones y procedimientos Uno de los métodos fundamentales para resolver un problema es dividirlo en problemas más pequeños, llamados subproblemas. Estos problemas

Más detalles

Programación I. Ingeniería Técnica Informática. Ejercicios de los Temas 4, 5, 6 y 7

Programación I. Ingeniería Técnica Informática. Ejercicios de los Temas 4, 5, 6 y 7 Estructuras selectivas Programación I Ingeniería Técnica Informática Ejercicios de los Temas 4, 5, 6 y 7 24.- Elabore un programa para determinar si una hora leída en la forma horas, minutos y segundos

Más detalles

Una Introducción a la Programación Estructurada en C

Una Introducción a la Programación Estructurada en C Una Introducción a la Programación Estructurada en C Otoño 2013 Índice I 1 Estructura de un programa en C 2 El primer programa en C Lectura de datos Consideraciones adicionales 3 Estructura de control

Más detalles

CRITERIOS DE EVALUACIÓN DEPARTAMENTO DE MATEMÁTICAS

CRITERIOS DE EVALUACIÓN DEPARTAMENTO DE MATEMÁTICAS 1º ESO CRITERIOS DE EVALUACIÓN DEPARTAMENTO DE MATEMÁTICAS 1. Utilizar numeros naturales, enteros, fracciones y decimales sencillos, sus operaciones y propiedades, para recoger, transformar e intercambiar

Más detalles

EJERCICIOS RESUELTOS DE COMBINATORIA

EJERCICIOS RESUELTOS DE COMBINATORIA MATEMÁTIAS EJERIIOS RESUELTOS DE OMBINATORIA Juan Jesús ascual OMBINATORIA A. Introducción teórica A.1. Variaciones. A.. ermutaciones. A.3. ombinaciones. A.. ropiedades de los números combinatorios. A.5.

Más detalles

Para las ecuaciones diferenciales ordinarias no lineales no existen métodos generales.

Para las ecuaciones diferenciales ordinarias no lineales no existen métodos generales. Unidad IV: Sistemas continuos (continuación) Objetivo específico: Entender ampliamente el fenómeno del comportamiento de los modelos matemáticos para la resolución de problemas enfocados a las ecuaciones

Más detalles

Diagramas. En computación existen básicamente dos tipos de diagramas: diagramas de entradaproceso salida

Diagramas. En computación existen básicamente dos tipos de diagramas: diagramas de entradaproceso salida Existen varias formas de representar una serie de pasos para realizar algún proceso. La forma más común es una lista numerada como lo haces con los algoritmos; pero esos pasos también se pueden representar

Más detalles

Lenguajes y Compiladores Análisis Sintáctico Parte I. Teoría Lenguajes 1

Lenguajes y Compiladores Análisis Sintáctico Parte I. Teoría Lenguajes 1 Facultad de Ingeniería de Sistemas Lenguajes y Compiladores Análisis Sintáctico Parte I 1 Introducción El analizador sintáctico recibe una secuencia de tokens y decide si la secuencia está correcta o no.

Más detalles

Propiedades de números enteros (lista de problemas para examen)

Propiedades de números enteros (lista de problemas para examen) Propiedades de números enteros (lista de problemas para examen) Denotamos por Z al conjunto de los números enteros y por N al conjunto de los números enteros positivos: N = 1, 2, 3,...}. Valor absoluto

Más detalles