En realidad, no están realmente relacionados, pero se pueden usar juntos.
El retroceso suele ser una forma recursiva de hacer una búsqueda profunda en primer lugar de una solución en un árbol de posibles soluciones, donde la pila de llamadas es un almacén de los nodos del árbol que tienen ramas no visitadas. Los subárboles se podan de manera óptima, por lo que un espacio de solución masivo se reduce a uno muy pequeño.
La programación dinámica es una forma de estructurar un algoritmo de manera que divida un problema mayor en subproblemas más pequeños y evite volver a calcular el mismo subproblema dos veces.
- ¿Cómo funciona el algoritmo de comprobación de cuentas falsas de Facebook?
- ¿Cuáles son algunos consejos para crear mi propia biblioteca para competencias de codificación?
- ¿Cuáles podrían ser los buenos proyectos basados en algoritmos?
- ¿Alguien ha utilizado un algoritmo genético para resolver la ecuación de Schrodinger (o alguna ecuación diferencial)?
- Cómo comenzar con algoritmos en CS
La programación dinámica puede mejorar algunos problemas de retroceso si las ramas del árbol se superponen, lo que significa que se está repitiendo el cálculo anterior.
Algunos problemas de seguimiento como N queens tienen árboles apropiados como el espacio de solución sin superposición entre las ramas, por lo que no hay forma de usar programación dinámica para eso.