最近在做USACO的training,又碰到了greedy algorithm的训练章节。回想起来大学时光学习dynamic programming的时候,一直搞不清,后来看Introduction to Algorithm,突然顿悟,那种感觉真的是很爽,我觉得一直学不明白,有一天突然顿悟的感觉,大家都应该去体验一下,真的很爽。
greedy的思想太简单了,每次都找最优的,也就是每次的结果只有一个点咯。不过应用greedy algorithm的时候需要特别注意条件,局部最优即全局最优。这是多于dynamic programming的一点。
然后dynamic programming吧,它和greedy的不同是什么?没有局部最后即全局最优的这种优势,但这次的状态是基于前一状态的,那么前一状态是什么呢?不好意思我不知道。不知道怎么办,列出前一状态的所有状态,前一状态有哪些?还是不知道,那怎么办呢,从第一个阶段的状态开始记录,然后基于第一状态算出第二状态的最优,那么全局最优一定存在于这些局部最优的一个路线中。所以dp每次记录的是一系列状态,而不是像greedy只记录当前的最优解这一个状态。
所以才有了所谓的打表,理解了这一个过程,就理解了dp后续所有的优化。
相关推荐
动态规划和贪心算法的区别 动态规划和贪心算法是两种常用的算法思想,它们之间存在一定的关联和区别。在本文中,我们将详细介绍动态规划和贪心算法的定义、特点、区别和应用场景。 动态规划是一种算法思想,它通过...
贪心算法、分治算法和动态规划的区别 贪心算法、分治算法和动态规划是三种常用的算法设计策略,每种算法都有其特点和应用场景。下面我们将对这三种算法进行详细的比较和分析。 分治算法 分治算法是一种将原问题...
活动安排问题的动态规划、贪心算法和树搜索算法求解。 比如有一个多媒体教室,现在有四个待举办活动A、B、C、D。A是在8:00到10:00举行,简单记为[8, 10];B是[12, 14];C是[15, 17];D是[11, 19]。为了让尽可能多的...
贪心算法和动态规划的区别与联系 贪心算法和动态规划是两种常用的算法设计方法,它们都可以用于解决复杂的问题,但是它们之间存在着一些关键的区别和联系。 首先,让我们了解一下贪心算法和动态规划的定义。 贪心...
在计算机科学与算法设计领域,贪心算法、动态规划和分治法是三种常见的解决问题的方法,它们各自有着独特的策略和适用场景。本文将深入探讨这些算法之间的区别以及它们的优缺点。 首先,贪心算法是一种在每一步选择...
会议安排(贪心算法和动态规划) 会议安排问题是计算机科学中的一种经典问题,目的是在一系列活动中选择尽可能多的活动,使得每个活动的结束时间不早于下一个活动的开始时间。这个问题可以使用贪心算法和动态规划两...
动态规划和贪心算法是两种常用且重要的算法思想,广泛应用于各种复杂问题的求解。同时,XML解析也是现代应用程序中处理数据交换的重要技术。让我们深入探讨这些主题。 动态规划(Dynamic Programming, DP)是一种...
贪心算法和动态规划是两种常用的算法设计方法,它们都可以用来解决优化问题,但它们的解决思路和应用场景不同。 贪心算法是一种解决优化问题的算法,通过在每一步都做出当前看起来最优的选择,来获取全局最优解。...
贪心算法和动态规划是计算机科学领域中解决优化问题的两大经典策略。它们在不同的问题场景中显示出各自的优势和局限性,为程序设计者提供了丰富的工具来寻找问题的最优解。 贪心算法的核心在于局部最优选择,即在每...
在IT领域,算法是解决问题的核心工具,而递归与分治策略、动态规划、贪心算法、回溯法、分支限界法以及随机化算法都是其中的重要组成部分。这些算法不仅适用于计算机科学,也在数据结构、优化问题和复杂计算中扮演着...
在计算机科学领域,动态规划、回溯法和贪心算法是三种重要的问题解决策略,广泛应用于各种优化问题和复杂计算中。本实验文档详细探讨了这三种算法,并通过实际案例来帮助理解它们的工作原理和应用。 首先,动态规划...
"贪心算法和动态规划(Java实现)" 贪心算法是一种常用的算法设计策略,它所做出的选择总是当前看来是最好的。贪心算法的设计关键是选择贪心策略,且必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只...
贪心算法和动态规划之间的区别在于,贪心算法通常在每一步选择最优解,而动态规划则在所有可能的解决方案中寻找全局最优解。贪心算法可能适用于问题的局部最优解能保证全局最优的情况,而动态规划则适用于问题具有最...
贪心算法、动态规划和分治法的区别 贪心算法是指在当前看来是最好的结果,不考虑整体情况,只关心局部最优解。它从上往下,从顶部一步步最优,得到最后的结果,但不能保证全局最优解。贪心策略的选择也影响到结果。...
贪心算法和动态规划是两种常见的优化问题解决方法,在计算机科学和算法设计中扮演着重要角色,特别是在解决ACM(国际大学生程序设计竞赛)中的问题时。这两种方法各有特点,适用于不同的问题类型。 贪心算法的基本...
这两种问题都可以通过动态规划和贪心算法来解决,每种方法都有其独特的优势和适用场景。 动态规划是一种强大的解决问题的方法,它通过将复杂问题分解为更小的子问题,然后存储和重用子问题的解来构建全局最优解。在...
总结来说,贪心算法和动态规划都是解决问题的重要工具,但它们适用的场景有所不同。贪心算法适用于那些可以通过一系列局部最优选择来构建全局最优解的问题;而动态规划则适用于那些可以通过分解为子问题,并利用子...
ES6的JavaScript算法思想实现之分而治之、动态规划、贪心算法和回溯算法 一、分而治之算法思想实现 分而治之算法是一种常用的算法思想,它将原问题分解为多个小问题,解决小问题,然后将小问题的解决方案组合起来...
算法分析与设计实验-基于Vue3和Typescript实现的排序、动态规划、贪心算法、检索源码.zip算法分析与设计实验-基于Vue3和Typescript实现的排序、动态规划、贪心算法、检索源码.zip算法分析与设计实验-基于Vue3和...