期望&概率dp总结
2017-11-02 17:22
507 查看
转载来自:期望&概率dp总结
这篇博客写得好,膜一番dalao。
E=Σp1∗(E1+X1)+Σp2∗(E+X2)
其中E为当前状态的期望,E1为下一个状态的期望,p1和X1分别为将当前状态转移到下一个状态的概率和花费,p2和X2分别为保持当前状态的概率和花费。
最后化简为E=(Σp1∗(E1+X1)+Σp2∗X2)/(1−Σp2)
其中E为当前状态的概率,E1为上一个状态的概率,p1是由上一个状态转移到当前状态的概率
如果有n个状态,则需要建立n∗(n+1)行的矩阵,用A[i][j]表示
A[i][j]表示由状态i转移到状态j的概率,通常将最后一列设为0,再让A[i][i]+=−1
这篇博客写得好,膜一番dalao。
1.期望dp
期望dp通常逆推,即从结果推向初始状态,也可以用记忆化搜索进行dp;E=Σp1∗(E1+X1)+Σp2∗(E+X2)
其中E为当前状态的期望,E1为下一个状态的期望,p1和X1分别为将当前状态转移到下一个状态的概率和花费,p2和X2分别为保持当前状态的概率和花费。
最后化简为E=(Σp1∗(E1+X1)+Σp2∗X2)/(1−Σp2)
2.概率dp
概率dp通常顺推,即从初始状态推向结果,E=Σp1∗E1其中E为当前状态的概率,E1为上一个状态的概率,p1是由上一个状态转移到当前状态的概率
3.高斯消元
当概率dp不能用递推式进行状态转移时,就需要用到高斯消元如果有n个状态,则需要建立n∗(n+1)行的矩阵,用A[i][j]表示
A[i][j]表示由状态i转移到状态j的概率,通常将最后一列设为0,再让A[i][i]+=−1
const double eps = 1e-6; typedef vector<double> vec; typedef vector<vec> mat; vec gauss_jordan(const mat& A, const vec& b) { int n = A.size(); mat B(n, vec(n + 1)); for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) B[i][j] = A[i][j]; for (int i = 0; i < n; i++) B[i] = b[i]; for (int i = 0; i < n; i++) { int pivot = i; for (int j = i; j < n; j++) { if (fabs(B[j][i]) > fabs(B[pivot][i])) pivot = j; } swap(B[i], B[pivot]); if (fabs(B[i][i]) < eps) return vec(); for (int j = i + 1; j <= n; j++) B[i][j] /= B[i][i]; for (int j = 0; j < n; j++) { if (i != j) { for (int k = i + 1; k <= n; k++) B[j][k] -= B[j][i] * B[i][k]; } } } vec x(n); for (int i = 0; i < n; i++) x[i] = B[i] ; return x; }
相关文章推荐
- 关于概率dp的个人理解与总结
- 概率DP总结 by kuangbin
- 概率DP总结(待整理)
- 概率dp总结
- ACM概率期望dp刷题总结
- 关于概率dp的个人理解与总结
- 概率DP总结 入门12题+论文合集
- [学习笔记]概率与期望dp做题总结
- DP之数位,概率,树形总结
- 【专题总结】概率&期望DP
- 概率DP入门总结 16题
- 期望&概率dp总结
- BZOJ(本校) 3027 快速傅里叶变换 - 概率与期望&dp
- 对于一类离散的概率DP问题的总结(第一次)
- 动态规划练习题:概率DP总结,求解数学期望或概率的题目
- 概率DP总结
- poj 2096 Collecting Bugs(概率dp入门)
- 概率dp ural 1776. Anniversary Firework
- hdu4576(概率DP)
- ACdream 1113 The Arrow (概率dp求期望)