目录

动态规划和启发式算法有什么区别

动态规划和启发式算法的区别是:动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程优异化的过程;启发式算法(heuristic algorithm)是相对于优异化算法提出的。

一、动态规划和启发式算法的区别

动态规划

动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程优异化的过程。动态规划算法通常用于求解具有某种优异性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有优异值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。我们可以用一个表来记录所有已解的子问题的答案。不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中。这就是动态规划法的基本思路。具体的动态规划算法多种多样,但它们具有相同的填表格式。

启发式算法

启发式算法(heuristic algorithm)是相对于优异化算法提出的。一个问题的优异算法求得该问题每个实例的优异解。启发式算法可以这样定义:一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解,该可行解与优异解的偏离程度一般不能被预计。现阶段,启发式算法以仿自然体算法为主,主要有蚁群算法、模拟退火法、神经网络等。

延伸阅读:

二、多阶段决策问题

如果一类活动过程可以分为若干个互相联系的阶段,在每一个阶段都需作出决策(采取措施),一个阶段的决策确定以后,常常影响到下一个阶段的决策,从而就完全确定了一个过程的活动路线,则称它为多阶段决策问题 [6]  

各个阶段的决策构成一个决策序列,称为一个策略。每一个阶段都有若干个决策可供选择,因而就有许多策略供我们选取,对应于一个策略可以确定活动的效果,这个效果可以用数量来确定。策略不同,效果也不同,多阶段决策问题,就是要在可以选择的那些策略中间,选取一个优异策略,使在预定的标准下达到较好的效果

以上就是关于动态规划和启发式算法有什么区别的内容希望对大家有帮助。