简单期望DP

期望dp

数学期望是指离散型随机变量的平均值。即考虑所有情况结果的平均值,它等于每种情况的概率与该情况下的结果的乘积之和。

比如一枚硬币,有正反两面,丢出正面或反面的概率相等,请问丢出正面的期望次数。

直觉告诉我们,需要丢两次。因为丢出正面的概率为 1 2 \frac{1}{2} 21,所以,需要丢出两次。

这是最简单的情形。

又比如掷一颗骰子,骰子有6个面,出现每个面的概率相等,请问丢出1的期望次数。

显然,直觉告诉我们,需要丢出6次。因为丢出1的概率是 1 6 \frac{1}{6} 61.

是不是期望次数就是概率的倒数呢?

独立随机试验下,首次出现某个事件的期望试验次数等于出现该事件的概率的倒数。

而期望并不仅仅指事件,也可以是针对其他变量的期望。期望,就是我们要求的值在所有情况下的平均值。比如,丢一枚硬币,正反面等概率出现,如果丢出正面,你得到1元,如果丢出反面,你得到0元。请问你丢一次期望多少元?

那么答案是0.5元。 1 2 ∗ 1 + 1 2 ∗ 0 = 0.5 \frac{1}{2}*1+\frac{1}{2}*0=0.5 211+210=0.5

在大多数情况下,期望都应该用其定义式或递推方程来计算。

我们来看如何用期望的定义来计算以上最简单的情形。

例1

丢一枚硬币,出现正面的期望次数。

分析:

统计所有情况下花掉的次数。第一次就丢出正面,花费1次;第二次才丢出正面,花费2次;第三次丢出正面,花费3次, … \dots

g = 1 2 ∗ 1 + 1 4 ∗ 2 + ⋯ + i 2 i (1) g=\frac{1}{2}*1+\frac{1}{4}*2+\dots+\frac{i}{2^i} \tag{1} g=211+412++2ii(1)

2 ∗ g = 1 + 1 + 3 4 + ⋯ + i 2 i − 1 (2) 2*g=1+1+\frac{3}{4}+\dots+\frac{i}{2^{i-1}} \tag{2} 2g=1+1+43++2i1i(2)

(2)-(1),可得:

1 2 g = 1 + 1 2 + 1 4 + ⋯ + 1 2 i − 1 = 1 \frac{1}{2}g=1+\frac{1}{2}+\frac{1}{4}+\dots+\frac{1}{2^{i-1}} = 1 21g=1+21+41++2i11=1

g = 2 g = 2 g=2.

例2

丢一颗骰子,出现1的期望次数。

g = 1 ∗ 1 6 + 2 ∗ 5 6 ∗ 1 6 + ⋯ + 5 6 i − 1 ∗ 1 6 ∗ i g=1*\frac{1}{6}+2*\frac{5}{6}*\frac{1}{6}+\dots+{\frac{5}{6}}^{i-1}*\frac{1}{6}*i g=161+26561++65i161i

5 6 g = 1 ∗ 1 6 ∗ 5 6 + 2 ∗ 5 6 2 ∗ 1 6 + ⋯ + 5 6 i ∗ 1 6 \frac{5}{6}g=1*\frac{1}{6}*\frac{5}{6}+2*\frac{5}{6}^2*\frac{1}{6}+\dots+\frac{5}{6}^{i}*\frac{1}{6} 65g=16165+265261++65i61

g − 5 6 g = 1 6 ∗ ∑ i = 1 ∞ 5 6 i − 1 g-\frac{5}{6}g=\frac{1}{6}*\sum_{i=1}^\infin\frac{5}{6}^{i-1} g65g=61i=165i1

g = 6 g=6 g=6

也可以用递推的方式来求,这是更加简便的方法。

例3

丢一枚硬币,出现正面的期望次数。

x x x为丢出正面的期望次数,丢一次以后,有 1 2 \frac{1}{2} 21的概率回到原状态,仍然是 x x x, 也有 1 2 \frac{1}{2} 21的概率成功,成功了就不需要再丢了。刚才花费了一次。所以有以下的递推式:

x = 1 2 x + 1 2 ∗ 0 + 1 x=\frac{1}{2}x+\frac{1}{2}*0+1 x=21x+210+1

解得 x = 2 x=2 x=2

又如丢骰子,丢出每个面的概率都是 1 6 \frac{1}{6} 61

设丢出1的期望次数为 x x x, 丢1次以后,有 1 6 \frac{1}{6} 61的概率成功,不需要再丢了;有 5 6 \frac{5}{6} 65的概率未成功,即回到原状态,仍然期望丢 x x x次。而刚才花费了1次,所以,有以下的递推式:

x = 5 6 ∗ x + 1 6 ∗ 0 + 1 x = \frac{5}{6}*x+\frac{1}{6}*0+1 x=65x+610+1

解得 x = 6 x=6 x=6.

例4

有n种牌,每种牌各1张,你取到每种牌都是等概率的,你取一张牌,记下该牌的种类,然后放回去。请问你记下所有的种类的牌期望要取多少次?

分析:

f [ i ] f[i] f[i]表示当前已经取到了i种牌,最后离成功(取到所有种类的牌)所期望的次数。

显然 f [ n ] = 0 f[n]=0 f[n]=0.

f [ i ] = i n ∗ f [ i ] + n − i n ∗ f [ i + 1 ] + 1 f[i] = \frac{i}{n}*f[i]+\frac{n-i}{n}*f[i+1]+1 f[i]=nif[i]+nnif[i+1]+1

f [ i ] = f [ i + 1 ] + n n − i f[i]=f[i+1]+\frac{n}{n-i} f[i]=f[i+1]+nin

这个题也适用于前面的简单的情形,即期望的次数是概率的倒数,因为一次取牌事件发生后,要么成功,要么回到原状态。取牌事件之间也是独立的。

即当前有i张牌,你有 n − i n \frac{n-i}{n} nni的概率取到1张新牌,有 i n \frac{i}{n} ni的概率取到一张之前的牌,仍然回到原状态。即从 i i i张牌到 i + 1 i+1 i+1张牌,只有 n − i n \frac{n-i}{n} nni的概率成功,这一步需要花费的期望次数为 n − i n \frac{n-i}{n} nni.

所以有:

f [ i ] = f [ i + 1 ] + n − i n f[i]=f[i+1]+\frac{n-i}{n} f[i]=f[i+1]+nni

一种错误的递推方式:

f [ i ] f[i] f[i]表示从取到 i i i张牌期望的取牌次数,考虑最近一次的取牌操作,有 i n \frac{i}{n} ni的概率取得的是旧牌,有 n − i + 1 n \frac{n-i+1}{n} nni+1的概率取得新牌。刚才的取牌花掉了一次操作,所以有下式:

f [ i ] = f [ i ] ∗ i n + f [ i − 1 ] ∗ n − i + 1 n + 1 f[i] = f[i]*\frac{i}{n} + f[i-1]*\frac{n - i + 1}{n} + 1 f[i]=f[i]ni+f[i1]nni+1+1

f [ 1 ] = 1 f[1]=1 f[1]=1

此处的问题主要是 f [ i ] f[i] f[i]的意义与题意不符。按题意描述,如果取到了 n n n种牌,则不应再取了。而此处的 f [ n ] f[n] f[n]取到了 n n n种牌后,仍然可能取牌。

所以,此处求出的 f [ n ] f[n] f[n]并不能表示题目中期望次数。

例5.
题意:一个图有n个顶点,现在你站在顶点1处。开始时,图中没有边。

你可以重复以下操作:

  • 从n个点中选择一个点(可以包含你当前所在的点),每个点都有 1 N \frac{1}{N} N1的概率被选中。每次选择都是独立的,和上一次选择无关。

  • 在你当前站立的点和选择的点之间连一条边,然后移动到你选择的点上。
    求图变为连通图时,期望的操作次数。

数据规模

2 ≤ N ≤ 1 0 5 2 \leq N \leq 10^5 2N105

这题与例4完全相同。

例6 . csp初赛题

现有一只青蛙,初始时在 n 号荷叶上。当它某一时刻在 k 号荷叶上时,下一时刻将等概 率地随机跳到 1, 2, …, k 号荷叶之一上,直至跳到 1 号荷叶为止。当 n = 2 时,平均一共 跳 2 次;当 n = 3 时,平均一共跳 2.5 次。则当 n = 5 时,平均一共跳_________次。

分析:设 f [ i ] f[i] f[i]表示青蛙在 i i i号荷叶上时,要跳到1号荷叶上的期望次数。

f [ i ] = f [ i ] ∗ 1 i + f [ i − 1 ] ∗ 1 i + ⋯ + f [ 1 ] ∗ 1 i + 1 f[i]=f[i]*\frac{1}{i}+f[i-1]*\frac{1}{i}+\dots+f[1]*\frac{1}{i} + 1 f[i]=f[i]i1+f[i1]i1++f[1]i1+1

显然 f [ 1 ] = 0 f[1] = 0 f[1]=0

根据递推式,可以求出: f [ 2 ] = 2 , f [ 3 ] = 2.5 , f [ 4 ] = 17 6 , f [ 5 ] = 37 12 f[2] = 2, f[3] = 2.5, f[4] = \frac{17}{6},f[5] = \frac{37}{12} f[2]=2,f[3]=2.5,f[4]=617,f[5]=1237

例7. 涂格子

n个格子,每次随机涂一个,求涂m次后期望涂色格子数。

分析:

f [ i ] f[i] f[i]表示涂 i i i次后期望涂多少个格子。

f [ i ] = f [ i − 1 ] + n − f [ i − 1 ] n f[i]=f[i-1]+\frac{n-f[i-1]}{n} f[i]=f[i1]+nnf[i1]

例8. 涂格子

n n n个格子,每次随机选一个格子涂色,第 i i i个格子被选到的概率为 p i p_i pi, ( ∑ p i = 1 ) (\sum_{p_i}=1) (pi=1),求涂完所有格子的期望次数。

数据规模: n ≤ 20 n \leq 20 n20
分析:

因为每个格子的概率不一样,所以不能以格子数量来作为状态,而以涂色格子的二进制state来表示状态。

f [ s t a t e ] f[state] f[state]涂到的格子为 s t a t e state state时,到最终状态期望的次数。

则有 f [ s t a t e ] = ∑ i = 0 n − 1 f [ s t a t e ∣ ( 1 < < i ) ] ∗ p i + 1 f[state] =\sum_{i=0}^{n-1} f[state |(1<<i)]*p_i+1 f[state]=i=0n1f[state(1<<i)]pi+1

例9. 亚瑟王的生日庆典(poj3682)

题意:亚瑟王掷一枚硬币,正面朝上的概率为 p p p,反面朝上的概率为 1 − p 1-p 1p。现在亚瑟王要举办生日庆典,举办的天数通过掷硬币确定。他每天掷有一次硬币,直到掷出k次正面朝上,就结束。第 i i i天的花费为 2 ∗ i − 1 2*i-1 2i1。问:

期望要掷多少枚硬币才能达到 k k k次正面朝上,以及达到 k k k次正面朝上时的花费。

分析:

f [ i ] f[i] f[i]表示已经掷出 i i i次正面朝上,要完成k次还需要的期望次数。则有:

f [ i ] = f [ i + 1 ] ∗ p + f [ i ] ∗ ( 1 − p ) + 1 f[i]=f[i+1]*p+f[i]*(1-p)+1 f[i]=f[i+1]p+f[i](1p)+1

f [ i ] = f [ i + 1 ] + 1 / p f[i] = f[i+1]+1/p f[i]=f[i+1]+1/p

则有: f [ 0 ] = n / p f[0]=n/p f[0]=n/p

g [ i ] g[i] g[i]表示已经掷出 i i i次正面朝上,要完成 k k k次还需要的期望花费。注意:这个花费按照时间倒流的方式计算也是正确的。

g [ i ] = g [ i + 1 ] ∗ p + g [ i ] ∗ ( 1 − p ) + 2 ∗ f [ i ] − 1 g[i]=g[i+1]*p+g[i]*(1-p)+2*f[i]-1 g[i]=g[i+1]p+g[i](1p)+2f[i]1

推出: g [ 0 ] = k ∗ ( k + 1 ) − k p p 2 g[0]=\frac{k*(k+1)-kp}{p^2} g[0]=p2k(k+1)kp

#include<bits/stdc++.h>
int main()
{
    int k;
    double p,res1,res2;
 
    while(scanf("%d%lf",&k,&p)&&k)
    {
        res1 = k/p;
        res2 = k*(k+1)/(p*p)-res1;
        printf("%.3lf %.3lf\n",res1,res2);
    }
}
内容概要:本文档详细介绍了在三台CentOS 7服务器(IP地址分别为192.168.0.157、192.168.0.158和192.168.0.159)上安装和配置Hadoop、Flink及其他大数据组件(如Hive、MySQL、Sqoop、Kafka、Zookeeper、HBase、Spark、Scala)的具体步骤。首先,文档说明了环境准备,包括配置主机名映射、SSH免密登录、JDK安装等。接着,详细描述了Hadoop集群的安装配置,包括SSH免密登录、JDK配置、Hadoop环境变量设置、HDFS和YARN配置文件修改、集群启动与测试。随后,依次介绍了MySQL、Hive、Sqoop、Kafka、Zookeeper、HBase、Spark、Scala和Flink的安装配置过程,包括解压、环境变量配置、配置文件修改、服务启动等关键步骤。最后,文档提供了每个组件的基本测试方法,确保安装成功。 适合人群:具备一定Linux基础和大数据组件基础知识的运维人员、大数据开发工程师以及系统管理员。 使用场景及目标:①为大数据平台建提供详细的安装指南,确保各组件能够顺利安装和配置;②帮助技术人员快速掌握Hadoop、Flink等大数据组件的安装与配置,提升工作效率;③适用于企业级大数据平台的建与维护,确保集群稳定运行。 其他说明:本文档不仅提供了详细的安装步骤,还涵盖了常见的配置项解释和故障排查建议。建议读者在安装过程中仔细阅读每一步骤,并根据实际情况调整配置参数。此外,文档中的命令和配置文件路径均为示例,实际操作时需根据具体环境进行适当修改。
在无线通信领域,天线阵列设计对于信号传播方向和覆盖范围的优化至关重要。本题要求设计一个广播电台的天线布局,形成特定的水平面波瓣图,即在东北方向实现最大辐射强度,在正东到正北的90°范围内辐射衰减最小且无零点;而在其余270°范围内允许出现零点,且正西和西南方向必须为零。为此,设计了一个由4个铅垂铁塔组成的阵列,各铁塔上的电流幅度相等,相位关系可自由调整,几何布置和间距不受限制。设计过程如下: 第一步:构建初级波瓣图 选取南北方向上的两个点源,间距为0.2λ(λ为电磁波波长),形成一个端射阵。通过调整相位差,使正南方向的辐射为零,计算得到初始相位差δ=252°。为了满足西南方向零辐射的要求,整体相位再偏移45°,得到初级波瓣图的表达式为E1=cos(36°cos(φ+45°)+126°)。 第二步:构建次级波瓣图 再选取一个点源位于正北方向,另一个点源位于西南方向,间距为0.4λ。调整相位差使西南方向的辐射为零,计算得到相位差δ=280°。同样整体偏移45°,得到次级波瓣图的表达式为E2=cos(72°cos(φ+45°)+140°)。 最终组合: 将初级波瓣图E1和次级波瓣图E2相乘,得到总阵的波瓣图E=E1×E2=cos(36°cos(φ+45°)+126°)×cos(72°cos(φ+45°)+140°)。通过编程实现计算并绘制波瓣图,可以看到三个阶段的波瓣图分别对应初级波瓣、次级波瓣和总波瓣,最终得到满足广播电台需求的总波瓣图。实验代码使用MATLAB编写,利用polar函数在极坐标下绘制波瓣图,并通过subplot分块显示不同阶段的波瓣图。这种设计方法体现了天线阵列设计的基本原理,即通过调整天线间的相对位置和相位关系,控制电磁波的辐射方向和强度,以满足特定的覆盖需求。这种设计在雷达、卫星通信和移动通信基站等无线通信系统中得到了广泛应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值