期望自学

最近觉得期望特别玄学,特地放个博客慢慢整理

仅仅是给自己看,所以文中可能有很多概念性的(+就是错了)的错误,如果有大佬看见还望指出。。。

期望的实际意义

实验重复无数次的平均权值,随着发生次数的上升,最终平均值会无线接近一个数,期望

我的理解

加权平均数。。。

\[E(x) = \sum p_i v_i \]

由于这个性质,期望具有线性性,也就是 和的期望 = 期望的和

\[E(x_1 + x_2 + ...+ x_n) = E(x_1) +~ E(x_2) + ... +E(x_n) \]

还有 \(E(kx) = k E(x)\)

这里的 \(x_i\) 是互不影响的事件

注意, \(E(x_1 x_2) != E(x_1)E(x_2)\)

放到式子里就很好理解

\[E(x_1 x_2) = \sum p_i v_{x_1}(i)v_{x_2}(i) \]

\[E(x_1)E(x_2) = \sum p_i v_{x_1}(i) \sum p_i v_{x_2}(i) \]

比原来多出来一沓

有一些题目算要求期望,概率很不好算,但是却可以用期望+走一步的概率倒着推出来,这个地方我觉着玄学的一批,很有道理又很没道理,放到以后解决吧

要说期望还顶有概率,关于概率,除了有不连续的还有连续的

关于连续有几个积分式子和定义

一些定义

\(P(x),\ ans = x\) 的概率
\(p(x) = f'(x),\ p(x)\) 叫连续性随机变量的概率密度函数(\(p(x)\) 越大说明随机变量是 \(x\) 的概率相对较大)
\(f(x),\ ans <= x\) 的概率,叫连续形随机变量的概率分布函数

  • \(tps:\) 如果您要阅读请直接看下面的全概率公式(严谨证明)

\(thinking\)

如果我要求连续性随机变量落在 \([l, r]\) 的概率,\(P(l:r) = f(r) - f(l)\)

有一个式子

\[f(x) = \int_{-\infty}^xp(x)\ dx \]

\[P(x) = f(x + dx) - f(x) \]

\[p(x) = \frac {P(x)} {dx} = \frac {f(x + dx) - f(x)} {dx} = f'(x) \]

\[f(x) = \int_{-\infty}^x df(x) = f(x) \]

假如随机变量的范围是区间 \([l, r]\) 落在 \(x\) 的权值就是 \(x\),这就更有意思了

\[E(x) = \int_{l}^{r} i P(i) \]

\[= \int_{l}^{r} x p(x)\ dx \]

\[= \int_{l}^{r} x f'(x) dx \]

\[= \int_{l}^{r} x d(f(x)) \]

\[= [xf(x)]_ l ^ r - \int_{l}^{r} f(x) dx \]

最后一步转化要怎么证呢 ? 一个想法是求出原函数

\[(xf(x))' = xf'(x) + f(x) \]

\[\int_l^r (xf(x))'\, dx = \int_l^r x f'(x)\ dx + \int_l^r f(x)\ dx \]

\[\int_l^r x d(f(x)) = [xf(x)]_l^r - \int_l^r f(x) dx \]

tps:后来才知道上面那玩意是全概率公式。。。

还是简述一下(其实就是上面的东西,可跳过)


全概率公式

随机变量 \(x\) 的权值是 \(x\) 且随机落在区间 \([l, r]\),设 $f(x) = $ 答案 \(\ge x\) 的概率, 当 \([x(-f(x))]_l^{r+dx} = 0\) 时有

\[E(x) = \int_l^r f(x) dx \]

\(P(x)\) 为随机变量恰好为 \(x\) 的概率,\(p(x)\)\(x\) 的概率密度函数

证明1

\[f(x) = \int_x^r P(x) = \int_x^rp(x)dx \]

\[P(x) = f(x) - f(x + dx) = -df(x) \]

\[p(x) = \frac {P(x)} {dx} = -f'(x) \]

\[E(x) = \int_l^r x P(x) \]

\[= \int_l^r x p(x)dx \]

\[= \int_l^r x(-df(x)) \]

\[(x(-f(x))' = -f(x) - xf'(x) \]

\[\int_l^r (x(-f(x))' dx = -\int_l^rf(x)dx + \int_l^rx(-df(x)) \]

\[\int_l^rx(-df(x)) =[x(-f(x))]_l^r + \int_l^r f(x)dx \]

考虑到积分余项,当 \([x(-f(x))]_l^{r+dx} = 0\)\(E(x) = \int_l^r f(x) dx\)

证明2(有点抽象且不严格,看看就好)

\[E(x) = \int_l^r x P(x) \]

\[=\int_l^rx(f(x) - f(x + dx)) \]

把这个式子一项一项展开

\[=\int_l^r f(x) dx \]

这个对于 \(dx = 1\) 的情况同样适用

证毕


下面放一道题

P3343 [ZJOI2015]地震后的幻想乡

题目大意: 每个边有一个 \([0, 1]\) 的随机权值,求整张图联通的期望时间

\(P(t)\) 为联通时间为 \(t\) 的概率,\(p\) 是概率密度函数,\(f\) 是概率分布函数 \(f(t)\) 表示联通时间 \(> t\) 的概率

很显然题目要求

\[E(x) = \int_0^1 x p(x) dx \]

\[=\int_0^1 x (-df(x)) \]

根据全概率公式

\[E(x) =\int_0^1 f(x) dx \]

问题来了,怎么求呢?

我们将 \(f(x)\) 再加个定义 \(f_s(x)\) 表示几何为 \(s\) (\(s\) 是原图的子集,且 \(1 \in s\)) 的子图联通时间 \(> t\) 的概率

首先 \(f_{\{1\}} = 0\)

\[f_s(t) = \sum_{s_0 \nsubseteq s} (1 - f_{s_0}(t))(1 - t)^{|T(s_0, s - s_0)|} \]

这里 \(|T(s_0, s - s_0)|\) 表示 \(s_0\)\(s - s_0\) 联通的边数,\((1 - f_{s_0}(t))\)\(t\) 时刻 \(s_0\) 已经联通的概率

\(all\) 表示全集,这样可以把原式子写成

\[E(x) = \int_0^1 f_{all}(x) dx \]

\[=\int_0^1 \sum_{s_0 \nsubseteq all} (1 - f_{s_0}(x)) (1 - x)^{|T(s_0, all - s_0)|} \]

\[=\sum_{s_0 \nsubseteq all} \int_0^1 (1 - x)^{|T(s_0, all - s_0)|} - \int_0^1 f_{s_0}(x) (1 - x)^{|T(s_0, all - s_0)|} \]

\[=\sum_{s_0 \nsubseteq all} \frac 1 {|T(s_0, all - s_0)| + 1} - \int_0^1 f_{s_0}(x) (1 - x)^{|T(s_0, all - s_0)|} \]

这显然是一个递归形式,它的边界是 \(\int_0^1 f_{\{1\}}(t) dt = 0\)

下面我们来看更一般的形式

\[\int_0^1 f_s(t) (1 - t)^k dt \]

\[=\sum_{s_0 \nsubseteq s} (\frac 1 {k + |T(s_0, s - s_0)| + 1} - \int_0^1 f_{s_0}(t)(1 - x)^{k + |T(s_0, s - s_0|}) \]

然后这道题就做完了

初始情况为

\[\int_0^1 (1 - t)^0 f_{all}(t) dt \]

\(code\)

#include <bits/stdc++.h>
using namespace std;
#define rg register
// #ifdef ONLINE_JUDGE
// char ss[1 << 17], *A = ss, *B = ss;
// inline char gc(){ if(A == B){ B = (A = ss) + fread(ss, 1, 1 << 17, stdin); if(A == B) return EOF; } return *A++; }
// #define getchar gc
// #endif
inline int read(){
    #define G ch = getchar()
    rg char G;
    rg int x = 0, f = 0;
    while(!isdigit(ch)) f |= (ch == '-'), ch = getchar();
    while(isdigit(ch)) x = (x << 1) + (x << 3) + (ch ^ 48), ch = getchar();
    return f ? -x : x;
}
#define rep(i, a, b) for(int i = a; i <= b; ++i)
#define pre(i, a, b) for(int i = a; i >= b; --i)
const int N = 11, M = N * N;
double f[1 << 10][M];
int link[N], sz[1 << 10];
int n, m;
signed main(){
    n = read(), m = read();
    rep(i, 1, m){
        int x = read(), y = read();
        link[x - 1] |= 1 << (y - 1);
        link[y - 1] |= 1 << (x - 1);
    }
    int top = 1 << n;
    for(int i = 1; i < top; ++i) sz[i] = sz[i & (i - 1)] + 1;
    // rep(i, 0, m) f[1][i] = 0;
    for(int i = 2; i < top; ++i) if(i & 1){
        for(int s = (i - 1) & i; s; s = (s - 1) & i) if(s & 1){
            rg int ecnt = 0;
            rep(k, 0, n - 1) if((i >> k & 1) & ((~s) >> k & 1)) ecnt += sz[link[k] & s];
            rep(j, 0, m - ecnt) f[i][j] += 1. / (j + ecnt + 1) - f[s][j + ecnt];
        }
    }
    printf("%.6lf", f[top - 1][0]);
    // cout<<fixed<<setprecision(6)<<f[top - 1][0]<<endl;
    getchar(); getchar();
    return 0;
}
posted @ 2020-06-06 11:57  __int256  阅读(107)  评论(0编辑  收藏  举报