备战蓝桥杯---动态规划(理论基础)

目录

动态规划的概念:

解决多阶段决策过程最优化的一种方法

阶段:

状态:

决策:

策略:

状态转移方程:

适用的基本条件

1.具有相同的子问题

2.满足最优子结构

3.满足无后效性

动态规划的实现方式:


动态规划的概念:

解决多阶段决策过程最优化的一种方法

阶段:

把问题分成几个相互联系的有顺序的环节。

状态:

某一阶段的出发位置

决策:

从某一状态演变到下一个状态的选择

策略:

从开始到终点的决策序列。

状态转移方程:

从i到i+1状态的演变规律。

适用的基本条件

1.具有相同的子问题

(1)保证这个问题可以分解成几个子问题并且可以用他们来解决这个问题。

(2)这些子问题也可以分解成相同的子问题。

2.满足最优子结构

问题的最优解包含着他的子问题的最优解,即此后决策必须基于上一次产生的最优决策。

举个栗子:

假如A是当前的最优策略,那么,我们要保证下一次的最优解一定是在A的基础上产生的,而不能是由当前的不是最优的策略导出的。

其实,动态规划是一种分阶段贪心的过程,我们要确保最长远的利益来自于每一步当前的最优利益。

就像这一题,我们选一个路径使他们的和%4最小,显然,如果我们只求当前%4的最小值,无法推出来下一步的最优解。

像这样的情况,我们可以重新考虑状态转移方程,我们发现,每一个余数都有存在的价值,于是我们可以把存在的余数记下来,再用他们去求下一个状态。

3.满足无后效性

要包含所有影响答案的因素,即它用于解决当前问题与过去状态无关的问题

举个例子:

大家应该都写过走楼梯的递归问题。a[i]=a[i-1]+a[i-2]。但是,如果有这么一个规定:走过50楼的人不能再走100楼,显然这样子在100楼时,我们不知道前面的99与98是否走过。

于是,我们应该再记录一个值表示是否踏过50,

我们不妨记f[i][0]为没有上过50,f[i][1]为上过50,这样的话,我们在i<50前用f[i][0]=f[i-1][0]+f[i-2][0]; f[i][1]=0;

i==50: f[50][0]=0,f[50][1]=f[49][0]+f[48][0],

i>50&&i<100: f[i][0]=f[i-1][0]+f[i-2][0],f[i][1]=f[i-1][1]+f[i-2][0];

i==100:f[100][0]=f[99][0]+f[98][0],f[100][1]=0;

i>100:f[i][0]=f[i-1][0]+f[i-2][0];f[i][1]=f[i-1][0]+f[i-2][0];

动态规划的实现方式:

1.递推(直接用for循环)

2.记忆化搜索

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gcore服务器设置root账号密码登录

这个厂商很奇怪&#xff0c;默认只能用centos用户与公钥登录&#xff0c;但是这样有时候很麻烦。 他默认开启了SELinux&#xff0c;和强制ssh密钥登录。 下面所有操作在root模式下进行 SELinux设置为兼容模式 setenforce 0vi /etc/selinux/config然后将文件中的SELINUXenfo…

Apache网站部署

站点添加及linux防火墙和selinux启动和停止 apache站点添加 linux系统防火墙和selinux起停 1、防火墙firewall操作 查看防火墙的状态&#xff0c;如下&#xff08;默认开启&#xff09;&#xff1a; systemctl status firewalld 关闭服务 systemctl stop firewalld 关闭…

数据结构之线性表

一、线性表的定义及特点 1&#xff09;线性表&#xff08;list&#xff09;定义&#xff1a;包含若干个具有相同数据特征的数据元素构成的线性序列。 线性表L可以用二元组形式描述&#xff1a;L(D,R)&#xff0c;其中D为数据集合&#xff08;data&#xff09;&#xff0c;R为…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之StepperItem组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之StepperItem组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、StepperItem组件 用作Stepper组件的页面子组件。 子组件 无。 接口 St…

【前端素材】bootstrap4实现葡萄酒品牌电商网站Bidouno(附带源码)

一、需求分析 葡萄酒品牌电商网站是一个专门销售葡萄酒的在线平台。它提供各种类型和品牌的葡萄酒&#xff0c;包括红葡萄酒、白葡萄酒、起泡酒等。葡萄酒品牌电商网站的功能可以从以下几个方面来分析&#xff1a; 1. 提供多样化的选择&#xff1a;葡萄酒品牌电商网站通常会提…

ONLYOFFICE文档8.0新功能浅探

ONLYOFFICE文档8.0新功能浅探 上个月末这个月初的几天&#xff0c;ONLYOFFICE版本更新了&#xff01;更新到了一个比较整的大的版本号&#xff0c;8.0版本&#xff0c;看来这个生产力工具的升级速度基本上能保持每年两个版本号的速度&#xff0c;还是很快的&#xff0c;一般来…

如何在 Mac 上恢复永久删除的文件:有效方法

您是否错误地从 Mac 中删除了某个文件&#xff0c;并且确信它已经永远消失了&#xff1f;好吧&#xff0c;你可能错了。即使您认为已永久删除计算机上的数据&#xff0c;仍有可能将其恢复。 在本文中&#xff0c;您将了解如何在 Mac 上恢复永久删除的文件&#xff0c;并了解增…

github使用问题汇总

1. Permission denied 1.1. 问题描述 Permission denied (publickey). fatal: Could not read from remote repository. 1.2. 解决方法 生成公钥 ssh-keygen -t ed25519 -C "your_emailexample.com" 点击回车三次 Generating public/private ed25519 key pair. …

排序算法---归并排序

原创不易&#xff0c;转载请注明出处。欢迎点赞收藏~ 归并排序是一种常见的排序算法&#xff0c;它采用了分治的思想。它将一个待排序的数组递归地分成两个子数组&#xff0c;分别对两个子数组进行排序&#xff0c;然后将排好序的子数组合并成一个有序数组。 具体的归并排序过…

Netty连接通道中的Channel参数模型

ChannelOption(Channel中的连接参数) ChannelOption.SOBACKLOG ChannelOption.SO_BACKLOG对应的是tcp/ip协议listen函数中的backlog参数&#xff0c;服务端处理客户端连接请求是顺序处理的&#xff0c;所以同一时间只能处理一个客户端连接&#xff0c;多个客户端来的时候&…

CentOS 安装 redis 7.2

nginx官网 https://redis.io/download/ 把鼠标放到这里&#xff0c;复制下载地址 在服务器找个文件夹执行命令 wget https://github.com/redis/redis/archive/7.2.4.tar.gz tar -zxvf 7.2.4.tar.gz make make install 看到这几行就说明安装成功了 不放心的话再查看下b…

Git详细讲解

文章目录 一、Git相关概念二、本地分支中文件的添加 、提交2.1 文件状态2.2 创建Git仓库2.2.1 git init2.2.2 git clone 2.3 添加操作(git add)2.4 提交操作&#xff08;git commit&#xff09;2.5 撤销操作2.5.1 撤销 add操作2.5.2 撤销 commit操作2.5.3 覆盖上一次的commit操…