动态规划详解
发布网友
发布时间:2022-03-24 06:08
我来回答
共2个回答
懂视网
时间:2022-03-24 10:29
动态规划的基本思想是将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解;对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并把答案保存起来,让以后再次遇到时直接引用答案,不必重新求解。
动态规划( dynamic programming )算法是解决多阶段决策过程最优化问题的一种常用方法,难度比较大,技巧性也很强。利用动态规划算法,可以优雅而高效地解决很多贪婪算法或分治算法不能解决的问题。
热心网友
时间:2022-03-24 07:37
动态规划思想的核心是分解和去重复。
分解是指:动态规划方法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解综合得到原问题的解。
子问题一般是互相联系的,所以若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。
改进的办法就是 去重复:保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。我们可以用一个表来记录所有已解的子问题的答案。不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中。
而且,动态规划有大体的步骤,但是没有详细、明确的数学模型和解题公式,所有的问题都要具体分析和解决,所以才常常出现在竞赛的问题里面。
确切的说,动态规划不是一种算法,而是一种思想,它是运筹学的重要研究内容,而后引入到算法研究中,根本没有明确、细致而且适合一切动态规划问题的伪代码。
学动态规划,就是要多做练习题,多观察和总结,像其他算法一样背算法是没什么用的,因为变化太多,背过一种换一种考法就没用了。