INDUCCION MATEMATICA RECURSION- DIVIDE Y VENCERAS
|
|
- José Carlos Castilla Herrero
- hace 5 años
- Vistas:
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 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
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
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
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.
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
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
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
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)
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,
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
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
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,
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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.
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
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
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
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
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
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?
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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:
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
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
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:
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..
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
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
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
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
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
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
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
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
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
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
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
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á
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
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
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
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
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
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?
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
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.
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
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?
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
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,
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
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)
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