430 likes | 766 Views
北京航空航天大学计算机学院. 具体数学 Concrete Mathematics. 赵启阳 2014年10月1日星期三. 8.4 投硬币 Flipping Coins. 正面朝上次数的概率母函数. 记硬币在落下后正面朝上的概率为 p ,反面朝上的概率为 q 。那么 。 仅扔 1 次硬币的话,正面朝上次数的变量为 X ,那么 X 的概率母函数为 那么,扔 n 次硬币的话,如果每次之间是独立的,那么总的硬币朝上次数的变量的 pgf 为 所以,正面朝上次数为 k 的概率为. 为什么?. 二项分布. 特殊的扔法.
E N D
北京航空航天大学计算机学院 具体数学Concrete Mathematics 赵启阳 2014年10月1日星期三
正面朝上次数的概率母函数 • 记硬币在落下后正面朝上的概率为p,反面朝上的概率为q。那么 。 • 仅扔1次硬币的话,正面朝上次数的变量为X,那么X的概率母函数为 • 那么,扔n次硬币的话,如果每次之间是独立的,那么总的硬币朝上次数的变量的pgf为 • 所以,正面朝上次数为k的概率为 为什么? 二项分布
特殊的扔法 • 现在考虑一种特殊的扔法:一直扔到出现正面朝上为止。那么,需要扔k次的概率是多少? • 显然,k = 1的概率为p;而k = 2的概率为qp;顺着来,在一般的k上的概率为qk-1p。那么,对应的pgf为 • 再推广一下,出现n次正面朝上的概率母函数为 • 由此引出负二项分布的pgf 负二项分布:在正向事件发生次数达到某个定值之前,负向事件发生次数为k的概率
特殊的扔法 • 在这种特殊的扔法中,概率空间与此前遇到的概率空间有些不同。现在的概率空间中包含无限个元素,其中每个元素都是正面/反面组成的的一个序列,其中包含n个正面,而且序列的最后一个值是正面,相应的概率为pnqk-n。 • 例如,对于n = 3,如果用H和T表示正面/反面的话,那么序列THTTTHH就是此概率空间中的一个元素,其对应的概率值为qpqqqpp = p3q4。
二项分布的pgf • 假设X、Y分别服从n和p决定的二项分布和负二项分布。由于X的pgf为H(z)n,因此X的期望值为 • X的方差为 • X的标准差为 ,因此扔n次硬币的话,正面朝上的次数大约为
负二项分布的pgf • 对于服从负二项分布的Y,我们知道它的pgf为 • 首先,我们来看一个简单的pgf(事实上是n=1时的负二项分布) • 显然有
负二项分布的pgf • 由于p + q = 1,因此继续化简得到 • 回到Y的pgf,可以得到 • 还有没有更简单的计算方法?让我们观察一下pgf G的倒数形式,记为F(z)
负二项分布的pgf • 因此有 • 很遗憾,这里的函数F并不是任何概率分布的母函数,因为它的一个系数(-q/p)是负数。然而,它仍然满足所有系数之和等于1的要求,也就是说,如果仍然用硬币来举例的话,可以看成,在F对应的概率分布上,正面朝上的概率为-q/p,正面朝下的概率为1/p=1+q/p。 • 这样处理起来,G(z)就可以认为是:用F(z)所决定的概率分布,扔了- 1次硬币。
负二项分布的pgf • 相应地,参数为(n, p)的负二项分布就等同于参数为(-n, -q/p)的(普通)二项分布。另一方面,二项分布的均值和方差很容易计算,那么对这个“负”二项分布,就有 • 负参数下的普通二项分布!!!这也是“负”二项分布名称的来历。
负二项分布的pgf • 回顾这种解决思路 2 1 在数值上 发现1次负二项分布与普通二项分布的联系 将1次负二项分布看成负参数的普通二项分布 3 4 将(n,p)负二项分布看成(-n,-q/p)的普通二项分布 借用求二项分布均值方差的简便方法,得到结果
连续两次正面的扔硬币游戏 • 考虑一个更复杂的扔硬币游戏:我们需要扔多少次硬币,才能出现连续两次正面朝上的结果? • 很显然,在这个游戏对应的概率模型中,概率空间中的元素是H/T构成的、以HH结尾的序列: • 对概率空间中的任一元素,其概率等于H换成p、T换成q的乘积。例如对于THTHH,其概率为
连续两次正面的扔硬币游戏 • 仔细观察所有序列,有什么共同的结构特征? • 1、每个序列末尾两位都是HH; • 2、除末尾以外的其他部分不包含HH; • 第1个特征很简单。 • 第2个特征呢?假设序列长度为n,我们在中间位置上遇到了H,那么H的前后必定都是T。 ...THT…HH
连续两次正面的扔硬币游戏 • 继续分析第2个特征: • 除了结尾处以外,序列的其他片断都是由T、HT组成的。注意,HT是绑定在一起的。换句话说,我们可以写出一个“生成文法”,给出序列的组装方法: • 小问题:能否将上面的{T、HT}换成{TH、T} ? ...THT…HH
连续两次正面的扔硬币游戏 • OK。根据前面的组装方法,我们可以将所有的序列按照其“长度”的递增顺序排列起来(当然,HT被看做是“1个字母”): • 依次考虑这些序列的对应概率,很容易得到
连续两次正面的扔硬币游戏 • 也就是说,对于“长度”为n的所有序列,其概率的一般形式为 • 好的,如果我们关注反应Ω中序列长度的随机变量X,那么现在我们可以写出X的pgf了: 另一种方法参见Ch. 7和后面的例子 母函数的对应级数默认收敛
连续两次正面的扔硬币游戏 • 在得到了pgf之后,就可以很容易地算出序列长度变量X的均值和方差: • 例如对均匀的硬币,均值和方差分别为6和22。也就是说,平均起来,需要扔6次能够得到连续两次正面朝上的结果。
更复杂的硬币游戏 • 在Chap. 7给出的母函数方法的基础上,可以考虑更复杂的硬币游戏:Sheldon、Leonard和Penny分别选定模式HHTH、HTHH和THHH。两两之间玩这样的游戏:不停地扔一枚硬币,直到出现某个模式为止,并且判相应的人获胜。有这样的有趣结果: SheldonVSLeonard 赢面3:2 Penny VSSheldon Leonard VSPenny 赢面7:5 赢面7:5
一个PGF与马尔可夫链的例子 • 二英和三十二郎最近赚嗨了。他们一直在靠山屯、牤牛屯、向阳屯、七里屯和铁岭转悠,每个月都在一个地方开演唱会。为照顾导师们的体力,经纪人选择下个月演唱会地点时,都会从邻屯中均匀随机地选择一个。年初,二老师在靠山屯,三十二郎在七里屯。老乡们想知道,大约多久之后二位导师的演唱会会撞车?结果靠谱不? 靠山 牤牛 铁岭 向阳 七里
一个PGF与马尔可夫链的例子 • 将老乡们的额问题转换成数学语言,“大约多久之后撞车”为等待时间的期望值,“是否靠谱”需要考察等待时间的方差多大。方差小即意味着预测靠谱。 • 在每个月,二英和三十二郎的演唱会地点的组合有四种: D 演唱会地点在对角线两端 A 演唱会地点相邻但都不在铁岭 K 演唱会地点在铁岭和别的一个啥地儿 S 演唱会地点在一个地方(老乡们欢呼) • 下面将D、A、K、S赋以另一层意义 D从初始状态到状态D的步数的随机变量 A从初始状态到状态A的步数的随机变量 K从初始状态到状态K的步数的随机变量 S从初始状态到状态S的步数的随机变量
一个PGF与马尔可夫链的例子 • 首先列出马尔可夫链的状态转移图 • 然后给出随机变量D、A、K、S的PGF
一个PGF与马尔可夫链的例子 • 根据上面的方程组得到 • 利用上式,求解PGF方程组得到 • 上式即为状态随机变量S的PGF,因此可以根据PGF的一、二阶导数计算其期望和方差,分别为75/16和105/4。也就是说,大约在4.6875个月之后二英和三十二郎撞车!!!均方差5.1235说明这个预测不怎么靠谱,前后摆动很大。
一个PGF与马尔可夫链的例子 • 还有一种更简便的求解方法。注意到,如果以1 + w替换z,那么由D、A、K的递归式PGF,有 • 因此很容易地求出 • 随后即可求解期望值和方差。 为什么以1 + w替换z,解得的S的导数是对的?
一段普通的查找代码 S1 Set j := 1.(已经访问了所有 < j 的位置) S2 If j > n, stop.(查找失败) S3 If KEY[j] = K, stop.(查找成功) S4 Increase j by 1 and return to step S2. (再来) 查找成功时返回位置j上的数据,否则将关键字为K的数据项插入到表中: n := j, KEY[n] := K, DATA[n] := D(K), 有关的两个参量N和n:N为表的容量,n为表中实际存放的记录数量。
解决低效问题的哈希方法 • 前面的代码有什么缺陷? • 当关键字K未在原表中时,查找效率很低,尤其是表的规模n很大的时候; • 改进低效问题的哈希方法:使用m个独立的小表来替代1张大表。 FIRST[i],小表i中的首记录,1 <= i <= m NEXT[j],记录j在相应小表中的后继,1 <= j <= N 而且 FIRST[i] = -1,小表i为空,1 <= i <= m NEXT[j] = 0,记录j无后继,1 <= j <= N
哈希函数和改进后的代码 • 哈希函数:函数h在任意关键字K上给出1到m之间的数字作为哈希结果。 • 使用哈希方法改进的代码: H1 Set i := h(K) and j := FIRST[i]. H2 If j <= 0, stop. (查找失败) H3 If KEY[j] = K, stop.(查找成功) H4 Set i := j, then set j := NEXT[i], return to H2.(再来) • 查找失败时将关键字K和新记录插入到表中: n := n + 1; if j < 0 then FISRT[i] := n else NEXT[j] := n; KEY[n] := K; DATA[n] := D(K); NEXT[n] := 0.
哈希分析:准备工作 • 平均复杂度averaged complexity是在算法在服从某种概率分布的输入数据上的复杂度期望值。 • 哈希方法是分析平均复杂度的很好的案例。 • 记p为步骤H3的执行次数,则各步骤执行次数为 Step 查找失败查找成功 H11次 1次 H2P + 1次 P次 H3P次 P次 H4P次 P – 1次 P是决定整体复杂度的关键量
哈希分析:准备工作 • 在理想情形下,对任意的关键字K,哈希以相等的概率将其哈希到1~m。 • 对于n条记录来说,每条记录的位置仅依赖于它们的哈希序列 <h1, h2, …, hn> • n条记录的哈希序列<h1, h2, …, hn>总共有mn种可能取值,而且概率均等; • P是定义在哈希序列上的随机变量。
情形1:关键字K不在表中 • 表中已有n条记录 • 相应的概率空间中的基本事件 ω = (h1, h2, …, hn, hn+1) • hn+1是查找失败的关键字K的哈希值 • 对任意的ω,都有Pr(ω) = 1 / mn+1 • 容易得到两个等式 (1)P = [h1 = hn+1] + [h2 = hn+1] + … + [hn = hn+1]; (2)Pr[hj = hn+1] = 1 / m, 1 <= j <= n
情形1:关键字K不在表中 • 因此有 EP = E[h1 = hn+1] + E[h2 = hn+1] + … + E[hn = hn+1] • 代入E[h1 = hn+1] = Pr[h1 = hn+1] = 1 / m,有 EP = n / m • 粗略看来,采用哈希后效率提高了m倍 • 若记xj = [hj = hn+1],则xi、xj之间是独立的。由于xj的PGF为 Xj(z) = (m – 1 + z) / m
情形1:关键字K不在表中 • 因此P的PGF为 P(z) = X1(z) X2(z)… Xn(z) = ((m – 1 + z) / m)n • 显然P服从参数为(n, p = 1 / m)的二项分布,方差为 npq = n(m – 1) / m2 • 当m非常大时,方差近似为n / m,标准差近似为(n / m)0.5
情形2:关键字K在表中 • 记基本事件为 ω = (h1, h2, …, hn; k) • k为待查找的关键字,对应的哈希值为hk • 因此基本事件的数量为mn·n • 记sj为我们查找第j个关键字的概率,显然 Pr(h1, h2, …, hn; k = hj) = sj / mn • 注意:有些应用倾向于查找首关键字或尾关键字,因此这里并不假定sj= 1 / n
情形2:关键字K在表中 • 如果K被第p个插入到它所在的小表中,则P = p。因此有 P(h1, …, hn; k) = [h1 = hk] + [h2 = hk] + … + [hk = hk] • 为什么上式加到k而不是n? 蓝:n条记录、m个表 红:前k条记录对应的表 绿:哈希值hk对应的小表中的前p条记录
情形2:关键字K在表中 • 若记xj = [hj = hk],则 P = x1 + x2 + … + xk • 但是我们不能直接写成EP = Ex1 + Ex2 + … + Exk,因为这里的k是一个不定的量。 • 由于k依赖于待查找的关键字K,因此下面要用条件概率来解决。 • 首先引入条件概率母函数:
情形2:关键字K在表中 • 对条件概率母函数,容易证明 • 令X = P而Y = K。对任意的1到n之间的k,随机变量P|k被定义为一系列独立随机变量之和x1 + x2 + … + xk,因此其PGF为 z怎么来的?
情形2:关键字K在表中 • 因此P的PGF为 • 其中 • 显然,S是查找概率sk对应的PGF!
情形2:关键字K在表中 • 随后使用PGF求解P的均值和方差,得到 • 对于最普通情形sk = 1 / n,代入上式得到
5th Homework • 练习题(不必上交) 8.12,8.20,8.21,8.57 • 作业(可用中/英文提交,不计入最终分数) Please tell me your opinion on our CMcourse. You’re completely free on any topics interesting you. Thanks.