Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DOMINGO
DEPARTAMENTO DE CIENCIAS DE LA COMPUTACIÓN - DCCO-SS
2022
Índice
1 Introducción ............................................................................................................................................ 2
2 Sistemas de Objetivos .......................................................................................................................... 2
2.1 Objetivo General: .......................................................................................................................... 2
2.2 Objetivos Específicos: ................................................................................................................. 2
3 Desarrollo ................................................................................................................................................. 3
3.1 Divide y Vencerás: ........................................................................................................................ 3
3.2 Programación Dinámica............................................................................................................. 4
3.3 Back Tracking................................................................................................................................. 5
4 Conclusiones ........................................................................................................................................... 6
5 Recomendación ...................................................................................................................................... 7
6 Bibliografía/ Referencias/ páginas web....................................................................................... 7
1 Introducción
El presente trabajo de investigación busca abordar el marco teórico de los temas: Divide
y Vencerás, Programación Dinámica y Back Tracking desde una perspectiva académica
en donde el objetivo principal del documento es lograr que se expongan las principales
características y aplicaciones de los temas a abordar desde el punto de vista de la
programación e informática, toda la información será obtenida de fuentes con veracidad
académica.
2 Sistemas de Objetivos
Nota: Los algoritmos del tipo divide y vencerás se diseñan como procedimientos
generalmente recursivos.
Implementación general:
else
subproblemas: array of TipoProblema
subproblemas = divideEnSubproblemas(p)
soluciones_parciales: array of TipoSolucion
return mezcla(soluciones_parciales)
endIf
finAlgoritmoDyV
Decir que un problema tiene subproblemas superpuestos es decir que se usa un mismo
subproblema para resolver diferentes problemas mayores. Por ejemplo, en la Sucesión
de Fibonacci (𝐹3 = 𝐹1 + 𝐹2 𝑦 𝐹4 = 𝐹2 + 𝐹3 ) calcular cada término supone calcular 𝐹2 .
Como para calcular 𝐹5 hacen falta tanto 𝐹3 como 𝐹4 , una mala implementación para
calcular 𝐹5 acabará calculando 𝐹2 dos o más veces. Esto sucede siempre que haya
subproblemas superpuestos: una mala implementación puede acabar desperdiciando
tiempo recalculando las soluciones óptimas a subproblemas que ya han sido resueltos
anteriormente.
Ejemplo:
El algoritmo recursivo que calcula los coeficientes binomiales resulta ser de
complejidad exponencial por la repetición de los cálculos que realiza. No obstante, es
posible diseñar un algoritmo con un tiempo de ejecución de orden 𝑂(𝑛𝑘) basado en la
idea del Triángulo de Pascal, idea claramente aplicable mediante programación
dinámica. Para ello es necesaria la creación de una tabla bidimensional en la que ir
almacenando los valores intermedios que se utilizan posteriormente.
La idea recursiva de los coeficientes binomiales es la siguiente:
= + 𝑠𝑖 0 < 𝑘 < 𝑛
= = 1
La idea para construir la tabla de manera eficiente y sin valores inútiles es la siguiente:
0 1 2 3 ... k-1 k
0 1
1 1 1
2 1 2 1
3 1 3 3 1
n C(n,k)
4 Conclusiones
5 Recomendación