我是靠谱客的博主 威武哑铃,这篇文章主要介绍条件期望4,现在分享给大家,希望可以做个参考。

条件期望例题----快排算法的分析

快速排序算法的递归定义如下:
有n个数( n ≥ 2 ngeq 2 n≥2), 一开始随机选取一个数 x i x_i xi​, 并将 x i x_i xi​和其他n-1个数进行比较, 记 S i S_i Si​为比 x i x_i xi​小的元素构成的集合, S i ˉ bar{S_i} Si​ˉ​为比 x i x_i xi​大的元素构成的集合, 然后分别对 S i S_i Si​和 S i ˉ bar{S_i} Si​ˉ​进行排序.
如果集合中元素个数等于2, 则简单比较即可, 如果大于2, 则重复上述过程.
我们选取整个排序过程中的比较次数的期望作为算法效率分析的指标. 记 M n M_n Mn​为在n个不同元素的集合中, 实行快速排序算法所需要的比较次数的均值, 易知 M 0 = M 1 = 0 , M 2 = 0.5 M_0 = M_1 = 0, M_2 = 0.5 M0​=M1​=0,M2​=0.5.
易知
M n = ∑ j = 1 n E [ 比较次数 ∣ 初始随机取的元素为集合中的第 j 个值 ] 1 n M_n = sum_{j=1}^nE[比较次数|初始随机取的元素为集合中的第j个值]frac{1}{n} Mn​=j=1∑n​E[比较次数∣初始随机取的元素为集合中的第j个值]n1​
如果初始选的值是所有元素中第 j j j小的, 则对应的 S S S集合就有 j − 1 j-1 j−1个元素, S ˉ bar{S} Sˉ就有n-j个元素, 因为第一次选取之后一定会比较 n − 1 n-1 n−1次, 所以可得
M n = ∑ j = 1 n ( n − 1 + M j − 1 + M n − j ) 1 n = n − 1 + 1 n ∑ k = 1 n − 1 M k + 1 n ∑ m = n − 1 1 M m = n − 1 + 2 n ∑ k = 1 n − 1 M k begin{split} M_n &= sum_{j=1}^n(n-1 + M_{j-1} + M_{n-j})frac{1}{n} \ &=n-1 + frac{1}{n}sum_{k=1}^{n-1}M_k + frac{1}{n}sum_{m=n-1}^{1}M_m \ &=n-1 + frac{2}{n}sum_{k=1}^{n-1}M_k end{split} Mn​​=j=1∑n​(n−1+Mj−1​+Mn−j​)n1​=n−1+n1​k=1∑n−1​Mk​+n1​m=n−1∑1​Mm​=n−1+n2​k=1∑n−1​Mk​​
所以
n M n = n ( n − 1 ) + 2 ∑ k = 1 n − 1 M k nM_n = n(n-1) + 2sum_{k=1}^{n-1}M_k nMn​=n(n−1)+2k=1∑n−1​Mk​
易知
( n + 1 ) M n + 1 = n ( n + 1 ) + 2 ∑ k = 1 n M k (n+1)M_{n+1} = n(n+1) + 2sum_{k=1}^{n}M_k (n+1)Mn+1​=n(n+1)+2k=1∑n​Mk​
所以
( n + 1 ) M n + 1 − n M n = n ( n − 1 ) = 2 n + 2 M n (n+1)M_{n+1} - nM_n = n(n-1) = 2n+2M_n (n+1)Mn+1​−nMn​=n(n−1)=2n+2Mn​
即
( n + 1 ) M n + 1 = 2 n + ( n + 2 ) M n (n+1)M_{n+1} = 2n+(n+2)M_n (n+1)Mn+1​=2n+(n+2)Mn​
所以
M n + 1 = 2 n n + 1 + n + 2 n + 1 M n M_{n+1} = frac{2n}{n+1} + frac{n+2}{n+1}M_n Mn+1​=n+12n​+n+1n+2​Mn​

两边同除以 ( n + 2 ) (n+2) (n+2), 有
M n + 1 n + 2 = 2 n ( n + 1 ) ( n + 2 ) + M n n + 1 frac{M_{n+1}}{n+2} = frac{2n}{(n+1)(n+2)} + frac{M_n}{n+1} n+2Mn+1​​=(n+1)(n+2)2n​+n+1Mn​​
迭代这个过程, 有
M n + 1 n + 2 = 2 n ( n + 1 ) ( n + 2 ) + ( 2 ( n − 1 ) n ( n + 1 ) + M n − 1 n ) = ⋯ = 2 ∑ k = 0 n − 1 n − k ( n + 1 − k ) ( n + 2 − k ) ( M 1 = 0 ) begin{split} frac{M_{n+1}}{n+2} &= frac{2n}{(n+1)(n+2)} + left(frac{2(n-1)}{n(n+1)} + frac{M_{n-1}}{n} right) \ &=cdots \ &=2sum_{k=0}^{n-1}frac{n-k}{(n+1-k)(n+2-k)} \ &(M_1 = 0) end{split} n+2Mn+1​​​=(n+1)(n+2)2n​+(n(n+1)2(n−1)​+nMn−1​​)=⋯=2k=0∑n−1​(n+1−k)(n+2−k)n−k​(M1​=0)​
所以
M n + 1 = 2 ( n + 2 ) ∑ i = 1 n i ( i + 1 ) ( i + 2 ) ( i = n − k ) = 2 ( n + 2 ) [ ∑ i = 1 n 2 i + 2 − ∑ i = 1 n 1 i + 1 ] ≈ 2 ( n + 2 ) [ ∫ 3 n + 2 2 x d x − ∫ 2 n + 1 1 x d x ] ( 步长为 1 的数值积分 ) ≈ 2 ( n + 2 ) l n ( n + 2 ) begin{split} M_{n+1} &= 2(n+2)sum_{i=1}^{n}frac{i}{(i+1)(i+2)} \ &(i = n-k) \ &=2(n+2)left[sum_{i=1}^{n}frac{2}{i+2} - sum_{i=1}^{n}frac{1}{i+1} right] \ &approx 2(n+2)left[ int_3^{n+2}frac{2}{x}dx - int_2^{n+1}frac{1}{x}dxright] \ &(步长为1的数值积分) \ &approx 2(n+2)ln(n+2) end{split} Mn+1​​=2(n+2)i=1∑n​(i+1)(i+2)i​(i=n−k)=2(n+2)[i=1∑n​i+22​−i=1∑n​i+11​]≈2(n+2)[∫3n+2​x2​dx−∫2n+1​x1​dx](步长为1的数值积分)≈2(n+2)ln(n+2)​

最后

以上就是威武哑铃最近收集整理的关于条件期望4的全部内容,更多相关条件期望4内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(263)

评论列表共有 0 条评论

立即
投稿
返回
顶部