最优解问题的求解

1. 一般来说题目中需要求解出最优解的问题,我们是可以使用普通递归,递推,深度优先搜索,记忆型的递归,贪心或者动态规划来进行求解的

其中使用普通的递归或者深搜,递推这些数据量较小的情况下求解速度还行,假如数据量相对大一点的情况下,而且节点的数量比较多,这个时候使用这些方法来解决往往会耗时比较大,有时候都需要求解半天了,原因是它需要搜索搜索的可能,把每一条路都尝试一遍,等到所有的路径走完才结束搜索,时间复杂度是指数级别的上升的,所以来说代码的性能会比较差一点

而使用我们的贪心或者动态规划来求解的话那么将会大大降低时间复杂度,因为它不会去搜索每一条路径,而是每一步都在当前所有可能的组合中找出一个最佳的方案,并且保存历史上的这些最佳方案,由子问题的局部最优解逐步逼近最终问题的最优解,那么最终就会求解出最终我们要求的最佳方案,在逼近的过程中往往运用到的是实际上多个子问题的最优解来进行当前子问题的最优解的推导,这也是动态规划的核心所在

所以来说动态规划是在当前子问题的组合中寻找组合中最优方案求解的过程,使用历史上的保存的最优解的结果进行逐步逼近最终答案的过程,其中使用到的是空间换时间的策略,所以来说相对于其他方法来解决这种问题是较优的

2. 所以对于这种最优解的问题我们最好使用动态规划来进行求解,因为这样可以提高我们代码的性能,使用动态规划来解决也可以培养我们思考问题的方式,提高我们解决问题的能力

你可能感兴趣的:(贪心与动态规划)