概率分析
对于概率分析,特点就是:在输入上假设。
随机算法
随机算法的区别就在于不是像概率分析那样假设输入的一个分布,而是设定一个分布,即随机算法会随机化输入。
举个例子吧,就是雇佣新人。
概率分析 | HIRE-ASSISTANT(n) |
---|---|
1 | best=0; |
2 | for i = 1 to n |
3 | interview candidate i |
4 | if candidate is better than candidate best |
5 | best = i |
6 | hire candidate i |
看完这个可能感觉不到它的特点,再把随机算法的伪代码贴出来,大家体会一下:
随机算法 | RANDOMIZED-HIRE-ASSISTANT(n) |
---|---|
1 | randomly permute the list of candidate(这句话才是重点) |
2 | best=0; |
3 | for i = 1 to n |
4 | interview candidate i |
5 | if candidate is better than candidate best |
6 | best = i |
7 | hire candidate i |
到这里应该有体会了。概率分析和随机算法的区别在于:前者我们在输入做了一个假设,后者我们没有做这种假设,尽管随机化输入会花费一些额外时间。
书里说到一个随机算法通常是解决一个问题最简单、最有效的方法,我还没有深刻的体会。
5.4中提到了4个例子,大概记一下,分别是生日悖论、球与箱子、特征序列和在线雇佣问题。