22 Marzo 2022 💈
Programación dinámica
- Tenemos un array donde guardamos resultados intermedios para calcular el resultado final.
- Es un método iterativo, cuyo origen es una función recursiva. Sustituimos las llamadas recursiva por accesos a las posiciones del array.
- Se repiten operaciones, por tanto se guardan las calculadas en un array para no recalcularlas varias veces.
Problema del cambio
Lo que no se ve son 10 céntimos :-)
- Buscar el mínimo para no pasarse, usando la moneda de la iteración o de iteraciones anteriores.
Backtracking
- Problema de las 8 reinas: colocar 8 reinas en un tablero sin que se coman.
- Backtracking explora el grafo, va desarrollando estados hasta que encuentra una solución. Es un algoritmo de fuerza bruta, puesto que lo que hace es desarrollar estados de forma rápida hasta encontrar una solución.
- Técnica ineficiente, con complejidades exponenciales.
- Grafo implícito: grafo que se desarrolla a medida que se va recorriendo. Ahorra tiempo de ejecución y espacio en memoria.
Esquema Backtracking
29 Marzo 2022 🗿
- Backtracking busca todas las soluciones posibles.
- También se puede buscar la solución óptima.
Poda de nodos
- Consiste en establecer una condición que impida seguir desarrollando nodos aunque sean válidos.
- Se aplica cuando tenemos que buscar una solución óptima.
- Backtracking tiene complejidad explonencial.
Ejercicio formar palabras a partir de un conjunto de letras
Problema de la asignación de tareas a agentes
- Se podría hacer una poda (costemejor).
5 Abril 2022 🔵
- Aplicamos la poda en los problemas de optimización.
Problema del salto del caballo
Tema 7, Ramificación y poda 🔊
- No hace falta tener una asignación secuencial.
- Backtracking es recursivo, mientras que poda es iterativo.
Diferencias de poda con backtracking:
- Desarrollo de los nodos en anchura.
- Aplicamos heuristico para seleccionar cuál de ellos vamos a desarrollar.
MALA FORMA, sirve para hallar una solución. Para hallar la solución óptima es malo.
19 Abril 2022 ⏰
- El heurístico de ramificación permite saber los nodos que llevan a la solución final
- El heurístico de poda permite ir eliminando aquellos nodos que superen la cota.