CLRS2e读书笔记—Chapter5 & Appendix C

这部分主要学习概率分析。在概率论的教程里面其实已经学过这些了…

附录C的第一部分是排列组合的基础知识;第二部分是经典概率论;第三部分是离散随机分布的一些概念(期望、方差);第四部分介绍了两个常见的离散分布:几何分布和二项分布;最后一部分是可选内容,介绍了二项分布的尾相关的上下界。

第五章主要介绍了随机算法的写法,特别强调了均匀随机的概念,引入随机变量指示器作为一个计算期望的技巧。

内容小结:

计数:略

概率:贝叶斯公式: \[Pr\{A | B\}=\dfrac{Pr\{A\}Pr\{B|A\}}{Pr\{B\}}\]

    全概率公式:Pr{B}=Pr{B|A1}+Pr{B|A2}+...+Pr{B|An},其中Pr{A1}+...+Pr{An}=1

离散随机变量:期望与方差的公式

常见分布:几何分布,E[x]=1/p,D[x]=$q/p^2$

      二项分布,E[x]=np,D[x]=npq

随机算法:其一是随机生成优先级,然后再优先级唯一的情况下据其对数组进行重排;

     其二是原地与其后(含自身)进行随机交换。

Exercises:

5.1-1 第4行确定了比较的可行性

5.1-2 Random(a,b)

    return a+(b-a)*Random(0,1)

5.1-3 如果调用两次,那么至少返回01和10的概率都是p(1-p),利用这一点,可以这么写:

    Random

    x ← BIASED_RANDOM

    y ← BIASED_RANDOM

    if x≠y then 

      return x

5.2-1 1/n,1/n!

5.2-2 1/n

5.2-3 令$X_i$为第i次出现的骰子的点数,则总数是$\sum_{i=1}^nX_i$,期望就是$\sum_{i=1}^nEX_i$=3.5n

5.2-4 令事件$X_i$表示第i位客户拿回自己的帽子,指示器随机变量为I($X_i$),则拿回帽子的总人数为$\sum_{i=0}^nI(X_i)$,而Pr{$X_i$}显然为1/n,所以最后的期望数为1。

5.2-5 挑选序列中任意一组数据A[i],A[j](j>i),两者构成逆序对的概率是1/2,令$X_{ij}$表示事件“$A_i$与$A_j$构成逆序对,那么总的逆序对期望数目应当是

\[ E \left( \sum_{i=1}^{n-1}\sum_{j=i+1}^n X_{ij} \right) = n(n-1)/4 \]

5.3-1 Randomize_In_Place'(A)

    n ← length[A]

    swap A[1]↔Random[1,n]

    for i ← 2 to n

     do swap A[i]↔Random[i,n]

换言之,将初始条件独立出来就不会陷入题设的(莫名其妙的)窘境。

5.3-2 这段代码不能实现产生非同一排列的任意排列的产生,而只能生成所有A[i]与原序列不同的序列。缺失了A[i]部分不同的那一部分。

5.3-3 不会,可以举例证明。

5.3-4 代码构成了一个循环交换,可选位置是n个,概率显然是1/n。问题是B[dest]可能多次指向同一位置,这样序列的数目根本就不对,更别说是不是均匀随机序列了。

5.3-5 所有元素都唯一的概率应该是\[ Pr\{A\}= \dfrac{n^3 * (n^3-1) * \cdots *(n^3-n)}{n^3 * n^3 * \cdots * n^3} \],下略【其实我没算出来= =】

5.3-6 在重新放置的过程中,如果发现优先级对应的位置已经有元素(可用辅助数组或者直接将B初始化为A中不可能存在的数值),就重新调用随机数生成函数,直至不再重复。根据概率理论,这个过程应该是收敛的,不会陷入死循环中。

posted @ 2012-08-21 11:14  生无所息  阅读(289)  评论(0编辑  收藏  举报