首页 > 其他分享 >关于期望 dp 的一点思考

关于期望 dp 的一点思考

时间:2024-04-11 20:22:55浏览次数:17  
标签:状态 期望 树形 思考 正序 节点 dp

一、前言

只是一些自己的理解,并不知正确与否。

首先期望 \(dp\) 分为 伪期望 \(dp\) 和真期望 \(dp.\)

二、伪期望 \(dp\)

对于伪期望 \(dp\) 来说,其在定义状态之后,一般可以认为状态之间的转移是 线性 的,即每一个 \(dp\) 状态转移到何处具有 唯一对应性,只不过具体的实现上经过了概率论的包装。

三、真期望 \(dp\)

对于真期望 \(dp\) 来说,一个状态往往可以转移到 \(n\) 个状态去,并不具有 唯一对应性

3.1 树形 \(dp\)

因此我将真期望 \(dp\) 理解为了具象的 树形 \(dp\)

不难发现两者的转移具有相似性:若将 每一个状态具象化为树上的一个节点 \(i\),那么这个状态所转移到的每一个状态分别对应 \(siz_i\) 个子结点, 我们知道树形 \(dp\) 的常见套路是在 \(dfs\) 回溯的过程中统计答案,这样做的本质是 倒序地枚举树的每一层节点,只不过在期望 \(dp\) 中我们的层数对应的是往往题目中出现的每一个阶段,因此我们可以用 看似是倒序线性 \(dp\) 的方法真正实现了对一颗状态树的枚举,这也是一般的真期望 \(dp\) 通常都可以用记忆化搜索来解决的原因。对于节点 \(i\) ,通过树形 \(dp\) 得到了每一个转移对象 \(j\) 的贡献 \(dp_j\),就可以采用期望的定义来进行计算 \(dp_i\) 了。最终和树形 \(dp\) 一样,根节点 \(root\) 的 \(dp\) 值就是答案。因此我认为将 P4316 绿豆蛙的归宿 作为真期望 \(dp\) 的模板题目是十分合适的,因为这道题目展现了期望 \(dp\) 的本质和一般性解法。

3.2 考虑地深一些

那我就是任性,偏偏要正序 \(dp\) 怎么办?

考虑到部分树形 \(dp\) 也可以按 \(dfs\) 序来正序转移。考虑当树形 \(dp\) 的答案统计的实质为 某一条树上最满足某种性质的链 时,我们完全可以正序枚举统计答案到每一个根节点再求出最终解。我们可以通过这种思路来正序枚举解期望 \(dp.\)

显然期望 \(dp\) 的每个期望正好对应着状态树上每一条链的期望。 由 期望的线性性质 可以得到,最终状态的期望 \(E\) 本质上是 上文所说状态树中所有叶节点的期望之和。 因此我们需要算出每一个最终状态的期望值。由公式 \(E=P\times val\),我们还需要维护 根节点到达节点 \(i\) 的概率 \(p_i\) ,与 \(val_i\) 相乘即可算出期望 \(E_i\) ,那么加和就能算出最终答案了。

四、推导过后的思考

推导这些东西的来源是做 SCOI2008 奖励关 时对期望 \(dp\) 产生了各种各样的疑问,遂开始思考期望 \(dp\) 的本质,便得到上方的拙见,个人以为大概可以解释期望 \(dp\) 一些概念上的问题了。不过期望 \(dp\) 的题目刷了二十余道才生出这些见解,直接反映出我刷题质量的堪忧,今后还是一定要多思考啊。

标签:状态,期望,树形,思考,正序,节点,dp
From: https://www.cnblogs.com/Rock-N-Roll/p/18129972

相关文章

  • 线性DP解题
    DP是一种寻找最优解的算法。DP之所以效率高,是因为DP的算法中会记录重复状态,对于同一状态值进行一次求解。线性DP是DP中属于偏简单的一类。线性DP求解的关键则在于对第一个阶段或最后一个阶段进行分类讨论。线性DP的解题方法可以分为5个步骤:找出问题的阶段性,即问题分解的方法。......
  • 一个bug引发的Android分区存储的思考
    **问题:**在安卓手机上实现保存图片的功能,部分手机保存失败。报了如图一的错误: 根据报错信息是没有权限,但仔细在代码内检查是有申请到存储权限的,并且该功能在其他手机上没问题**实现流程:**仔细看我们的实现流程如图二所示: 整个过程看上去都没问题。但是在出现问题的手机上,使......
  • dmdpc安装部署
    环境:OS:Centos7DM:DMV8达梦分布计算集群英文全称DMDistributedProcessingCluster,简称DMDPC.计划生成节点,英文全称为SQLProcessor,简称为SP;数据存储节点,英文全称为BackendProcessor,简称为BP;元数据服务器节点,英文全称为MetadataProcessor,简称为MP.一个最小的......
  • Deep Deterministic Policy Gradient(DDPG)算法讲解笔记
    DDPGDeepDeterministicPolicyGradient,基于actor-critic模型提出了一个有效的valuebased连续型空间的RL算法,引入了一些帮助训练稳定的技术。基础:DQN,Batchnormm,Discretize,微积分backgroundDQN改进的推广Policybased方法(TRPO)已经在actionspace取得突破传统disc......
  • ThreadPoolExecutor线程池解析
    ThreadPoolExecutor线程池解析一、ThreadPoolExecutor常见参数jdk中Executors提供了几种常用的线程池,底层都是ThreadPoolExecutor。publicThreadPoolExecutor(intcorePoolSize,//核心线程数intmaximumPoolSize,//最大线程数......
  • 前后端配合思考
    近期参与某项目的设计开发,项目里每个小伙伴都很负责,工作态度很积极,但是也遇到了一些问题,这次的研发流程主要是按照如下步骤进行的 步骤参与人问题和成果前期需求会议几个负责人基本达成共识,要做什么原型第一版全部人员详细整理出影响业务流程......
  • 关于分布式锁的一些思考
    首先分布式锁要解决的是什么问题?解决的,对唯一资源的操作控制,简单说就是,有一些资源只能同时被一个地方使用。常见的分布式锁的实现方式有哪些?这是一个常见的面试题,一般给出的答案有以下几个:基于数据库的实现方式。可以通过在数据库表中使用排他锁(forupdate)来实现分布式锁,当......
  • 动态规划dp
    动态规划(Dp)介绍动态规划(Dynamicprogramming)是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。动态规划问题的特点1.最优子结构性质:如果问题的最优......
  • TCP与UDP
    简述TCP与UDP区别TCP(传输控制协议)和UDP(用户数据报协议)是两种常见的网络传输协议,它们在传输数据的方式、特性和用途上有着显著的区别:连接TCP:是一种面向连接的协议。在数据传输之前,必须建立一个稳定的连接。TCP连接是通过三次握手过程建立的,这个过程确保了双方的发送和接收能......
  • 动态规划Dp
    什么是动态规划?动态规划(英语:Dynamicprogramming,简称DP),是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。以上定义来自维基百科,看定义......