首页 > 其他分享 >贪心与动规(动态规划)

贪心与动规(动态规划)

时间:2025-01-21 12:03:08浏览次数:3  
标签:复杂度 问题 算法 最优 动态 全局 动规 贪心

1.贪心与动规的区别

贪心算法和动态规划的主要区别在于它们解决问题的方式、能否保证得到最优解以及算法复杂度‌。

  1. 解决问题的方式‌:

    • 贪心算法:在每一步选择中都采取当前状态下最优的选择,从而希望导致结果是全局最优的。它通常不考虑未来后果,只关注当前的最优解‌。
    • 动态规划:将原问题分解为子问题,通过解决子问题,并将子问题的解存储下来(通常是存储在一个表格中),在解决原问题时利用这些子问题的解。它通常以自底向上的方式构建子问题的解,并最终得到全局最优解‌。
  2. 能否保证得到最优解‌:

    • 贪心算法:由于它只关注当前的最优选择,而不考虑全局最优,因此并不能保证在所有情况下都能得到全局最优解。贪心策略的选择是关键,但并非总是有效‌。
    • 动态规划:通过全面分析问题的所有子问题,并保存子问题的解,动态规划可以保证找到全局最优解。虽然它的速度可能较慢且更复杂,但它能够确保结果的正确性‌。
  3. 算法复杂度‌:

    • 贪心算法:通常更快更简单,因为它不需要存储中间状态的解,也不需要全面分析所有可能的子问题‌。
    • 动态规划:由于需要存储子问题的解,并全面分析所有可能的子问题,因此它的复杂度通常更高。然而,这种复杂度换来了全局最优解的保证‌。

综上所述,贪心算法和动态规划在解决问题的方式、能否保证得到最优解以及算法复杂度方面存在显著差异。在实际应用中,需要根据问题的具体特点和需求选择合适的算法。

标签:复杂度,问题,算法,最优,动态,全局,动规,贪心
From: https://blog.csdn.net/Yinrtyu_/article/details/145269209

相关文章

  • JAVA动态代理
    什么是动态代理  动态代理是一种设计模式,允许开发者在运行时动态地创建实现了一组接口的代理对象。这些代理对象在调用目标对象的方法时,可以在方法调用前后添加自定义的逻辑,而无需修改目标对象的代码。动态代理的核心思想是提供一种灵活的方式来增强或改变原有对象的行为......
  • 动态监控主动上位-哨兵(Sentinel)
    动态监控主动上位在RedisSentinel的高可用架构中,动态监控主动上位(通常称为故障转移或自动故障转移,failover)是Sentinel执行的一个关键流程,它确保在主节点出现故障时,自动将某个从节点提升为新的主节点,从而保证Redis服务的持续可用性。下面我们将详细介绍Sentinel......
  • 代码随想录——动态规划31打家劫舍III(树状DP)
    这道题目是打家劫舍III(HouseRobberIII),是打家劫舍系列问题的变种。问题描述如下:小偷发现了一个新的区域,这个区域的所有房屋排列类似于一棵二叉树。如果两个直接相连的房屋在同一晚被打劫,房屋会自动报警。给定这棵二叉树的根节点root,求在不触发警报的情况下,小偷能够盗取的最......
  • 【动态规划】最长上升子序列(Longest Increasing Subsequence)问题以及输出具体方案
    最长上升子序列两道模板题(一样的)洛谷B3637最长上升子序列AcWing895.最长上升子序列题目描述这是一个简单的动规板子题。给出一个由\(n(n\le5000)\)个不超过\(10^6\)的正整数组成的序列。请输出这个序列的最长上升子序列的长度。最长上升子序列是指,从原序列中按顺......
  • 使用贪心算法解决最小生成树问题
    大家好,我是V哥。今天跟大家聊一聊贪心算法问题,因为遇到这个面试题,问贪心算法解决最小生成树是怎么设计的,以及如何应用?好家伙,这面试官一上来就不按套路出牌,直接上难度,如果你遇到这样的问题,该怎么办呢。下面V哥来详细聊一聊。贪心算法解决最小生成树问题的一般步骤一、解决思......
  • 反悔贪心小记
    额这个东西也是高中觉得挺难的,一直没有真正理解内涵,现在又做了道题后觉得真的还好,还是没有理解原理导致的。那就简单记录一下吧。例:低谷在给定长度为\(n\)的数组中,通过最多进行\(k\)次任意元素减一操作,求操作后数组中可能出现的最大低谷数。对于数组\(a\),位置\(i\)是低......
  • Avalonia 动态设置主题和色彩
    四套主题Default、Forest、Lavender、Nighttime,2种色彩Dark和Light不同主题下需要显示的颜色不同,不同的色彩需要显示的图标颜色不同。首先需要4个主题样式文件Default.axmal、Forest.axmal、Lavender.axmal、Nighttime.axmal2套图标资源,Dark和Light动态实现:1.资源(举个例子)<......
  • 基础动态规划讲解
    (标题就叫这个吧,我也没什么主意了)动态规划,要给这个这个东西下个定义,确实不太好下,他是一种基于状态来思考问题的算法思想用来表示状态的话,那就是dp,(这么说好抽象),就直接说涉及动态规划的题目怎么处理吧,这个还是有步骤可行的,就按如下步骤操作1.寻找子问题2.找出状态转移方程3.最......
  • 蓝桥杯备赛笔记(九)动态规划(一)
    1.动态规划基础(1)线性DP1)什么是DP(动态规划)DP(动态规划)全称DynamicProgramming,是运筹学的一个分支,是一种将复杂问题分解成很多重叠的子问题,并通过子问题的解得到整个问题的解的算法。在动态规划中有一些概念:状态:就是形如dp[i][j]=val的取值,其中i,j为下标,也是用于描述、......
  • 动态规划——26单词拆分
    这道题用代码随想录的解释有点牵强,第二层for循环和递推公式也没有说明白。代码classSolution{public:boolwordBreak(strings,vector<string>&wordDict){unordered_set<string>set(wordDict.begin(),wordDict.end());//字典单词是物品,s是背包......