从最短路算法思考动态规划思想

动态规划的理论基石是最优性原理,它的思考方式采用的是递归思想,但是绝不可以直接用递归思想去实现,嵌套调用会非常非常慢。它真正的实现思路是先用递归思想逆着思考,然后用顺序实现方法顺向实现,这一点在最短路算法中已经有了非常生动直观的体现。

为什么基于数据本身结构(例如图结构)的动态规划算法往往是最有效的方法?

因为如果我们完全抛弃数据本身带着的结构,而把问题上升为一个抽象的数学问题,那么各个元素组合成的解集合会变得非常大,造成问题变成了一个NP难问题,然而解集合中存在大量的不可能出现的解,如果我们借助问题本身带有的数据结构的话。

很多图论算法都是借用了动态规划的思想来实现的,通过将问题自身携带的数据结构读入计算机,然后基于这些数据结构设计和实现算法,在隐枚举的过程中,由于是顺着问题本身的数据结构搜素问题的解,不知不觉跳过了大量的不可能出现的组合解,使得问题可以在多项式时间内被求解出来

你可能感兴趣的:(算法,机器学习)