DP—线性类动态规划
- 格式:ppt
- 大小:147.50 KB
- 文档页数:11


【概述】由于概率和期望具有线性性质,使得可以在概率和期望之间建立一定的递推关系,这样就可以通过动态规划来解决一些概率问题,例如概率和期望的最值问题就常常使用概率 DP、期望 DP 来解决。
与其他的动态规划一样,合理的选择状态以及高效的状态转移方程是关键,选择合适的状态不仅可以提高效率,而且可以保证动态规划所必须的无后效性。
将问题直接作为状态是最好的,当找到正确的状态定义后,转移是较容易想到的,一般的递推即可一般的递推即可一般来说,将问题直接作为状态确定转移。
确定转移例如:n 个人做 XX 的期望次数,可以设计状态 f[i] 表示 i 个人做完事的期望。
【概率 DP】概率 DP 通常已知初始的状态,然后求解最终达到目标的概率,因此概率 DP 需要顺序求解。
其相较于期望 DP较为简单,当前状态只需加上所有上一状态乘上转移概率即可,即:f[i]=f[i-1]*p[i]【期望 DP】期望 DP 与概率 DP 不同,其需要倒序求解。
当求解达到某一目标的期望花费时,由于最终的花费无从知晓(无法从无穷推起),因此期望 DP 需要倒序求解。
设 f[i] 为 i 状态下实现目标的期望值,即到了 f[i] 这个状态的差距是多少。
初始时,令 f[n]=0,即在目标状态期望值为 0,然后进行状态转移,新的状态为上一状态与转移概率的乘积再加上转移的花费即:f[i-1]=f[i]*p[i]+w最后初始位置 f[0] 即为所求的期望值需要注意的是,当转移关系不成环时,期望 DP 可以进行线性递推,但当转移关系成环时,期望 DP 的最终状态相当于一个已知量,而转移关系相当于一个个方程,此时需要使用高斯消元法来解决。
【例题】Discovering Gold(LightOJ-1030)(期望DP):点击这里Dice (III)(LightOJ-1248)(期望DP):点击这里Just another Robbery(LightOJ-1079)(概率DP+01背包):点击这里Let's Play Osu!(CF-236D)(期望DP):点击这里Piglet's Birthday(CF-248E)(概率DP):点击这里Robots(2019 ACM-ICPC 南京赛区网络赛 D)(期望DP):点击这里Everything Is Generated In Equal Probability(HDU-6595)(期望DP):点击这里Kejin Player(HDU-6656)(期望DP+降维):点击这里。
动态规划方法求解线性规划问题1. 线性规划问题简介线性规划是一种常见的数学优化方法,用于求解线性约束条件下的最优解。
它的目标是在给定的约束条件下,找到使目标函数取得最大(或者最小)值的变量取值。
2. 动态规划方法概述动态规划是一种通过将问题分解为子问题并逐步解决的方法。
它适合于具有重叠子问题和最优子结构性质的问题。
对于线性规划问题,动态规划方法可以通过将问题分解为多个子问题,并利用子问题的最优解来求解整体问题的最优解。
3. 动态规划方法求解线性规划问题的步骤步骤1: 定义状态首先,我们需要定义状态变量。
对于线性规划问题,状态变量可以是目标函数的值,或者是满足约束条件的变量取值。
步骤2: 定义状态转移方程接下来,我们需要定义状态之间的转移关系。
对于线性规划问题,状态转移方程可以表示为:dp[i] = max(dp[i-1] + a[i], a[i])其中,dp[i]表示第i个状态的最优值,a[i]表示第i个状态的值。
步骤3: 初始化状态在动态规划方法中,我们需要初始化第一个状态的值。
对于线性规划问题,我们可以将第一个状态的值设置为目标函数的初始值。
步骤4: 递推求解最优解接下来,我们可以使用状态转移方程递推求解最优解。
通过计算每一个状态的最优值,我们可以得到整体问题的最优解。
步骤5: 回溯求解最优解最后,我们可以通过回溯的方式求解最优解的具体取值。
通过追踪每一个状态的转移路径,我们可以找到使目标函数取得最大(或者最小)值的变量取值。
4. 动态规划方法求解线性规划问题的实例为了更好地理解动态规划方法求解线性规划问题的过程,我们来看一个具体的实例。
假设有一个线性规划问题,目标是最大化目标函数:maximize 3x + 4y约束条件为:2x + y <= 10x + 3y <= 15x, y >= 0我们可以按照以下步骤使用动态规划方法求解该线性规划问题:步骤1: 定义状态我们定义状态变量为目标函数的值,即dp[i]表示目标函数的值为i时的最优解。