动态规划、贪心算法、分治算法的优缺点分析

2023-05-16

动态规划模型相对于静态规划模型的优点:
1. 能够得到全局最优解;
2. 可以得到一族最优解;
3. 由于动态规划方法反映了动态过程演变的联系和特征,在计算时可以利用实际知识和经验提高求解效率。
动态规划模型的缺点:
1. 没有统一的标准模型;
2. 数值方法求解时存在维数灾。(需要额外的内存空间,并且一维问题可能需要二维空间)


《算法之道》对三种算法进行了归纳总结,如下表所示:

 

标准分治

动态规划

贪心算法

适用类型

通用问题

优化问题

优化问题

子问题结构

每个子问题不同

很多子问题重复(不独立)

只有一个子问题             

最优子结构

不需要

必须满足

必须满足

子问题数

全部子问题都要解决

全部子问题都要解决

只要解决一个子问题

子问题在最优解里

全部

部分

部分

选择与求解次序

先选择后解决子问题

先解决子问题后选择

先选择后解决子问题

分治算法特征:

    1)规模如果很小,则很容易解决。//一般问题都能满足

    2)大问题可以分为若干规模小的相同问题。//前提

    3)利用子问题的解,可以合并成该问题的解。//关键

    4)分解出的各个子问题相互独立,子问题不再包含公共子问题。 //效率高低

【一】动态规划:

       依赖:依赖于有待做出的最优选择

       实质:就是分治思想和解决冗余。

       自底向上(每一步,根据策略得到一个更小规模的问题。最后解决最小规模的问题。得到整个问题最优解)

         特征:动态规划任何一个i+1阶段都仅仅依赖 i 阶段做出的选择。而与i之前的选择无关。但是动态规划不仅求出了当前状态最优值,而且同时求出了到中间状态的最优值。

          缺点:空间需求大。

【二】贪心算法:

       依赖:依赖于当前已经做出的所有选择。

       自顶向下(就是每一步,根据策略得到一个当前最优解。传递到下一步,从而保证每一步都是选择当前最优的。最后得到结果)

【三】分治算法:

        实质:递归求解

        缺点:如果子问题不独立,需要重复求公共子问题

=> 写于2021/11/10

同学你好,谢谢你喜欢我的文章,这是我坚持写作的动力之一。

从2019年2月至今,在两年多时间内,我总共在csdn写下184篇文章。持续不断的学习和输出给我带来巨大的进步,也让我作为一个非科班本科生入门编程,最终得到进入大厂继续工作和学习的机会。我无比珍惜眼前来之不易的成果。

但是,由于这些文章大多是博主学习过程的记录,质量难免参差不齐。

为了提高对自己的要求,也为了提供更高质量的技术分享,博主决定重新启程,转至“知乎”进行创作,欢迎与你一同学习、交流和讨论。今天也要开心鸭icon-default.png?t=LA92https://www.zhihu.com/people/jin-tian-ye-yao-kai-xin-ya-58-32

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态规划、贪心算法、分治算法的优缺点分析 的相关文章

  • Nacos2.2.0适配Oracle12C-建表ddl语句

    span class token keyword create span span class token keyword table span CONFIG INFO span class token punctuation span I
  • Docker快速入门

    1 基本概念 用途 核心思想 docker应用广泛 docker是一个用来装程序及其环境的容器 xff0c 属于linux容器的封装 xff0c 提供简单易用的容器使用接口 解决了环境配置的难题 xff0c 每台电脑环境都不一样 xff0c
  • Kettle-数据同步、将表数据导入到另一张表、不同数据库表数据导入

    Kettle 数据同步 将表数据导入到另一张表 不同数据库表数据导入 选择转换选择表输入双击表输入组件 xff0c 打开编辑框 xff0c 双击数据连接新建按钮添加对应数据库驱动输入源数据查询sql新增输出端表输出 xff08 全量新增 x
  • Oracle-ORA-01461:can bind a LONG value only for insert into a LONG column解决办法之二!

    ORA 01461解决办法 问题场景1 xff1a sql中使用from dual分析解决 场景2 xff1a 字符串超长解决 问题 在客户现场执行写入逻辑时遇到异常 ORA 01461 xff1a can bind a LONG valu
  • Kettle-excel数据同步

    Kettle excel数据同步 Excel输入组件编辑文件选择选择工作表内容字段预览记录 Excel输入组件 编辑 文件选择 选择工作表 内容 字段 若String类型不设置长度 xff08 或设置为 1 xff09 xff0c 则默认长
  • oracle中数据类型number(9,2)的意思

    9表示这个数据的有效位数 xff08 精度 xff09 xff0c 2表示两个小数位 xff08 刻度 xff09 例如 xff1a 1234567 89
  • mybatis-忽略实体对象的某个属性

    方法一 xff1a 在需要忽略的属性上增加 64 transient注解 javax persistence Transient transient是类型修饰符 xff0c 只能用来修饰字段 在对象序列化过程中 xff0c 被transie
  • Elasticsearch -删除索引(index)

    删除单个 DELETE index curl XDELETE 39 http 192 169 1 666 9200 index 你也可以这样删除多个索引 xff1a DELETE index one index two curl XDELE
  • STM32F103ZET6程序移植为C8T6+C8T6下载程序flash timeout的解决方案

    文章目录 一 程序移植 xff1a 程序移植还是蛮简单的二 程序下载 会出现问题 xff08 一 xff09 BOOT0和BOOT1 xff08 二 xff09 程序下载1 代码通用2 状况不断3 解决办法 xff08 三 xff09 ST
  • Android-Studio-Chipmunk版本解决gradle报错connection-refuse的问题

    Android Studio Chipmunk版本解决gradle报错connection refuse的问题 文章目录 Android Studio Chipmunk版本解决gradle报错connection refuse的问题一 问题
  • MapReduce编程-join算法实现

    假设有订单表t order和t product两张数据库表 xff0c 现在需要进行关联查询 这样的sql语句很容易写 select a span class hljs preprocessor id span a span class h
  • 《将博客搬至CSDN》

    将博客搬至CSDN
  • 3D打印Gcode文件命令详解

    目录 3D打印Gcode文件命令详解Gcode文件作用 常用命令 命令 注释G28命令 复位G90和G91命令 设置定位模式M82和M83命令 设定挤丝模式G1命令 运动命令G92命令 设置当前位置M104和M109命令 加热喷嘴M140和
  • 机器学习系统安全

    Abstract 机器学习 已经成为当前计算机领域研究和应用最广泛的技术之一 xff0c 在图像处理 自然语言处理 网络安全等领域被广泛应用 然而 xff0c 一些机器学习算法和训练数据本身还面临着诸多安全威胁 xff0c 进而影响到基于机
  • 汇编语言测试

    汇编测试
  • 汇编语言-DosBox环境搭建

    汇编语言 王爽 问题 xff1a debug 不是内部或外部命令 原因 xff1a 现在windows下不集成了 xff0c 我们可以利用DosBox工具帮助我们学习汇编 汇编语言环境搭建 参考帖子 xff1a https www cnbl
  • 矩阵快速幂详解

    矩阵快速幂 在讲矩阵快速幂之前 xff0c 先引入整数快速幂的概念 整数快速幂 为了引出矩阵快速幂 xff0c 以及说明快速幂算法的好处 xff0c 我们可以先求整数的幂 如果现在要算X 8 则X X X X X X X X X 按照寻常思
  • ubuntu 20.04安装ROS noetic添加秘钥失败 gpg: no valid OpenPGP data found.

    在安装ROS noetic时 xff0c 可能会遇到以下错误 当运行以下命令时 curl s https raw githubusercontent com ros rosdistro master ros asc sudo apt key
  • 【CentOS7 Samba服务器配置】

    第四章 Samba服务器配置 文章目录 第四章 Samba服务器配置前言一 Samba是什么 xff1f 二 使用步骤1 安装软件包2 配置Samba服务器3 创建文件夹4 添加 Samba 用户5 开启服务6 测试 总结 前言 本章学习S
  • ArgumentError: Could not parse rfc1738 URL from string

    使用flask sqlacodegen遇到如上问题时 xff0c 引号要用双引号 xff0c 并且要mysql xff08 如果你使用的是其他的数据库这里应该填你使用的数据库 xff09 注意 注意 注意要加上数据库驱动 xff0c 向下面

随机推荐

  • 多任务学习为什么有效?

    前言 多任务学习 xff08 Multi task Learning MTL xff09 在机器学习领域应用广泛 xff0c 比如自然语言处理和计算机视觉等领域 xff0c 这也侧面反映了 MTL 的有效性 本文将从 MTL 的概念 使用动
  • 简单绕过chrome(谷歌游览器) 查看已保存的密码

    利用场景 xff1a 同事或朋友外出有事 xff0c 电脑未锁屏离开座位 可以利用这一间隙 xff0c 查看Ta在Chrome浏览器上保存的账号密码 查看逻辑 xff1a 当我们要查看Chrome浏览器上保存的密码时 xff0c 点击显示
  • 根据数据库表生成 model 类

    根据数据库表生成 model 类 创建一个Django项目 code django admin startproject xxxx code 修改setting文件 xff0c 在setting里面设置你要连接的数据库类型和连接名称 xff
  • STM32基础(4)使用SysTick滴答定时器实验精准延时

    原理 SysTick 定时器也叫 SysTick 滴答定时器 xff0c 它是 Cortex M3 内核的一个外设 xff0c 被嵌入在 NVIC 中 它是一个 24 位向下递减的定时器 xff0c 每计数一次所需时间为 1 SYSTICK
  • 在px4,gazebo环境中添加激光雷达,双目相机和下视摄像头

    在搭建好px4的仿真环境后 xff0c gazebo中仅为一架裸机 xff0c 不含其他传感器 本文将在该环境下把激光雷达 xff0c 双目相机 xff0c 下视摄像头集成到飞机上 xff0c 方便后续的算法测试 修改仿真启动文件 找到 F
  • Oauth2.0的四种模式

    1 授权码模式 xff08 1 xff09 资源拥有者打开客户端 xff0c 客户端要求资源拥有者给予授权 xff0c 它将浏览器被重定向到授权服务器 xff0c 重定向时会 附加客户端的身份信息 如 xff1a uaa oauth aut
  • nvidia-smi报错:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver

    输入nvidia smi显示 NVIDIA SMI has failed because it couldn t communicate with the NVIDIA driver 但是torch cuda is available 还能
  • RunnerGo开源版的安装教程(Windows)

    文章目录 一 启动Hyper V服务二 安装docker三 准备 docker 和 docker compose 环境四 cd runnergo 进入到目录五 配置文件 config env 修改 默认基本可以不用改六 修改应用暴露的端口号
  • Docker Desktop requires a newer WSL kernel version.

    问题描述 xff1a Docker Desktop requires a newer WSL kernel version 问题截图 xff1a 问题原因 xff1a WSL不是最新版 解决方案 xff1a 适用于 Linux 的 Wind
  • 傅里叶变换(一)——认识傅里叶变换

    注 xff1a 本文为博主参考书籍和他人文章并加上自己的理解所编 xff0c 作为学习笔记使用并将其分享出去供大家学习 若涉及到引用您的文章内容请评论区告知 xff01 如有错误欢迎指正 xff01 参考文章 xff1a https zhu
  • 解决笔记本装linux后触摸板无法用的问题

    困扰好久 xff0c 好像没多少人遇到类似的问题 xff1f 仅把我的解决办法分享出来提供一个思路 那就是 把内核版本升级到4 17以上 至于更换内核教程 xff0c 参考这里安装和使用新的内核 要比教程里多下载一个 linux modul
  • 快速幂和矩阵快速幂

    快速幂 快速幂是数论中最简单的几种算法之一 xff0c 顾名思义 xff0c 就是快速计算某个数的多少次幂 相较于传统循环pow的计算方法 xff0c 快速幂的复杂度为 O l o g 2
  • ucosii中消息队列、消息邮箱、信号量的区别

    1 用信号量进行行为同步时 xff0c 只能提供同步的时刻信息 xff0c 不能提供内容信息 若被控制方要求得到控制方的内容信息时 xff0c 可以使用消息邮箱或消息队列 2 但由于消息邮箱里只能存放一条消息 xff0c 所以使用消息邮箱进
  • 项目时间管理的几种方法

    随着项目活动分解的深入和细化 xff0c 工作分解结构 WBS 可能会需要修改 xff0c 这也会影响项目的其他部分 例如成本估算 xff0c 在更详尽地考虑了活动后 xff0c 成本可能会有所增加 xff0c 因此完成活动定义后 xff0
  • 【内网学习笔记】25、Exchange 邮件服务器

    1 Exchange 的基本操作 在 Exchange 服务器上的 PowerShell 里进行以下操作 将 Exchange 管理单元添加到当前会话中 add pssnapin microsoft exchange 查看邮件数据库 Get
  • cuda.tensor转为numpy, 以及numpy与tensor互相转换

    1 cuda tensor转为numpy 解决 TypeError can 39 t convert cuda 0 device type tensor to numpy Use Tensor cpu to copy the tensor
  • [软件工程]第三章 结构化方法————(2020.6.11学习笔记)

    目录 1 xff0c 第一节 结构化需求分析 2 xff0c 第二节 结构化设计 第一节 结构化需求分析 需求分析面临的挑战 xff08 1 xff09 问题空间理解 xff08 2 xff09 人与人之间的通信 xff0c 有效沟通 xf
  • ESP8266系列WIFI模块的使用·

    一 概述 ESP8266是由乐鑫公司出品的一款物联网芯片 xff0c 因为价格较低 xff0c 性能稳定等收到很大关注 该芯片可工作于三种种模式下 xff0c 分别是 xff1a AP模式 xff0c station模式以及混合模式 xff
  • idea中使用actiBPM

    在idea中actiBPM插件的支持不是太友好 xff0c 顺便附上插件下载地址 链接 xff1a https pan baidu com s 1cyaDGDXWtJuWys3WVG98qA 提取码 xff1a onuz 因此在这里记录一下
  • 动态规划、贪心算法、分治算法的优缺点分析

    动态规划模型相对于静态规划模型的优点 xff1a 1 能够得到全局最优解 xff1b 2 可以得到一族最优解 xff1b 3 由于动态规划方法反映了动态过程演变的联系和特征 xff0c 在计算时可以利用实际知识和经验提高求解效率 动态规划模