由股票收益问题再看分治算法和递归式

nomasp
领域专家: 算法与数据结构技术领域
2015-05-27 09:32:54
...全文
415 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
根据原作 https://pan.quark.cn/s/b36468ab518c 的源码改编 动态规划方法在某种程度上类似于分治策略,其核心理念同样是将待处理的问题拆分成多个更小的子任务,先逐一解决这些子任务,再综合这些子任务的成果来获得原始问题的答案。 然而,动态规划与分治方法存在一个关键差异,即适用于动态规划处理的问题,在分解后产生的子任务往往具有关联性而非孤立。 子任务之间包含许多共同的子任务,在采用分治策略求解时会被反复进行计算,通过保存计算结果,为后续计算提供直接依据,从而减少重复计算的次数,这构成了动态规划的基本理念。 动态规划方法作为一种优化手段,常用于处理复杂性问题,其关键理念在于通过逐步分解问题来构建全局最优解。 尽管动态规划与分治方法在解决问题时都采用了将复杂问题简化为简单问题的策略,但两者之间存在明显不同。 分治方法通常处理相互独立的子任务,而动态规划则着重于子任务之间的重叠部分,避免重复计算,通过存储并复用已解决的子任务来提升效率。 动态规划的基本步骤主要包括以下几个环节:1. **最优解的性质描述**:我们需要明确界定问题的最优解应具备哪些特征。 这通常涉及到问题的内在结构特征,例如最短路径、最大收益等。 2. **递归定义最优值**:随后,定义一个递归来展现原问题的最优解与子任务的最优解之间的联系。 比如,斐波那契数列的动态规划求解方法就是通过递归定义每一项与前后两项的关系。 3. **自底向上的计算过程**:从基础情况开始,逐步计算出所有子任务的最优解,并将这些解存储在表格中,以避免重复计算。 这一过程被称为记忆化。 4. **最优解的构建**:在获得最优值的同时,记录下构建最优解的详细信息。 如果仅需要最优值,这一步骤可以省略。 但如果需要具体的最优解,这一...

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧