INDUCCION MATEMATICA RECURSION- DIVIDE Y VENCERAS

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

Download "INDUCCION MATEMATICA RECURSION- DIVIDE Y VENCERAS"

Transcripción

1 GUIA II INDUCCION MATEMATICA RECURSION- DIVIDE Y VENCERAS Donald Ervin Knuth Nacido el 10 de enero de 1938, es uno de los más renombrados científicos de la computación, profesor emerito de la Universidad de Stanford. Es conocido como autor de múltiples volúmenes: El arte de la programación de computadoras, considerado como una referencia en el área de ciencias de la computación, prácticamente fue el creador del análisis de algoritmos y contribuyo significativamente a varias ramas de teoría de las ciencias de la computación Objetivos de aprendizaje 1. Conocer las técnicas de inducción matemática 2. Conocer La técnica de recursividad y recurrencias 3. Conocer La técnica divide y vencerás I INDUCCION MATEMATICA Consideremos que la proposición P(n) definida en un dominio. Se desea demostrar que P(n) es verdadera para todo n en el dominio. Si verificamos que: 1 P(k) es verdadera, para k un entero (positivo, negativo o cero) fijo. 2 Si P(h) es verdadera para todo h > k llamada (hipótesis inductiva) implica que P(h+1) es verdadera. 3 P(n) es verdadera para todo n en su dominio. Quiere decir que si se cumple los pasos 1 y 2 entonces por el principio de inducción afirmamos que se cumple el paso 3, es decir P(n) es verdadera para todo n. Augusto Cortez Vásquez Pag. 1/20

2 Ejemplo 1 i n = n. (n + 1) 2 sea el enunciado P(n) = n = n. (n + 1) 2 1 para n = 1 P(1) = 1 = 1. 2 = supongamos que para n=h > 1, P(h) es verdadera hipótesis inductiva es decir P(h) = h = h.(h + 1) 2 tenemos que 3 P(h + 1) = h + h+1 = ( h) + h+1 = h.(h + 1)+h+1 2 = (h+1). (h+2) 2 por el principio de inducción matemática se sigue que P(n) es verdadera para todo n 1. Ejemplo 2 i 3 i sea el enunciado P(n) = n 3 =( n) 2 1 para n = 1 P(1) = 1 3 = 1 2 = 1 2 Supongamos que para n=h>1, P(n) es verdadera hipótesis inductiva. es decir P(h)= h 3 =( h) 2 tenemos que : 3 P(h + 1) = h 3 = ( h 3 )+ (h+1) 3 = ( h) 2 +(h+1) 3 = ( h+ h+1) 2 por el principio de inducción matemática se sigue que P(n) es verdadera para todo n 1. Augusto Cortez Vásquez Pag. 2/20

3 Ejemplo 3 FUNCION CUADRADO(A) C 0 S 0 MIENTRAS (C < A) S S + A C C + 1 FIN MIENTRAS RETORNAR(S) A A 2 El algoritmo recibe como entrada A y devuelve S= A 2 Sea la proposición P(n) : S n = A * C n donde S n y C n son los valores de S e C después de haber pasado por el ciclo MIENTRAS i veces. para n = 0 P(0) : S 0 = 0 = A x C 0 = A * 0 porque S e B no han pasado aún por el ciclo MIENTRAS Para n = h 0 supongamos que P(h) : es verdadero para h 0 S h = A x C h hipotesis inductiva para n = h+1 se tiene: S h+1 = S h + A...(a) C h+1 = C h (b) De aquí se tiene que: Reemplazando h.i. en (a) S h+1 = A * C h + A = A * (C h +1 ) = A x C h+1 por (b) luego, se cumple S h+1 = A * C h+1 por lo cual P(n) es verdadero para todo n Augusto Cortez Vásquez Pag. 3/20

4 II Recursion La recursión es un método que, directa o indirectamente, se hace una llamada así mismo. Esto puede parecer un circulo vicioso: cómo un método F puede resolver un problema llamándose a si mismo? La clave esta en que el método F se llama así mismo pero en instancias diferentes, mas simples, en algún sentido adecuado Ejemplo Los ficheros en un computador se almacenan generalmente en directorios. Los usuarios pueden crear directorios, que a su vez almacenan mas ficheros y directorios. Suponga que deseamos examinar cada fichero de un directorio D, incluyendo todos los ficheros de sus subdirectorios ( y sus subdirect orios, y así sucesivamente). Esto se puede hacer examinando recursivamente los ficheros de cada subdirectorio junto con todos los ficheros en el directorio D. La recursión es una técnica que se utiliza en la vida cotidiana La recursión es un concepto fundamental en matemáticas e informática. La definición mas sencilla es que una función se llama recursiva si se llama a si mismo. Una función recursiva es aquella función que se define en términos de si mismo. Una programa o función recursiva requiere una condición de terminación que autorice al programa o función a dejar de llamarse a si mismo. Los lenguajes de programación mas conocidos permiten la implantación de algoritmos recursivos. Esta es una metodología que se emplea para la solución de problemas de computación y en muchos casos facilita resolverlos. Augusto Cortez Vásquez Pag. 4/20

5 Ejemplo 4 Definicion recursiva de tren TREN : Locomotora + Vagones Vagones : Vagon + Vagones / Vagon Ejemplo 5 Sea S(N) : suma de los N primeros números. S(N) puede definirse : Forma recursiva S(1) = 1 S(N) = S(N-1) +N Forma explicita S(N) = N*(N+1) /2 Entero Suma() Leer N Escribir S(N) Algoritmo iterativo Entero S(Entero N) S=0 Para i desde 1 hasta N S = S +i Para Retornar( S) Algoritmo recursivo Entero S(Entero N) Algoritmo recursivo Si N = 1 Retornar 1 Sino Retornar( S(N-1)+N) si La función Suma lee N y luego escribe S(N) que es la suma de los N primeros números Augusto Cortez Vásquez Pag. 5/20

6 Debemos tener en cuenta que la recursión no siempre es apropiada. En ocasiones las llamadas recursivas consumen tiempo y limitan el valor de N para el cual se puede ejecutar el programa. No es conveniente, por ejemplo usar la recursión para sustituir un simple bucle. Ejemplo 6 Definición: Una función f es recursiva si en su cuerpo contiene una aplicación de f, es decir, si se puede activarse a si misma. Si la llamada sucede dentro de la propia función se dice que es directamente recursiva. En cambio si la función llama a otra y esta a su vez llama a la primera se dice que es recursión indirecta. El objetivo del programa recursivo, es realizar una serie de llamadas hasta que la secuencia se define en un punto. Las directrices para una función recursiva son: Funcion Potencia(a:entero; n:natural) dev (p:entero) Caso n=0 retornar 1 Caso n >0 return a * Potencia(a,n-1) Accion Principal() Leer a,n Escribir Potencia(a,n) Cada vez que se hace una llamada recursiva en una función, el programa deberá comprobar que se satisface una condición básica con un determinado parámetro puesto al valor mínimo. Cada vez que se hace la llamada a la función, los parámetros enviados a la misma, deberán ser de algún modo más simple, es decir, su valor tender a la condición básica. Ejemplo 7 La función Factorial puede ser desarrollada iterativamente o recursivamente. Matemáticamente de define como: N! = N (N-1)! Para N>1 1!=1 Ejemplo 8: la secuencia de fibonacci son 1, 1, 2, 3, 5, 8,... los cuales se determinan por la función: Augusto Cortez Vásquez Pag. 6/20

7 Fib(n) = Fib(n-1) + Fib(n-2) si n>1, Fib(n)=1 si n <= 1 fib(int n) { if(n==0 n==1) return 1; /* condición básica */ else return (fib(n-1)+fib(n-2)); /* doble llamada */ } Para fib(4) se tienen las siguientes entradas y salidas. En este caso se puede observar que la solución planteada de fibonacci es impracticable para valores de n grandes. Cada fib() realiza dos llamadas, por lo que el número de llamadas aumenta en proporción geométrica. Conviene usar recursión siempre? Que pasa con la memoria? Caso iterativo para fibonacci Fib(int i) { int i,j,k; if(n>0) { i=0; j=1; for(k=2; k<=n; k++) { j=j+i; i=j-i; } return(j); else return(0); } Ejemplo 9 Sumar los elementos de un vector (Desarrollar en clase) Forma iterativa a) Se recorre el vector de izquierda a derecha sumando uno a uno sus elementos b) También puede hacerse el recorrido de derecha a izquierda Forma recursiva c) Se recorre el vector de izquierda a derecha en forma recursiva sumando uno a uno sus elementos d) También puede hacerse el recorrido en forma recursiva de derecha a izquierda e) Puede hacerse también una suma dicotómica Augusto Cortez Vásquez Pag. 7/20

8 Ejemplo 10 Sumar los elementos de una lista enlazada (Desarrollar en clase) Relación de recurrencia La relación de recurrencia a n+1 = 3 a n para n 0 no define una única progresión geométrica, pues la secuencia: 7,21,63,189, también satisface la relación. Para distinguir una sucesión particular descrita necesitamos conocer uno del término de la sucesión. Por tanto a n+1 = 3 a n n 0 donde a 0 = 5 define 5, 15, 45, 135. Mientras que a n+1 = 3 a n n 0 donde a 0 = 3 define 3, 19, 27, 81. Recurrencia homogénea Una recurrencia es homogénea con coeficientes constantes, si tiene la forma a 0 t n + a 1 t n-1 + a 2 t n a k t n-k = 0 para todo a i constante en donde los t i son los valores que estamos buscando. La combinación lineal de los t n-i es igual a 0. Ejemplo 11 a n = a n 1 + a n 2 podemos reescribir a n - a - n 1 - a - n 2 = 0 Rec. homogenea la recurrencia corresponde a la serie de fibonacci. Donde K = 2, a 0 = 1 a 1 = a 2 = -1 Podemos remplazar t n por x n donde x es uma constante desconocida por el momento a 0 x n + a 1 x n-1 + a 2 x n a k x n = 0 La ecuación se satisface si x = 0 siendo la solución trivial en caso contrario la ecuación se satisface si existe k tal que a 0 x k + a 1 x k-1 + a 2 x k a k = 0 ecuacion característica P(x) : a 0 x k + a 1 x k-1 + a 2 x k a k polinômio característico Augusto Cortez Vásquez Pag. 8/20

9 Las raíces de esta ecuación están en alguno de los tres casos siguientes: r 1, r 2 son números reales distintos r 1, r 2 son números complejos conjugados r 1, r 2 son números reales iguales en todos los casos r 1, r 2 son las raíces características Ejemplo 12 a n +a n-1-6a n-2 = 0 donde n 2 a 0 =1 a 1 = 2 P(x) : x 2 + x 6 polinômio característico Cuya solución esta dada por (x+3)(x-2) Con raíces r 1 = 2 y r 2 = -3 La solución general es de la forma a n = c 1 r n n 1 + c 2 r 2 = c 1 2 n + c 2 (-3) n cuando n = 0 a 0 = 1= c c 2 (-3) 0 = c 1 + c 2 (a) cuando n = 1 a 1 = 2 = c c 2 (-3) 1 = 2c 1-3 c 2 (b) resolviendo (a) y (b) c 1 = 1 y c 2 = 0 por tanto a n = 2 n para n 0 Es la única solución de la recurrencia dada. Recurrencia no homogénea Una recurrencia es no homogénea cuando la combinación lineal no es igual a cero, es decir, no es cierto que toda la combinación lineal de las soluciones sea una solución a 0 t n + a 1 t n-1 + a 2 t n a k t n-k = b n P(n) P(n) es um polinomio en n para todo b, a i constante Ejemplo 13 a n 2 a n 1 = 3 n b=3 P(n) = 1 (a) Augusto Cortez Vásquez Pag. 9/20

10 multiplicando (a) por 3 3a n 6 a n 1 = 3 n+1 (b) Sustituyendo n por n-1 en (b) 3a n-1 6 a n 2 = 3 n (c) Restando (a) y (c) a n 5 a n a n-2 = 0 (d) (d) es uma ecuacion homogenea y se resuelve com la técnica antes expuesta. Solucion de una recurrencia mediante remplazos sucesivos Ejemplo 14 Consideremos la siguiente serie S : 2, 5, 8, 11, Se quiere hallar la suma de los N primeros numeros de la serie S puede definirse de la siguiente forma a n = a n para n > 1 a 1 = 2 Asi n a n Augusto Cortez Vásquez Pag. 10/20

11 olucion Accion Principal() iterativa Leer N Escribir SUMA(N) Solución recursiva Accion Principal() Leer N S=0 Para i desde 1 hasta N S = S + SUMA(i) Para Escribir S Accion SUMA(K) S=2 V=5 Para i desde 1 hasta K-1 S=S+V V=V +3 Para Retornar S Accion SUMA(K) Si k=1 Retornar 2 Sino Retornar SUMA(K-1) + 3 Si De que orden es el algoritmo? a n = a n 1 +3 a 1 = 2 (a) esta recurrencia puede resolverse mediante la característico o mediante reemplazos sucesivos técnica de polinomio si remplazamos n con n-1 en (a) tenemos a n-1 = a - n 2 +3 (b) substituímos (b) en (a) tenemos a n = a - n = a n 2 +3 * 2 (c) nuevamente si remplazamos n con n-1 en (a) tenemos a n-2 = a - n 3 +3 (d) sustituimos (d) en (c) a n = a - n *2 = a n 3 +3 * 3 em general a n = a n k +k * 3 si hacemos K = n-1 tenemos Augusto Cortez Vásquez Pag. 11/20

12 a n = a 1 +(n-1) * 3 y como a 1 = 2 tenemos finalmente a n = 2 +3 * (n-1) Así decimos que el algoritmo con ecuación de recurrencia es de orden O(3n) Divide y venceras La técnica divide y vencerás muestra que es posible dividir un problema en subproblemas, y que a su vez estos se subdividen en mas subproblemas y combinar entonces las soluciones de los subejemplares para resolver el caso original. Durante esta subdivisión pueden ocurrir que aparezcan ejemplares de problemas duplicados, si no prestamos atención a esta duplicación, podríamos obtener una solución no eficiente. La técnica de programación dinámica consiste en atender a cada subejemplar y guardar su solucion para su uso posterior, consiguiendo así un algoritmo eficiente. El objetivo de la programación dinámica es evitar que un cálculo se repita dos veces, y para ello se mantiene una tabla de resultados conocidos que se vaya llenando a medida que se resuelven los subcasos. Mientras que el método divide y vencerás es un método descendente de refinamientos progresivo. Se ataca de inmediato el caso completo, dividiéndolos en subcasos más pequeños, a medida que progresa el algoritmo. La programación dinámica es un método ascendente, se empieza con los subcasos más pequeños, y por tanto más sencillos, combinando sus soluciones, obteniendo así las soluciones para los subcasos de tamaño cada vez mayores, hasta que finalmente se llega a la solución del caso original. Para resolver cada subproblema se tienen dos alternativas: El subproblema es suficientemente pequeño para dar una solución o El subproblema todavía es de gran tamaño el cual se debe dividir aplicando recursivamente la técnica. Los algoritmos divide y vencerás son algoritmos recursivos que constan de dos partes: Dividir: se resuelve recursivamente problemas mas pequeños (excepto, por supuesto los casos bases) Vencer : La solución al problema original se consigue a partir de las soluciones a los subproblemas. Tradicionalmente las rutinas en las que el algoritmo contiene al menos dos llamadas recursivas se llaman divide y vencerás, al contrario que las rutinas cuyo texto contiene solamente una llamada recursiva. Además los subproblemas deben ser disjuntos (mas exactamente, esencialmente sin superposiciones) para evitar los costos excesivos que ya se vieron en el calculo recursivo de los números de fibonacci Algoritmo DivideyVencerás( limite del problema) Augusto Cortez Vásquez Pag. 12/20

13 Si la condición define un caso suficientemente simple entonces Dar la solución del caso simple Sino Dividir el problema en subproblemas DivideyVencerás( límite del subproblema 1) DivideyVencerás( límite del subproblema n) _si Ejemplo 15 Multiplicación de enteros grandes Sea X = Y = Podemos hacer X =X 1 X 2 Y=Y 1 Y 2 Entonces X * Y = X 1 *Y 1 * (X 1 *Y 2 + X 2 *Y 1 ) * Y 1 *Y 2 Ejemplo 16 Multiplicación de matrices Ejemplo 17 Torres de Hanoi // Traslada m anillos mas pequeños desde la barra i hasta la barra j Funcion Hanoi(m,i,j,) Si m>0 Hannoi(m-1, i, 6 - i - j) Escribir i, j Hannoi(m-1, 6-i-j, j) Si Accion Principal() Leer m Escribir Hanoi(m,1,3) a n = numero de veces que se utiliza (o ejecuta) la instrucción escribir en una llamada a Hanoi() Augusto Cortez Vásquez Pag. 13/20

14 a n = 1 n = 0 2a n otro caso a n - 2a n 1-1 = 0 Resolver Ejemplo 18 MERGESORT La recursión puede utilizarse para desarrollar algoritmos subcuadraticos [WEISS, 2000]. Un algoritmo divide y vencerás en el cual se resuelven recursivamente dos problemas con la mitad del tamaño, con una sobrecarga de O(N), es un algoritmo O(NLOg N). Mergesort es uno de estos algoritmos, ofreciendo una mejor cota, al menos a nivel teórico, que las afirmadas para Shellsort. [CORTEZ 1999] EL algoritmo Mergesort consta de tres pasos: 1 Si el numero de elementos a ordenar es 0 o 1, finalizar 2 Ordenar recursivamente las dos mitades del vector 3 Mezclar las dos mitades ordenadas en un vector ordenado. El algoritmo realiza lo siguiente Accion Merge_Sort(S,i,j) Si i = j retornar M=(i+j)/2 Merge_Sort(S, i, m) Merge_Sort(S, m+1, j) Merge(S, i, m, j, C) Para k dese i hasta j S k = C k Para Para afirmar que el algoritmo es O(N Log N), es suficiente demostrar que la mezcla ordenada de dos vectores ordenados puede realizarse en tiempo lineal. En la siguiente subsección veremos como mezclar dos vectores A y B, colocando el resultado en un tercer vector. Después mostraremos una implementación sencilla de mergesort. La rutina de mezcla es la piedra angular de muchos algoritmos de ordenación externa. Augusto Cortez Vásquez Pag. 14/20

15 private static void mergesort (int [] a, int [] Temp, int izq, int der) { if(izq < der ) int centro (izq + der ) / 2; mergesort (a, temp, izq, centro) mergesort (a, temp, centro +1, der) mezclar (a, temp, izq, centro+1, der) } private static void clasificar (int [] a) { int [] temp = new int [a.length]; mergesort (a,temp,0,a.length-1); } private static void mezclar (int [] a, int [] temp, int posizq, int posder, int posfin ) { int finizq = posder -1 int posaux = posizq int numelem = posfin posder +1 // ciclo principal While( posizq <=finizq && posder <= posfin) if(a[posizq].menorque(a[posder])) temp[posaux++] = a[posizq++]; else temp[posaux++] = a[posder++]; // copia el resto de la primera mitad While( posizq <=finizq ) temp[posaux++] = a[posizq++]; // copia el resto de la segunda mitad While( posder <=posfin ) temp[posaux++] = a[posder++]; // copia el vector temporal en el original for(int i = 0; i < numelem ; i++, posfin--) a[i] = temp[i] } Augusto Cortez Vásquez Pag. 15/20

16 Análisis del método de intercalación es un ejemplo clásico de las técnicas con que se analizan las rutinas recursivas De que orden asintótico es el Merge_Sort? El algoritmo realiza dos llamadas recursivas de orden T(n/2), y una llamada a intercala de orden O(n), por tanto Tenemos que T(n) = 2T(n/2) +n Sustituimos n por n/2 2T(n/2) = 2 (2T(n/4) +n) = 4 T(n/4) + n Remplazamos en (a) T(n) = 4T(n/4) +2n (a) (b) Sustituimos n por n/4 4T(n/4) = 4 (2T(n/8) +n) = 8 T(n/8) + n Remplazamos en (b) T(n) = 8T(n/8) +3n Sucesivamente, tenemos que T(n) = 2 k T(n/2 k ) +kn (c) Hacemos k = log n En (c) luego n = 2 k T(n) = nt(1) +n log n = n + nlog n Por tanto el algoritmo es de orden O(nlog n) TEOREMA El ordenamiento por fusion es O(n log n) en el peor de los casos Otro metodo de demostrar que Merge_Sort es de orden O(nlogn) Tenemos que T(n) = 2T(n/2) +n (a) Dividiendo (a) entre n obtenemos T(n) / n = T(n/2) / (n/2) +1 (b) Haciendo n = n/2 en (b) obtenemos T(n/2) / (n/2) = T(n/4) / (n/4) +1 (c) Haciendo n = n/4 en (b) obtenemos T(n/4) / (n/4) = T(n/8) / (n/8) +1 (c) Augusto Cortez Vásquez Pag. 16/20

17 Si seguimos tenemos finalmente T(2) / 2 = T(1) / 1 +1 (d) Si sumamos ambos lados de todas las ecuaciones, tenemos T(n)/n = T(1)/ Como T(1) = 1, y hay log n unos en el lado derecho, tenemos T(n)/n = 1 + log n Multiplicamos por n y tenemos T(n) = n + n log n Por tanto Merge_Sort es de orden O(nlogn) Ejercicios Propuestos 1 Proporcione 3 ejemplos de proposiciones matemáticas. Demuéstrelas por el método de inducción matemática 2 Probar por el método de inducción que: a) FUNCION ABC(Q, Y) INICIO A 1 Mientras ( Y > 0 ) A A *Q Y Y - 1 FIN MIENTRAS Retornar A RETORNAR El algoritmo recibe como entrada Q y Y, y devuelve A = Q Y Sea la proposición P(n) : A n * Q Y n = Q Y donde A n y Y n son los valores de A y Y después de haber pasado por el ciclo MIENTRAS n >=0 veces. b) FUNCION COMPARA(N, B) INICIO A N D B MIENTRAS D > 0 A A + B Augusto Cortez Vásquez Pag. 17/20

18 D D - 1 FIN MIENTRAS Retornar A El algoritmo recibe como entrada N y B, y devuelve: A = N+ B 2 3 Construya un algoritmo para hallar el cociente de dos enteros sin realizar divisiones. Demuestre por inducción que el algoritmo funciona 4 Construya un algoritmo para hallar el producto de dos enteros sin realizar multiplicaciones. Demuestre por inducción que el algoritmo funciona RECURSION 5 Defina los siguientes conjuntos en forma recursiva a) El conjunto de todas las expresiones aritméticas b) El conjunto de los números enteros positivos múltiplos de K c) El conjunto de todas las proposiciones del calculo proposicional. 6 Construya un algoritmo recursivo para a) Sumar los elementos de un vector b) Invertir el orden de un vector c) Comparar si dos listas son iguales o no d) Hallar la suma de los elementos de un vector en forma recursiva dicotómica 7 Resuelva las siguientes recurrencias por el método de polinomio característico y por el método de reemplazos sucesivos a) a n = 2a n 1 a 0 = 1 b) a n = 2a n 1 +5 a 0 = 2 8 Dada la secuencia 4, 6, 14, 26, construya un algoritmo recursivo y otro no recursivo para hallar la suma de los n primeros terminos de la secuencia. Compare los algoritmos y comente. 9 Especifique la solución. De que orden es el algoritmo? Construya el algoritmo. Determine el orden y compare el orden obtenido con lo que supuso. a. Intercalar dos vectores ordenados en uno igualmente ordenado b. Multiplicar dos matrices c. Hallar el producto de los elementos de la matriz diagonal 10 Especifique, implemente y evalúe a. Algoritmo de Hanoi Augusto Cortez Vásquez Pag. 18/20

19 b. Suma dicotómica de un vector 11 Especifique, implemente y evalúe a. Ordenamiento MergeSort (clasificación divide y vencerás) b. Hallar la subsecuencia de suma máxima (divide y vencerás) c. Búsqueda dicotómica en un vector d. Comparar si dos vectores son iguales e. Verificar si dos matrices tienen por lo menos una fila con los mismos elementos REFERENCIAS BIBLIOGRAFICAS 1. [HERNANDEZ 2001] Hernández, R.; Lázaro, J.C.; Dormido, R.; Ros, S. Estructura de Datos y Algoritmos ; Prentice Hall 2001, Madrid España. 2. [BRASSARD 1998] Brassard,G. Bratley,P. Fundamentos de Algoritmia, Prentice Hall 1998 Madrid 3. [CORTEZ 1999] Cortez Vásquez, augusto. Matemática Discreta, UNMSM FISI Lima [CORTEZ 2002] Cortez Vásquez, augusto. Algorítmica y Programación, UCSS Lima [CORTEZ 2002] Cortez Vásquez, augusto. Estructura de datos y algoritmos, estructuras no lineales, URP Lima [GRASSMANN 1996] Grassmann W., Tremblay J. Matemática Discreta y Lógica ; Prentice Hall [GRIMALDI 1994] Grimaldi Ralph Matemáticas Discreta y Combinatoria ; Addison-Wesley [GUTIERREZ 1993] Gutiérrez Xavier Franch Estructuras de datos, Especificación, diseño e implementación ; Edición UPC Barcelona España [JAIME 2002] Jaime, Alberto. Estructuras de datos y Algoritmos ; Prentice Hall 2002 Bogota D.C. 10 [JOHNSONBAUGH 1999] Johnsonbaugh Richard Mateamticas Discretas ; Prentice Hall 1999, Pags. 11 [LIPSCHUTZ 1987] Lipschutz Seymour Estructura de datos, Mc Graw- Hill, [CARMONA 1999] Carmona, Poyato Angel y Otros Estructuta de Datos, Caja Sur Universidad de Cordova España 1999 Augusto Cortez Vásquez Pag. 19/20

20 13 [SEDGEWICK 1993] Stroustrup Bjarne El C++ Lenguaje de programacion ; Addison-Wesley 1993, Wilmington-Delaware EUA. 14 [TENEMBNAUM 1993] Tenembaum,A.Langsam Y.Augenstein M. Estructuras de datos en C, Prentice Hall [WEISS 2000] Weiss, Mark Allen. Estructuras de datos en JAVA ; Addison- Wesley, Augusto Cortez Vásquez Pag. 20/20

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

Técnicas de diseño de algoritmos Divide y Vencerás

Técnicas de diseño de algoritmos Divide y Vencerás Técnicas de diseño de algoritmos Divide y Vencerás 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

Diseño y Análisis de Algoritmos

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

Más detalles

Complejidad de algoritmos recursivos

Complejidad de algoritmos recursivos Tema 3. Complejidad de algoritmos recursivos 1. INTRODUCCIÓN... 1 CLASIFICACIÓN DE FUNCIONES RECURSIVAS... 1 DISEÑO DE FUNCIONES RECURSIVAS... 2 2. VENTAJAS E INCONVENIENTES DE LA RECURSIVIDAD... 4 3.

Más detalles

Matemáticas Discretas

Matemáticas Discretas Coordinación de Ciencias Computacionales - INAOE Matemáticas Discretas Cursos Propedéuticos 2011 Ciencias Computacionales INAOE Dr. Enrique Muñoz de Cote jemc@inaoep.mx http://ccc.inaoep.mx/~jemc Oficina

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

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

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

Matemáticas Discretas L. Enrique Sucar INAOE. Inducción y Recursión

Matemáticas Discretas L. Enrique Sucar INAOE. Inducción y Recursión Matemáticas Discretas L. Enrique Sucar INAOE Inducción y Recursión Inducción y Recursión Inducción matemática Relaciones de recurrencia Solución de relaciones de recurrencia L.E. Sucar: MGP 4 - Grafos

Más detalles

Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos

Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos Estructura de Datos y Algoritmos Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos 1. Algorimos de ordenación Discutiremos el problema de ordenar un array de elementos. A los efectos de simplificar

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

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

Programación II. Mario Aldea Rivas Programación II 13/04/11 1. Mario Aldea Rivas Programación II 13/04/11 2

Programación II. Mario Aldea Rivas Programación II 13/04/11 1. Mario Aldea Rivas Programación II 13/04/11 2 Programación II Bloque temático 1. Lenguajes de programación Bloque temático 2. Metodología de programación Bloque temático 3. Esquemas algorítmicos Tema 4. Introducción a los Algoritmos Tema 5. Algoritmos

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

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

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

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

Programación II Recursividad Dr. Mario Rossainz López

Programación II Recursividad Dr. Mario Rossainz López 5. RECURSIVIDAD 5.1. Introducción La recursividad es una técnica en la que una función o método se hace llamadas a sí misma en el proceso de la realización de sus tareas. La recursividad da al programador

Más detalles

Números naturales y recursividad

Números naturales y recursividad Números naturales y recursividad Rafael F. Isaacs G. * Fecha: 12 de abril de 2004 Números naturales Cuál es el primer conjunto de números que estudiamos desde la escuela primaria? Se sabe que los números

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

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

Estructura de Datos. Complejidad de Algoritmos. Algoritmo. Algoritmo. Mauricio Solar Lorna Figueroa

Estructura de Datos. Complejidad de Algoritmos. Algoritmo. Algoritmo. Mauricio Solar Lorna Figueroa Estructura de Datos Complejidad de Algoritmos Mauricio Solar Lorna Figueroa 2010 1 Algoritmo Definición: Un algoritmo es un conjunto finito de instrucciones que sirven para resolver un problema si fueron

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

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 7 1 Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación I Utilizar la sintaxis de las funciones

Más detalles

Tema: Funciones, Procedimientos y Recursividad en C#.

Tema: Funciones, Procedimientos y Recursividad en C#. 2 Programación I Programación I. Guía 6 3 Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación I Tema: Funciones, Procedimientos y Recursividad en C#. Objetivos Utilizar la

Más detalles

Temario. Tipos de recursión. Eficiencia y recursión

Temario. Tipos de recursión. Eficiencia y recursión RECURSION Temario Tipos de recursión Eficiencia y recursión Tipos de RECURSION Según desde donde se realice el llamado recursivo: Directa: la función se llama a sí misma. Indirecta: la función A llama

Más detalles

Qué es la recursividad?

Qué es la recursividad? Recursividad 1 Ejemplo 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í. Esta muñeca, también contiene otra muñeca dentro.

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

DEPARTAMENTO DE MATEMATICAS Y FISICA Matemáticas Discreta

DEPARTAMENTO DE MATEMATICAS Y FISICA Matemáticas Discreta DEPARTAMENTO DE MATEMATICAS Y FISICA Matemáticas Discreta SUCESIONES Y RELACIONES DE RECURRENCIA Esta última sección la dedicamos a presentar el concepto de recurrencia, que esta muy ligado al axioma de

Más detalles

Algoritmos Recursivos de Búsqueda y Ordenación y sus tiempos

Algoritmos Recursivos de Búsqueda y Ordenación y sus tiempos Estructura de Datos y Algoritmos Algoritmos Recursivos de Búsqueda y Ordenación y sus tiempos 1. Algoritmos de ordenación recursivos 1.1. Mergesort, Ordenamiento por fusión Mergesort se ejecuta en un tiempo

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

Análisis de algoritmos

Análisis de algoritmos Tema 09: Programación dinámica M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Introducción Programación dinámica Enfoques de

Más detalles

Taller: Introducción a las Relaciones de Recurrencia.

Taller: Introducción a las Relaciones de Recurrencia. Taller: Introducción a las Relaciones de Recurrencia. Déboli Alberto. Departamento de Matemática. F.C.E. y N. Universidad de Buenos Aires. Semana de la Enseñanza de la Ciencia. Buenos Aires 15 de julio

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

Recursión. Recursión continuación

Recursión. Recursión continuación Recursión Recursión continuación Recursión Temas que veremos hoy Estructuras de control iterativas, repetitivas y la recursión. Ejemplos recursivos Búsqueda lineal Eficiencia y recursión Conclusiones Recursión

Más detalles

Tema 5- Diseño Recursivo y Eficiente. Tema 5- Diseño Recursivo y. Descomposición recursiva ascendente de un vector. Etapas del diseño recursivo

Tema 5- Diseño Recursivo y Eficiente. Tema 5- Diseño Recursivo y. Descomposición recursiva ascendente de un vector. Etapas del diseño recursivo 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

Hasta ahora sólo hemos visto algoritmos con tratamiento secuencial

Hasta ahora sólo hemos visto algoritmos con tratamiento secuencial 2. Recursividad 1. La recursividad 2. Programación recursiva 1. Recursión directa como método de diseño de soluciones 2. Ejemplos 3. Funcionamiento de la recursión 1. Cómo se comporta un algoritmo recursivo?

Más detalles

UNIVERSIDAD AUTÓNOMA CHAPINGO DPTO. DE PREPARATORIA AGRÍCOLA ÁREA DE FÍSICA RECURSIÓN. Guillermo Becerra Córdova

UNIVERSIDAD AUTÓNOMA CHAPINGO DPTO. DE PREPARATORIA AGRÍCOLA ÁREA DE FÍSICA RECURSIÓN. Guillermo Becerra Córdova UNIVERSIDAD AUTÓNOMA CHAPINGO DPTO. DE PREPARATORIA AGRÍCOLA ÁREA DE FÍSICA RECURSIÓN Guillermo Becerra Córdova E-mail: gllrmbecerra@yahoo.com OBJETIVOS: Este trabajo tiene por objetivo mostrar las características

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

Funciones recursivas

Funciones recursivas Introducción a la Computación Funciones recursivas Esteban E. Mocskos (emocskos@dc.uba.ar) Facultad de Ciencias Exactas y Naturales, UBA CONICET 08/04/2014 E. Mocskos (UBA CONICET) Clase 9: Funciones Recursivas

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

División Académica de Informática y Sistemas

División Académica de Informática y Sistemas Área de formación Sustantiva Profesional Nombre de la asignatura Docencia frente a grupo según SATCA Trabajo de Campo Supervisado según SATCA HCS HPS TH C HTCS TH C TC 2 4 6 6 0 0 0 6 Clave de la asignatura

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

Este método se basa en buscar el elemento menor el vector y colocarlo en la primera

Este método se basa en buscar el elemento menor el vector y colocarlo en la primera Lectura ORDENACIÓN DE ARREGLOS Con frecuencia se requiere clasificar u ordenar los elementos de un vector (arreglo unidimensional) en algún orden en particular. Por ejemplo, ordenar un conjunto de números

Más detalles

Programación Análisis de Algoritmos: Tiempo de Ejecución (Introducción)

Programación Análisis de Algoritmos: Tiempo de Ejecución (Introducción) Programación 2 5 - Análisis de Algoritmos: Tiempo de Ejecución (Introducción) 1 Análisis de Algoritmos: Introducción Qué algoritmos elegir para resolver un problema? Que sean fáciles de entender, codificar

Más detalles

Algorítmica y Lenguajes de Programación. Eficiencia y notación asintótica (ii)

Algorítmica y Lenguajes de Programación. Eficiencia y notación asintótica (ii) Algorítmica y Lenguajes de Programación Eficiencia y notación asintótica (ii) Eficiencia y notación asintótica. Análisis de algoritmos En la lección anterior el concepto de eficiencia asintótica. En ésta

Más detalles

Solución - práctico 10

Solución - práctico 10 Solución - práctico 10 Complejidad Ejercicio 1 a) Una implementación del algoritmo es la siguiente: /* Procedimiento que se encarga de realizar la unión de los dos conjuntos * ordenados der1 e izq1 son

Más detalles

Introducción a la Matemática Discreta

Introducción a la Matemática Discreta Introducción a la Matemática Discreta Recursión Luisa María Camacho Camacho Introd. a la Matemática Discreta 1 / 15 Introducción a la Matemática Discreta Temario Tema 1. Teoría de Conjuntos. Tema 2. Lógica

Más detalles

Estructura de Datos. Recursividad. Primer Semestre, Indice

Estructura de Datos. Recursividad. Primer Semestre, Indice Estructura de Datos Recursividad Prof.: Mauricio Solar Prof.: Lorna Figueroa Primer Semestre, 2 Indice Introducción Definición Condiciones para la Recursividad Tipos de Recursividad Aplicaciones Ejemplo

Más detalles

TEMA 1: DIVIDE Y VENCERÁS

TEMA 1: DIVIDE Y VENCERÁS TEMA 1: DIVIDE Y VENCERÁS l OBJETIVOS: n Estudio de la estrategia de diseño de algoritmos (recursivos) Divide y Vencerás n Estudio de los algoritmos de Ordenación Rápida: MergeSort y QuickSort n Estudio

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

Resolviendo Recurrencias

Resolviendo Recurrencias Resolviendo Recurrencias Mauro Jaskelioff 16/03/2015 Análisis de Algoritmos Queremos poder evaluar la performance de algoritmos. Para esto utilizamos Notación Asintótica Modelo de Costo basado en Lenguaje

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 05: no recursivos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido no recursivos La notación de Landau O La notación O Principio

Más detalles

Relaciones de recurrencia

Relaciones de recurrencia MATEMÁTICA DISCRETA I F. Informática. UPM MATEMÁTICA DISCRETA I () Relaciones de recurrencia F. Informática. UPM 1 / 7 Relaciones de recurrencia Relaciones de recurrencia Definición Una relación de recurrencia

Más detalles

INSTEC PENSAMIENTO NUMERICO VARIACIONAL GUIA 1 - GRADO 11

INSTEC PENSAMIENTO NUMERICO VARIACIONAL GUIA 1 - GRADO 11 1.. LOS NUMEROS REALES CONDUCTA DE ENTRADA La figura muestra una recta real -1 0 1 Teniendo en cuenta la Figura responde en minutos a. Cuantos números Reales hay entre -1 y 1. b. Cuantos números naturales

Más detalles

Programación II. Mario Aldea Rivas Programación II 04/04/11 1. Mario Aldea Rivas Programación II 04/04/11 2

Programación II. Mario Aldea Rivas Programación II 04/04/11 1. Mario Aldea Rivas Programación II 04/04/11 2 Programación II Bloque temático 1. Lenguajes de programación Bloque temático 2. Metodología de programación Bloque temático 3. Esquemas algorítmicos Tema 5. Algoritmos voraces, heurísticos y aproximados

Más detalles

Recursividad. Dept. Ciencias de la Computación e I.A. Universidad de Granada

Recursividad. Dept. Ciencias de la Computación e I.A. Universidad de Granada TEMA Recursividad Dept. Ciencias de la Computación e I.A. Universidad de Granada Índice Introducción a la recursión Recursividad frente a iteración Eficiencia de los algoritmos recursivos Ejemplos y ejercicios

Más detalles

Tema 3.2: Eficiencia de algoritmos recursivos. Diseño y Análisis de Algoritmos

Tema 3.2: Eficiencia de algoritmos recursivos. Diseño y Análisis de Algoritmos Diseño y Análisis de Algoritmos Contenidos Contenidos 1 Introducción 2 3 Método general para resolución de relaciones de recurrencia URJC DAA 2 / 37 Introducción Análisis de algoritmos recursivos La matemática

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

Funciones recursivas

Funciones recursivas Introducción a la Computación Funciones recursivas Esteban E. Mocskos (emocskos@dc.uba.ar) Facultad de Ciencias Exactas y Naturales, UBA CONICET 13/09/2017 E. Mocskos (UBA CONICET) Funciones Recursivas

Más detalles

División Académica de Informática y Sistemas División Académica Multidisciplinaria de los Ríos Ingeniería en Informática Administrativa

División Académica de Informática y Sistemas División Académica Multidisciplinaria de los Ríos Ingeniería en Informática Administrativa Área de formación Sustantiva Profesional Nombre de la asignatura Docencia frente a grupo según SATCA Trabajo de Campo Supervisado según SATCA HCS HPS TH C HTCS TH C TC 2 4 6 6 0 0 0 6 Matemáticas Discretas

Más detalles

Universidad del Valle EISC

Universidad del Valle EISC Recurrencias Raúl E Gutiérrez de Piñerez R. raul.gutierrez@correounivalle.edu.co Ing. Carlos Andres Delgado S. 2 carlos.andres.delgado@correounivalle.edu.co Universidad del Valle EISC Septiembre 2017 1

Más detalles

Valores Propios y las Sucesiones Definidas de Forma Recursiva

Valores Propios y las Sucesiones Definidas de Forma Recursiva Valores Propios y las Sucesiones Definidas de Forma Recursiva Jorge Monge, Enrique Vílchez Introducción Este trabajo representa un esfuerzo conjunto 1 llevado a cabo con la principal finalidad, de exponer

Más detalles

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA)

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA) UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA) FACULTAD DE INGENIERIA DE SISTEMAS E INFORMATICA ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS 1. INFORMACIÓN GENERAL

Más detalles

CENTRO UNIVERSITARIO UAEM ZUMPANGO INGENIERO EN COMPUTACION TEMA: TEORIA DE NÚMEROS

CENTRO UNIVERSITARIO UAEM ZUMPANGO INGENIERO EN COMPUTACION TEMA: TEORIA DE NÚMEROS CENTRO UNIVERSITARIO UAEM ZUMPANGO INGENIERO EN COMPUTACION TEMA: TEORIA DE NÚMEROS M. EN C. LUIS ENRIQUE KU MOO FECHA: AGOSTO DE 2017 UNIDAD DE APRENDIZAJE ALGEBRA SUPERIOR UNIDAD DE COMPETENCIA III:

Más detalles

Recursividad. Definición de Recursividad: Técnica de programación muy potente que puede ser usada en lugar de la iteración.

Recursividad. Definición de Recursividad: Técnica de programación muy potente que puede ser usada en lugar de la iteración. Capítulo IV Recursividad Aprende a nacer desde el dolor y a ser más grande que el más grande de los obstáculos, mírate en el espejo de ti mismo y serás libre y fuerte y dejarás de ser un títere de las

Más detalles

Solución Primer Parcial Matemática

Solución Primer Parcial Matemática Solución Primer Parcial Matemática 1-01 1 Dados los puntos P 1 (5, 4) y P (, 4) hallar: (a) Ecuación, elementos y gráfico de la parábola con vértice en P 1 y foco en P. El eje de la parábola es paralelo

Más detalles

ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL FACULTAD DE INGENIERÍA EN ELECTRICIDAD Y COMPUTACIÓN SYLLABUS DEL CURSO Análisis de Algoritmos

ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL FACULTAD DE INGENIERÍA EN ELECTRICIDAD Y COMPUTACIÓN SYLLABUS DEL CURSO Análisis de Algoritmos 1. CÓDIGO Y NÚMERO DE CRÉDITOS ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL FACULTAD DE INGENIERÍA EN ELECTRICIDAD Y COMPUTACIÓN SYLLABUS DEL CURSO Análisis de Algoritmos CÓDIGO FIEC04366 NÚMERO DE CRÉDITOS:

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

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

Recursividad Definición

Recursividad Definición Recursividad Definición Un procedimiento o función se dice recursivo si durante su ejecución se invoca directa o indirectamente a sí mismo. Esta invocación depende al menos de una condición que actúa como

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

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

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

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 3. Análisis de costes

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

Más detalles

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA)

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA) UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA) FACULTAD DE INGENIERIA DE SISTEMAS E INFORMATICA ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS 1. INFORMACIÓN GENERAL

Más detalles

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

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

SUCESIONES Y PROGRESIONES 3º ESO MATEMÁTICAS

SUCESIONES Y PROGRESIONES 3º ESO MATEMÁTICAS SUCESIONES Y PROGRESIONES 3º ESO MATEMÁTICAS Una sucesión es un conjunto de números ordenados que siguen alguna regla. Cada uno de estos números se llama término y se representa por a n, donde n es el

Más detalles

Análisis y Diseño de Algoritmos. Complejidad Computacional

Análisis y Diseño de Algoritmos. Complejidad Computacional Análisis y Diseño de Algoritmos Complejidad Computacional Multiplicación Método Tradicional Método Russé Método Particiones Complejidad Computacional Tan pronto como una máquina análitica exista, será

Más detalles

Seminario de problemas Curso Estrategias matemáticas: recurrencias.

Seminario de problemas Curso Estrategias matemáticas: recurrencias. Seminario de problemas Curso 017-18. Estrategias matemáticas: recurrencias. Contar cosas es uno de los problemas más típicos de las matemáticas y la habilidad para contar bien es una de las más valoradas

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

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

Algoritmos y Complejidad

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

Más detalles

Sílabo de Matemática Discreta

Sílabo de Matemática Discreta Sílabo de Matemática Discreta I. Datos generales Código ASUC 00562 Carácter Obligatorio Créditos 4 Periodo académico 2017 Prerrequisito Ninguno Horas Teóricas 2 Prácticas 4 II. Sumilla de la asignatura

Más detalles

Análisis de Algoritmos

Análisis de Algoritmos Análisis de Algoritmos IIC1253 IIC1253 Análisis de Algoritmos 1 / 36 Complejidad de un algoritmo Un algoritmo A puede ser pensado como una función A : {0,1} {0,1} Qué tan general es esta representación?

Más detalles

Programa analítico. Cátedra: Matemática Discreta

Programa analítico. Cátedra: Matemática Discreta Programa analítico Cátedra: Matemática Discreta Código: K951C Carrera: Ingeniería en Sistemas de Información Plan: ORD. No 1150 Régimen de dictado: Cuatrimestral Horas semanales: 6 (seis) Año: 2015 Programa

Más detalles

Estructura de datos y Algoritmos. Tema III Clasificación en memoria secundaria

Estructura de datos y Algoritmos. Tema III Clasificación en memoria secundaria Estructura de datos y Algoritmos Tema III Clasificación en memoria secundaria 3.1. Clasificación externa basada en mezcla 3.1.1. Mezcla directa. 3.1.2. Mezcla natural. 3.1.3. Mezcla balanceada múltiple.

Más detalles

Definición 1.2. Sea (K, +, ) un dominio de integridad. Un polinomio de grado n sobre K es una expresión de la forma

Definición 1.2. Sea (K, +, ) un dominio de integridad. Un polinomio de grado n sobre K es una expresión de la forma Polinomios Definición 1.1. Un conjunto K junto con dos operaciones definidas en él que denotaremos por + : K K K : K K K para las cuales se cumplen las siguientes propiedades: Asociatividad Conmutatividad

Más detalles

Análisis de Algoritmos

Análisis de Algoritmos Análisis de Algoritmos IIC1253 IIC1253 Análisis de Algoritmos 1 / 36 Complejidad de un algoritmo Un algoritmo A puede ser pensado como una función A : {0,1} {0,1} Qué tan general es esta representación?

Más detalles

Tema: Programación Dinámica.

Tema: Programación Dinámica. 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Programación Dinámica. Objetivos Específicos Definir brevemente el concepto de programación dinámica. Interpretar un algoritmo

Más detalles

Semana 07[1/21] Sumatorias. 12 de abril de Sumatorias

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,

Más detalles

ESTRUCTURA DE DATOS: Tema 3. Recursividad

ESTRUCTURA DE DATOS: Tema 3. Recursividad ESTRUCTURA DE DATOS: Tema 3. Recursividad Presenta: David Martínez Torres Universidad Tecnológica de la Mixteca Instituto de Computación Oficina No. 37 dtorres@mixteco.utm.mx Contenido 1. Directa e indirecta

Más detalles

Trabajo Práctico Nº 06

Trabajo Práctico Nº 06 Tema: Recursividad 1. Dado el siguiente método: static int puzle (int base, int limite) if (base > limite) return -1; if (base = = limite) return base * puzle(base+1,limite); 1.1 Identificar: a) el caso(s)

Más detalles

3.- RELACIONES DE RECURRENCIA

3.- RELACIONES DE RECURRENCIA 3.- RELACIONES DE RECURRENCIA 3.1. REGLAS DE SUMA Y EL PRODUCTO Principio de Adición Este capitulo es un repaso del tema visto en el 2.1 de la unidad 2 Estudiamos el más básico y simple de los principios

Más detalles