zoukankan      html  css  js  c++  java
  • 浅谈[0,1]区间内的n个随机实数变量中增加偏序关系类题目的解法

    浅谈[0,1]区间内的n个随机实数变量中增加偏序关系类题目的解法


    众所周知,把[0,1]区间内的n个随机、相互独立的实数变量(x_i)之间的大小关系写成一个排列({p_i}),使得(forall i<n, x_{p_i} < x_{p_{i+1}}),那么有一个结论是所有的排列都是等概率出现的,这完全不难理解,因为所有的变量都是可以轮换的。
    但是,题目显然不会这么简单,有些题目会给一定的条件限制,例如强制一些偏序关系(p_u<p_v),对于这种情况,一般要求给定的偏序拥有特殊性质(例如一颗森林)才能做,并且可以通过常规的组合方法得到(对于森林的情况,合法的概率是(prod_{i} frac 1 {i的子树大小}))。但是对于这类问题的一些扩展,传统的组合方法便显得十分复杂,需要更加简洁,适用性更广的代数方法———对这些变量进行积分以得到答案。

    CTS2019 day1t1随机立方体

    题面

    这个题目也是求一个排列,并且求满足某种排列的方案数。
    注意到题目中要求的恰好k个极大的数的概率不太好算,考虑容斥掉这一条件。
    我们强制k个极大的数,剩下的数没有限制,那么对于一种有l个极大数的方案,显然我们会算(inom l k)次,直接二项式反演即可。
    现在问题变成了如何算强制k个极大数的方案数。极大数这个概念较为复杂,我们尝试着将其变为简单的偏序关系。首先先枚举k个极大数,并且确定好这k个极大数之间的偏序关系,然后根据极大数的定义我们可以得到某个极大数与其他数的偏序关系。不难发现这个偏序关系本质上是一条链套一堆菊花,那么我们可以很方便的维护这个偏序关系的贡献。

    CTS2019 day2t3氪金手游

    题面
    对于此题,我们相当于枚举一个合法抽卡顺序,根据这个抽卡顺序来计算概率。
    这个顺序与排列有点像,唯一的不同是这个概率的计算是加权的,即若抽卡顺序的排列是({p_i}),那么对答案的贡献是(prod_{i=1}^n {w_{p_i} over sum_{j=i}^n w_{p_j}})
    一种方法是强行转成与排列类似的问题,把问题转化成有n种颜色,每种颜色有(w_i)个不同的球,令某种颜色的第一个球的位置为(T_i),(T_i)需要满足某种偏序关系(基图为树);或者是倒着从大到小自底向上地考虑抽卡顺序。这两种方法都需要用到容斥,原因是偏序关系并不构成一个外向树,所以无法直接算。但是下面提到的积分法就不需要考虑这么多,这种大一统的思想利用随机变量显得无脑却十分有效。

    我们令(g_1(x)=1,g_2(x)=2(1-x),g_3(x)=3(1-x)^2)
    答案便为$$int_{0}^1 g_{w_1}(x_1) { m d} x_1 int_{0}^1 g_{w_2} { m d} x_2......int_{0}^1 g_{w_n}(x_n) { m d} x_n prod [x_{u_i} < x_{v_i}]$$

    只需要证

    [int_{0}^1 g_{w_1}(x_1) { m d} x_1 int_{0}^1 g_{w_2} { m d} x_2......int_{0}^1 g_{w_n}(x_n) { m d} x_n prod_{i=1}^{n-1} [x_{p_i}<x_{p_{i+1}}] = prod_{i=1}^n {w_{p_i} over sum_{j=i}^n w_{p_j}} ]

    可以轻松用归纳证明。
    我们任选一点为根,直接对答案的式子自底向上的进行积分即可。
    题目中(w_i=j)的概率为(p_{ij}),这样的话我们直接令i的函数(f_i(x)=sum_{j=1}^3 p_{ij}g_j(x))即可。









  • 相关阅读:
    计算机网络为什么是这样样子?
    MySQL技术内幕 InnoDB存储引擎 B+树索引的使用 笔记
    后端性能-batch 化的想法
    稳定高效的服务来自于稳定而合理的数据结构
    gRPC 学习了解记录
    Go 进阶训练营 Week02: error 错误处理
    生活小感受
    Nginx 499 排查到docker 中一个进程一直在空转
    方法论和原理总结
    Debug
  • 原文地址:https://www.cnblogs.com/gzy-cjoier/p/10902919.html
Copyright © 2011-2022 走看看