SlideShare una empresa de Scribd logo
Dynamic
Programming and
Backtracking
Ricardo Sánchez Castillo
Programación Dinámica
Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 2
p = [ 20, 13, 45, 34, 76]
def sumIterative(p):
result = 0
for i in range(len(p)):
result = result + p[i]
return result
Iterativa
def sumRecursive(p):
if len(p) <= 0:
return 0
return p[0] + sumRecursive(p[1 : ])
Recursiva
Programación Dinámica
Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 3
p = [ 20, 13, 45, 34, 76]
def sumRecursive(p):
if len(p) <= 0:
return 0
return p[0] + sumRecursive(p[1 : ])
Recursiva
20 + [13,45,34,76]
13 + [45,34,76]
45 + [34,76]
34 + [76]
76 + []
[] = 0
76 + 0 = 76
34 + 76 = 110
45 + 110 = 155
13 + 155 = 168
20 + 168 = 188
Programación Dinámica
Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 4
Longitud 1 2 3 4 5 6 7 8 9 10
Precio 1 5 7 9 10 17 19 20 24 30
= 9
= 8
= 10
Programación Dinámica
Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 5
i=1 i=2 i=3 i=4
8
7
4
7
10
7
8 9
Longitud Precio
1 1
2 5
3 7
4 9
5 10
6 17
7 19
8 20
9 24
10 30
𝑟𝑛 = max
1≤𝑖≤𝑛
(𝑝𝑖 + 𝑟𝑛−1)
Programación Dinámica
Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 6
4
3
2
1
0
1
0
0
2
1
0
0
1
0
0
2 𝑛 𝑛𝑜𝑑𝑜𝑠
2 𝑛−1 𝑟𝑎𝑚𝑎𝑠
Programación Dinámica
Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 7
Top-down
• Mismo procedimiento recursivo
• Guardar el resultado en memoria
• Algunas veces no resolverá todas
las posibles combinaciones
Bottom-up:
• Resolver los elementos más “pequeños”
primero
• Continuar ascendiendo basado en los
resultados anteriores
4
3
2
1
0
1
0
0
2
1
0
0
1
0
0
0
1
2
3
4
Programación Dinámica
Condiciones
• Subestructura optima: La solución optima a un problema está
construida a partir de la solución de sus sub-problemas.
• Superposición de problemas: Los problemas se sobreponen. En una
solución recursiva, el algoritmo calcula la solución a los mismos
sub-problemas muchas veces.
Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 8
Programación Dinámica
Otros ejemplos:
• Longest common subsequence (LCS): Detectar la sub-secuencia
más grande a partir de dos secuencias, de aquí deriva la distancia
de Levenshtein utilizada para la detección de plagiarismo.
• Número de caminos: ¿Cuántos caminos hay entre un punto (0, 0) a
un punto (i, j)? De aquí deriva el algoritmo Floyd-Warshall.
• Multiplicación de cadenas de matrices: La multiplicación de
matrices es asociativa, ¿De que forma deberíamos de agrupar los
paréntesis para hacer la menor cantidad de cálculos?
Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 9
Backtracking
• Genera todas las posibles combinaciones para un problema
• Se basa en el “stack” generado durante la recursión
• Cuando la función recursiva regresa, regresamos al estado anterior
Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 10
Backtracking
Método general:
• Identificar los casos base
• Detectar los posibles estados que se pueden generar a partir de
un punto inicial
• Mover al primer estado y aplicar recursión
• Probar sobre todos los estados
• En caso de que ninguno resuelva el problema, volver al estado
inicial y regresar un valor
Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 11
Backtracking
Presentación:
http://www.slideshare.net/RicardoSnchezCastill
Código:
https://www.dropbox.com/sh/gqowc6c5fbnc4mg/AADSCTKH
uSnLDTh7_Bee-qlaa?dl=0
Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 12
Dynamic
Programming and
Backtracking
Ricardo Sánchez Castillo

Más contenido relacionado

PDF
Decimales
PDF
Ejercicios tema1 1
PPTX
Alix algoritmo
PPTX
Algoritmo lineal
PDF
DOCX
En skydrive crea una hoja de cálculo y realiza las modulo 10
PDF
Problemas propuestos de factorizacion y sus aplicaciones ccesa007
DOCX
Simulación - Algoritmo lineal
Decimales
Ejercicios tema1 1
Alix algoritmo
Algoritmo lineal
En skydrive crea una hoja de cálculo y realiza las modulo 10
Problemas propuestos de factorizacion y sus aplicaciones ccesa007
Simulación - Algoritmo lineal

La actualidad más candente (12)

PPS
Lenguajesdeprogramacion c nivel1-unidad2-03-expresiones y funciones matematicas
DOC
Examen primera evaluacion_iii_2009_2010_solucion
PPT
TEOREMA FUNNDAMENNTAL DEL CALCULO
DOCX
Ejercicio 8
PPT
4ta parte expresiones y funciones matemáticas
PDF
3ª semana límites
PDF
Taller 2 MATLAB
PPTX
Sumas y restas
PPT
Unidad 3
DOCX
Examen álgebra lineal
PPTX
Aplicaciones de calculo
Lenguajesdeprogramacion c nivel1-unidad2-03-expresiones y funciones matematicas
Examen primera evaluacion_iii_2009_2010_solucion
TEOREMA FUNNDAMENNTAL DEL CALCULO
Ejercicio 8
4ta parte expresiones y funciones matemáticas
3ª semana límites
Taller 2 MATLAB
Sumas y restas
Unidad 3
Examen álgebra lineal
Aplicaciones de calculo
Publicidad

Similar a Dynamic programming and backtracking (20)

PPTX
Programacion dinamica
PDF
Programacion dinamica
PPTX
Presentacion programacion dinamica
PDF
PROGRAMACION DINAMICA
PPTX
Programación Dinámica
PPTX
Programacion dinamica jesus plaza
PPTX
Programacion dinamica
PPTX
Algoritmos computacionales
PPTX
Algoritmos computacionales
PPTX
Unidad 3. Programación dinámica
PPTX
Unidad 3. Programación dinámica
PPTX
Programación dinámica
PPTX
Programación dinamica (ea)
PPTX
Pro no num Prog dinamica
PDF
PROGRAMACION DINAMICA Y ANALISIS DE DATOS
PDF
Presentación Estrategia de Marketing Moderno Amarillo_df045adb26b92d02b63994...
PDF
6 dynamic programming
PDF
Programacion dinamica
DOCX
61178886 i-o-ii-principal
PPTX
Programacion dinamica
Programacion dinamica
Programacion dinamica
Presentacion programacion dinamica
PROGRAMACION DINAMICA
Programación Dinámica
Programacion dinamica jesus plaza
Programacion dinamica
Algoritmos computacionales
Algoritmos computacionales
Unidad 3. Programación dinámica
Unidad 3. Programación dinámica
Programación dinámica
Programación dinamica (ea)
Pro no num Prog dinamica
PROGRAMACION DINAMICA Y ANALISIS DE DATOS
Presentación Estrategia de Marketing Moderno Amarillo_df045adb26b92d02b63994...
6 dynamic programming
Programacion dinamica
61178886 i-o-ii-principal
Programacion dinamica
Publicidad

Último (10)

PDF
Presentacion de compiladores e interpretes
PPTX
Control de seguridad en los sitios web.pptx
PPTX
hojas_de_calculo_aplicado para microsoft office
PPTX
ORIGEN DE LA IA - GRADO 1102 INTELIGENCIA
PDF
Clase 3 - Presentación visual (Insertando objetos visuales) POWER POINT.pdf
PPTX
Implementación equipo monitor12.08.25.pptx
PPTX
ANALOGÍA 6.pptx9191911818181119111162363733839292
PPTX
presentación de introducción a las metodologías agiles .pptx
PPTX
PROPIEDADES Y METODOS DE PrOO CON PYTHON
PDF
DNS_SERVIDORES PARA ASER PRACTICAS EN REDES
Presentacion de compiladores e interpretes
Control de seguridad en los sitios web.pptx
hojas_de_calculo_aplicado para microsoft office
ORIGEN DE LA IA - GRADO 1102 INTELIGENCIA
Clase 3 - Presentación visual (Insertando objetos visuales) POWER POINT.pdf
Implementación equipo monitor12.08.25.pptx
ANALOGÍA 6.pptx9191911818181119111162363733839292
presentación de introducción a las metodologías agiles .pptx
PROPIEDADES Y METODOS DE PrOO CON PYTHON
DNS_SERVIDORES PARA ASER PRACTICAS EN REDES

Dynamic programming and backtracking

  • 2. Programación Dinámica Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 2 p = [ 20, 13, 45, 34, 76] def sumIterative(p): result = 0 for i in range(len(p)): result = result + p[i] return result Iterativa def sumRecursive(p): if len(p) <= 0: return 0 return p[0] + sumRecursive(p[1 : ]) Recursiva
  • 3. Programación Dinámica Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 3 p = [ 20, 13, 45, 34, 76] def sumRecursive(p): if len(p) <= 0: return 0 return p[0] + sumRecursive(p[1 : ]) Recursiva 20 + [13,45,34,76] 13 + [45,34,76] 45 + [34,76] 34 + [76] 76 + [] [] = 0 76 + 0 = 76 34 + 76 = 110 45 + 110 = 155 13 + 155 = 168 20 + 168 = 188
  • 4. Programación Dinámica Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 4 Longitud 1 2 3 4 5 6 7 8 9 10 Precio 1 5 7 9 10 17 19 20 24 30 = 9 = 8 = 10
  • 5. Programación Dinámica Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 5 i=1 i=2 i=3 i=4 8 7 4 7 10 7 8 9 Longitud Precio 1 1 2 5 3 7 4 9 5 10 6 17 7 19 8 20 9 24 10 30 𝑟𝑛 = max 1≤𝑖≤𝑛 (𝑝𝑖 + 𝑟𝑛−1)
  • 6. Programación Dinámica Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 6 4 3 2 1 0 1 0 0 2 1 0 0 1 0 0 2 𝑛 𝑛𝑜𝑑𝑜𝑠 2 𝑛−1 𝑟𝑎𝑚𝑎𝑠
  • 7. Programación Dinámica Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 7 Top-down • Mismo procedimiento recursivo • Guardar el resultado en memoria • Algunas veces no resolverá todas las posibles combinaciones Bottom-up: • Resolver los elementos más “pequeños” primero • Continuar ascendiendo basado en los resultados anteriores 4 3 2 1 0 1 0 0 2 1 0 0 1 0 0 0 1 2 3 4
  • 8. Programación Dinámica Condiciones • Subestructura optima: La solución optima a un problema está construida a partir de la solución de sus sub-problemas. • Superposición de problemas: Los problemas se sobreponen. En una solución recursiva, el algoritmo calcula la solución a los mismos sub-problemas muchas veces. Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 8
  • 9. Programación Dinámica Otros ejemplos: • Longest common subsequence (LCS): Detectar la sub-secuencia más grande a partir de dos secuencias, de aquí deriva la distancia de Levenshtein utilizada para la detección de plagiarismo. • Número de caminos: ¿Cuántos caminos hay entre un punto (0, 0) a un punto (i, j)? De aquí deriva el algoritmo Floyd-Warshall. • Multiplicación de cadenas de matrices: La multiplicación de matrices es asociativa, ¿De que forma deberíamos de agrupar los paréntesis para hacer la menor cantidad de cálculos? Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 9
  • 10. Backtracking • Genera todas las posibles combinaciones para un problema • Se basa en el “stack” generado durante la recursión • Cuando la función recursiva regresa, regresamos al estado anterior Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 10
  • 11. Backtracking Método general: • Identificar los casos base • Detectar los posibles estados que se pueden generar a partir de un punto inicial • Mover al primer estado y aplicar recursión • Probar sobre todos los estados • En caso de que ninguno resuelva el problema, volver al estado inicial y regresar un valor Public | Ricardo Sánchez Castillo 2015 | University of Nottingham 11