Anlisis y Diseo de Algoritmos Ejercicio Dada una

  • Slides: 11
Download presentation
Análisis y Diseño de Algoritmos Ejercicio: Dada una recurrencia de n números, encontrar el

Análisis y Diseño de Algoritmos Ejercicio: Dada una recurrencia de n números, encontrar el segmento continuo de mayor suma. Fuerza Bruta : O(n 2)

Análisis y Diseño de Algoritmos Hipótesis: Tengo la suma máxima para x 1, …,

Análisis y Diseño de Algoritmos Hipótesis: Tengo la suma máxima para x 1, …, xn y ahora agrego xn De esto tenemos dos casos • xn<0 , entonces no hago nada • xn>=0 – Cuando el Sij es el sufijo (siempre se inserta el n-ésimo elemento al fina). – Cuando Sij no es el sufijo

Análisis y Diseño de Algoritmos • En general tenemos: T(n)=D(n)+S(n)+U(n) Donde D(n), es la

Análisis y Diseño de Algoritmos • En general tenemos: T(n)=D(n)+S(n)+U(n) Donde D(n), es la instancia de dividir el problema. S(n), es la resolución de los subproblemas. U(n), es la unión de las soluciones parciales para obtener la solución completa.

Análisis y Diseño de Algoritmos Seudo-Código Recursivo

Análisis y Diseño de Algoritmos Seudo-Código Recursivo

Análisis y Diseño de Algoritmos Implementaciones • Recursivas • Código Directo • Almacenar los

Análisis y Diseño de Algoritmos Implementaciones • Recursivas • Código Directo • Almacenar los resultados de los subproblemas ya calculados (Programación Dinámica)

Análisis y Diseño de Algoritmos Ejemplo Calcular el número de fibonacci fn=fn-1+fn-2 f 0=0

Análisis y Diseño de Algoritmos Ejemplo Calcular el número de fibonacci fn=fn-1+fn-2 f 0=0 y f 1=1 Implementación: int f(n){ if(n<=1) return(n); else return(f(n-1)+f(n-2)); } ¿Cuál es el orden de este algoritmo?

Análisis y Diseño de Algoritmos Repetimos Calculos

Análisis y Diseño de Algoritmos Repetimos Calculos

Análisis y Diseño de Algoritmos Alternativa, Utilización Dinámica. de la programación Esta implementación es

Análisis y Diseño de Algoritmos Alternativa, Utilización Dinámica. de la programación Esta implementación es de orden O(n), pero utiliza espacio lineal.

Análisis y Diseño de Algoritmos Problema: Encontrar la subsecuencia común más larga entre dos

Análisis y Diseño de Algoritmos Problema: Encontrar la subsecuencia común más larga entre dos secuencias Subsecuencia: cualquier subconjunto elementos que mantienen el orden. de ¿Cuánto es el número de subsecuencias distintas de una secuencia de largo n?

Análisis y Diseño de Algoritmos Aquí es importante mantener el orden de las secuencias,

Análisis y Diseño de Algoritmos Aquí es importante mantener el orden de las secuencias, la idea es que no se crucen las paridades entre los arreglos. ¿Es posible utilizar inducción?

Análisis y Diseño de Algoritmos Implementación: ¿ Es una buena idea utilizar recursividad?

Análisis y Diseño de Algoritmos Implementación: ¿ Es una buena idea utilizar recursividad?