算法(3)概率分析与随机算法

要点:

  • 指示器随机变量
  • 随机算法 2个
  • 雇佣问题与在线雇佣问题(待完善)

指示器随机变量

基本定义

  • 给定一个样本空间--集合S(样本空间中包含了所有可能的基本事件, 基本事件是互斥的且不能再分割的最小事件, 所有事件都是1~n个基本事件的和), 给定一个事件A, 事件A对应的指示器随机变量I{A} = {1: 如果A发生; 0: 如果A不发生;}; (I{A}有时候写成Ind{A})
  • 例子: 对于抛掷一枚硬币, 正面朝上的期望次数. 样本空间S = {H, T}; Pr{H}=1/2, Pr{T}=1/2; 那么正面朝上的期望次数是 E[I{H}] = Pr{H} = 1/2; (最常用定理: 指示器随机变量I{A}的数学期望=Pr{A})
  • 在抛掷了n次硬币中, 求正面向上的次数的数学期望.
    • 传统解法, 定义随机变量X表示向上的次数(抛掷n次时), X是一个集合, X={0, 1, 2...,n} E(X) = Σ[x=0~n] x*Pr{X=x} //本质上是加权求和;
    • 指示器解法, 同样的X, 我们认为X=X[1]+X[2]+...+X[n]个独立事件组成, 每个独立事件产生1/n的结果量, 总体=个体结果的和 → 总体的期望=个体结果的和的期望;
    • E(X) = E[ Σ[x=1~n] Ind{X[1]} ] = Σ[x=1~n] E[ Ind{Xi} ] = Σ[x=1~n] (1/2) = n/2;

两个随机算法

  • 我们已经听过的算法设计思路: 分而治之(递归), 今天学习的是随机算法, 只有两个, 很容易掌握; 随机算法主要可以帮助解决算法输入的差异太大问题, 从而把时间复杂度的方差控制得比较小;

  • Permute-by-Sorting(A)
    length = A.length
    P[length] is a new empty array
    for i=1 to length,
    P[i] = RANDOM(1, length^3) //P[i] gets a random value from [1, length^3]
    sort A, using P as sort keys

  • Randomize-in-Place(A)
    length = A.length
    for i=1 to length,
    swap A[i] and A[RANDOM(i,length)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,154评论 0 2
  • 贪心算法 贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上...
    fredal阅读 13,040评论 3 52
  • 随机算法涉及大量概率论知识,有时候难得去仔细看推导过程,当然能够完全了解推导的过程自然是有好处的,如果不了解推导过...
    __七把刀__阅读 11,121评论 0 6
  • 31店七日套装
    胡雅杰阅读 871评论 0 0
  • 我一直希望长成一个有趣的人,能够结识不同的朋友,能够让自己的生活丰富多彩起来,看了杰西卡的其实你也可以很有趣这本书...
    d507f7adc196阅读 3,427评论 0 0