有没有真正的通用模式可以解决任何动态规划问题?

问题描述 投票:0回答:1

我知道有一个解决动态规划问题的通用模式。组成:

  1. 通过将问题分解为独立解决的较小子问题来识别重叠子问题。

  2. 通过创建数据结构来存储子问题的解决方案(通常是哈希图)进行记忆

  3. 初始化基本案例以识别基本案例或琐碎的子问题并初始化其解决方案

  4. 通过迭代子问题来填写记忆表

  5. 最后,返回最终解决方案。

一旦记忆表填满,问题的解决方案通常可以在表的最后一个条目或代表所需结果的特定条目中找到。

但是,它仅适用于更简单的问题,例如下面代码中的斐波那契问题。

def fibonacci(n, memo={}):
    if n in memo:
        return memo[n]
    if n <= 1:
        return n
    
    result = fibonacci(n - 1, memo) + fibonacci(n - 2, memo)
    memo[n] = result
    return result

# Example usage
n = 10
print(f"The {n}-th Fibonacci number is: {fibonacci(n)}")

我们是否需要训练自己解决大量动态规划问题,才能看到适用于解决任何规模、任何复杂性的任何动态规划问题的模式?或者有什么秘方可以复制?

我尝试找到可复制的通用模式来解决 Python 中的任何动态编程问题

python python-3.x data-structures dynamic-programming
1个回答
0
投票

不。一般来说,您应该尝试对问题进行建模,以便可以从中创建动态编程数组。如果你能做到(记住或自下而上),那么你就拥有了。不。一般来说,您应该尝试对问题进行建模,以便可以从中创建动态编程数组。如果你能做到(记住或自下而上),那么你就拥有了。

© www.soinside.com 2019 - 2024. All rights reserved.