运行时间-动态编程算法

时间:2018-12-18 09:05:42

标签: dynamic-programming

任何解决最终解决方案中N个子问题的动态规划算法,都必须在Ω(N)时间内运行。

这句话是真的吗?我认为确实如此,因为我需要计算每个子问题。请让我知道我是否错

1 个答案:

答案 0 :(得分:0)

简短的回答是“否”。动态编程比实际算法更像是一种提高性能/缩短运行时复杂度的策略。在不了解特定问题的实际算法的情况下,无法说出时间复杂度。

DP的想法是使用记忆(通过占用一些空间)来加快现有算法的速度。此外,可以应用DP的每种算法都可能以不同的方式加速。无需多次重新计算同一子任务,您将不得不将中间结果存储在另一个数据结构中。如果数据结构中再次需要结果,则将直接返回存储的中间结果

话虽如此,DP问题的时间复杂度是唯一状态/子问题的数量*每个状态花费的时间。

这里是DP解决N个子问题并且计算不是Ω(N)的一个示例。  假设您的DP需要O(n)个子问题,而评估每个子问题的成本为O(logn)二进制搜索加上恒定时间操作。

然后整个算法将花费O(n * logn)。