2023-04-29 动态规划介绍

news2024/11/26 4:46:46

2023-04-29 动态规划介绍

动态规划是运筹学课程的一部分

多阶段决策问题

有一类活动的过程,可以分成若干个互相联系的阶段,在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果

当然,每个阶段的决策的选取不是任意确定的,它依赖于当前的状态,又会影响以后的发展

如下图,①、②...n这些长条代表整体过程按指定条件划分的阶段 s 、 t 、 t 1 s、t、t_1 stt1代表阶段中对象的状态 s − − > t s--> t s>t s − − > t 1 s-->t_1 s>t1的箭头线代表阶段的转移即决策,可以看出一个阶段到下一个阶段的决策是可能有多种的,所以称为多阶段决策问题
多阶段决策问题图示

当各个阶段决策决定以后,就组成一个决策序列,因而也就确定了整个过程的一个活动路线。
决策序列

这种把一个问题看做事一个前后关联、具有链状结构的多阶段过程就称为多阶段决策过程,这种问题就称为多阶段决策问题

动态规划问题

寻找上述多阶段决策过程中最优策略(即最优链路)的过程就是动态规划

各个阶段采取的决策,一般来说是与阶段有关的。

决策依赖于当前的状态,又随即引起状态的转移。

一个决策序列就是在变化的状态中产生出来的。

称这种解决多阶段决策最优化的过程为动态规划(Dynamic Programming,即DP)

动态规划是对解最优化问题的一种途径、一种方法,而不是一种特殊方法

由于各种问题的性质不同,确定最优解的条件也各不相同,因此不存在一种万能的动态规划算法可以解决各类最优化问题

在学习动态规划问题时,除了要对基本概念和方法正确理解之外,还必须要对具体问题具体分析,以丰富的想象力去建立模型,用创造性的技巧去求解

我们将通过对若干有代表性的问题的动态规划算法进行分析、讨论,逐渐学会并掌握这一设计方法

进一步地,还会介绍一些常见的优化动态规划的时空复杂度的做法,从而冲刺高分,希望他同学们最好能够掌握

常见的DP问题类型

参考博客:基本DP模型总结

  • 线性DP:在一个序列上划分n个阶段求最佳策略
  • 区间DP:以区间为状态,即 f [ l ] [ r ] f[l][r] f[l][r]表示区间 [ l , r ] [l,r] [l,r]的答案.
  • 背包DP:固定体积的背包,如何装不同价值的物品来达到价值最大
  • 数位DP:统计满足一定条件的数的数量

    数位:把一个数字按照个、十、百、千等等一位一位地拆开,关注它每一位上的数字。如果拆的是十进制数,那么每一位数字都是 0~9,其他进制可类比十进制。

  • 状态压缩DP:记录DP中简单状态(能用0和1表示),一个最简单的方法是记录n个0/1,但这样子太麻烦了,可以把这n个0/1压成一个数,进而利用计算机中方便的二进制操作进行转移.
  • 树状DP:简单的树形DP通常是设f[i]表示以i为根的子树,然后直接把所有儿子合并到父亲身上.

常见的DP优化方法

  • 节省时间的优化方法
    • 矩阵乘法优化
    • 斜率优化
    • 四边形不等式优化
    • 决策单调性优化
  • 节省空间的优化方法
    • 滚动数组优化

      滚动数组实际就是滑动窗口

  • 同时优化时间和空间的方法
    • 数据结构优化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/475667.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

dc-6靶机

1.使用nmap进行信息搜集,存活主机,端口 192.168.85.184是存活主机,发现开放22,80端口 2.访问192.168.85.184的80端口 发现被重定向了,修改hosts文件 vim /etc/hosts 添加一行 192.168.85.174 wordy3.对网站进行信息搜…

彻底解决 Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0 解决方法

当我遇到这错误的时候,我去网上也找过对应解决方法,出现这个的原因有很多种情况 大多是解决Linux系统里的 我是windows系统里的MySQL服务出问题了,所有那些方法对我来说毫无意义. 好了,说一下我的解决办法,其实也很简单 只需要卸载mysql服务,注册表也要删干净,也要把环境变…

C的文件操作

🐖前言 🐕1.为什们我们要用文件 在我们之前写程序时,如果使用scanf函数用键盘输入数据,这些东西都放到内存当中,一旦退出程序,那么这些数据就会消失,比如就像我们写的通讯录,不管是…

Shiro相关知识

1、Shiro功能概述 Apache Shiro是一个功能强大且易于使用的 Java 安全框架,可执行身份验证、授权、加密和会话管理。 主要功能: Authentication:身份认证。登录时验证身份信息。 Authorization:授权操作。访问控制的过程&…

CSS布局基础(标签类型,盒子模型)

布局基础 元素显示类型,盒子模型 标签类型块元素常见块元素 行内元素常见行内元素 行内块元素常见行内块 模式转换显示类型显著区别 盒子模型盒子组成布局描述边框圆角 内边距外边距块元素居中盒子内行内(块)元素居中 外边距使用陷阱两盒子外…

【进阶C语言】动态版通讯录的实现(详细讲解+全部码源)

前言 📕作者简介:热爱跑步的恒川,致力于C/C、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于C语言进阶系列,本专栏主要内容为数据的存储、指针的进阶、字符串和内存函数…

Linux基础IO【重定向及缓冲区理解】

✨个人主页: 北 海 🎉所属专栏: Linux学习之旅 🎃操作环境: CentOS 7.6 阿里云远程服务器 文章目录 🌇前言🏙️正文1、文件描述符1.1、先描述,再组织1.2、files_struct1.3、分配规则…

Java数组的学习(基础)

目录 第一章:数组的概念介绍 1.数组的概念 2.数组的初始化/数组的创建/数组的定义 第二章:数组的使用 数组添加元素的方法/数组的赋值 数组的遍历 数组之选择排序的升序 数组之冒泡排序的升序 数组的最小值 数组的反转 数组中常见的异常 第三…

Python程序员想要转行,可以从这几个方面着手

最近有很多朋友问我一个问题,不论是我们做程序员还是做产品经理或者其他行业,到了30岁或35岁之后,都会面临各种各样的问题,比如达到职业天花板。有没有一种方法能够解决这种问题呢?我想分享一下我的观点和身边的案例。…

《Netty》从零开始学netty源码(四十七)之PooledByteBuf的方法

setBytes() 从channel中读取数据并写到PooledByteBuf中,分配缓存的过程与getBytes一样,只是duplicate为false。 capacity() 动态更新容量,根据新传入的容量值更改length。 如果新容量值与旧值相同则无需扩容如果为非池化内存则根据新容量值…

Zabbix部署详解

文章目录 Zabbix安装部署一、zabbix-server端部署二、zabbix-agent端部署 Zabbix安装部署 环境准备 VMware Workstation Pro 15.0 版本 系统 Centos7 内存 4G 处理器 2G 硬盘 50G 网络适配器 NAT 两台服务器,一台做zabbix-server、一台做zabbix-agent 关闭防火墙、…

【华为OD机试真题】信号发射和接收(javaC++python)100%通过率 超详细代码注释

信号发射和接收 知识点数组栈 单调栈时间限制: 1s 空间限制: 256MB 限定语言:不限 题目描述: 有一个二维的天线矩阵,每根天线可以向其他天线发射信号也能接收其他天线的信号,为了简化起见,我们约定每根天线只能向东和向南发射信号,换言之,每根天线只能接收东向或南向发…

unity-VRTK-simulator开发学习日记2(抛物线 导包|使用|调用方法)

导包 使用抛物线 1.层级目录下添加抛物线曲线 2.将跟踪控制器 给到抛物线的“跟随资源” (选择哪只手射出射线) 3.激活按键 找到模拟手柄按键 找到simulator的交互的几个按键(ButtonOne为例) value,默认值为false&a…

Doris(20):Doris的函数—数学函数

1 查看函数名 show builtin functions in test_db; 2 abs(double a) 功能: 返回参数的绝对值 返回类型:double类型 使用说明:使用该函数需要确保函数的返回值是整数。 3 acos(double a) 功能: 返回参数的反余弦值 返回类型:double类型 MySQL 中反余弦函数 ACOS(…

【五一创作】使用Scala二次开发Spark3.3.0实现对MySQL的upsert操作

使用Scala二次开发Spark实现对MySQL的upsert操作 背景 在我们的数仓升级项目中,遇到了这样的场景:古人开发的任务是使用DataStage运算后,按照主键【或者多个字段拼接的唯一键】来做insert then update,顾名思义,也就…

能上网的ChatGPT,会带来什么改变

最近关注AI的人,应该会注意到这条新闻。 ChatGPT官方推出新模式—Default(GPT-3.5)with browsing 这个是之前ChatGPT没有的功能,ChatGPT以前的训练数据是在2021年左右,并不知道最近的新闻。 现在ChatGPT 能够联网以…

AIGC提词生成图片(人物照片)练习笔记

文生图, 图生图 等 AIGC 创作大火, 也来体验一下吧. 本文记录了环境搭建过程与使用心得. 如果动手能力弱或只想省心, 有 环境要求 列出来我的环境吧: CPU, AMD Ryzen 7 5800X 8-Core ProcessorRAM, 32GGPU, NVIDIA GeForce RTX 2070 SUPER (8G)OS, Windows 11 专业版开发环境…

Qt MSVC开发

环境搭建 安装Virsual Studio,版本可以选择最新版本,我安装的时vs2022,安装时需要勾选 C 桌面开发 安装QT, 下载地址:https://download.qt.io/official_releases/online_installers/,安装时需要选择MSVC 2019 64-bit。…

Packet Tracer - 配置 RIPv2

Packet Tracer - 配置 RIPv2 目标 第 1 部分:配置 RIPv2 第 2 部分:验证配置 拓扑图 背景信息 尽管在现代网络中极少使用 RIP,但是作为了解基本网络路由的基础则十分有用。 在本活动中,您将使用适当的网络语句和被动接口配置…

【LeetCood206】反转链表

题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 答案1: 新建链表,遍历原链表,一个一个头插到新建的链表.直到结点为null public ListNode reverseList(ListNode head) {ListNode secondListHead n…