Qué es Programación Dinámica
4684 단어 programmingspanish
Básicamente estamos optimizando problemas mediante una optimización de los problemas más pequeños que componen el problema más grande en cuestión.
Se necesita tener problem as empalmados para poder utilizar programación dinámica. Esto quiere decir que la solución óptima se obtiene al resolver el mismo problema en varias ocasiones.
Un buen ejemplo de la optimización siguiendo la descripción anterior es la memoización.
메모이사시온
Memoización es guardar el resultado de operation previas para que en el futuro sea simplemente Consultar en la memoria el resultado previamente guardado y de esa manera ahorrar en tiempo de ejecución.
예시:
누메로 데 피보나치
F(n) = F(n-1) + F(n-2)
Al implementar fibonacci siguiendo el proceso estricto de la fórmula, se obtiene un algoritmo ineficiente porque el crecimiento computacional (complejidad) es exponencial.
Sin embargo, para poder obtener una respuesta favoury y correcta, es obligatorio realizar el mismo proceso repetitivo.
문제를 해결하기 위해 문제를 풀지 않으려면 반복적인 형식으로 실현해야 하며 동적 프로그래밍을 최적화할 수 있는 결과를 얻을 수 있으며 메모를 통해 새로운 해결 방법을 사용할 수 있습니다.
import sys
def fibonacci_recursive(n):
if n == 0 or n == 1:
return 1
return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)
def fibonacci_with_memo(n, memo={}):
if n == 0 or n == 1:
return 1
try:
return memo[n]
except KeyError:
resultado = fibonacci_with_memo(n - 1, memo) + fibonacci_with_memo(n - 2, memo)
memo[n] = resultado
return resultado
if __name__ == "__main__":
sys.setrecursionlimit(10002)
n = int(input("Escoger número: "))
result = fibonacci_with_memo(n)
print(result)
Reference
이 문제에 관하여(Qué es Programación Dinámica), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/cyberdelahoz95/que-es-programacion-dinamica-36g3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)