文章目录
5.1雇佣问题
-
概率分析
概率分析是在问题分析中应用概率的理念,大多数情况,我们采用概率分析来分析一个算法的运行时间,对所有可能的输入产生的运行时间取平均,当报告此类的运行时间时,称其为平均情况运行时间。 -
随机算法
如果一个算法的表现不仅由输入决定,而且也由随机数生成器产生的数值决定,则称这个算法是随机的。称一个随机算法的运行时间为期望运行时间。
5.2示性函数
雇佣的人数期望值为 l g n lgn lgn
5.2-1
第一个应聘者就是最好的应聘者: P = 1 n P=\frac{1}{n} P=n1
5.2-2
第一个应聘者必被录用,且最好的应聘者不能出现在第一的位置
P = 1 n P=\frac{1}{n} P=n1
P = ∑ i = 1 n − 1 1 n ∗ 1 n − i P = \sum_{i=1}^{n-1}\frac{1}{n}*\frac{1}{n-i} P=∑i=1n−1n1∗n−i1
5.2-3
单个骰子的期望值:
E ( X ) = 1 + 2 + 3 + 4 + 5 + 6 6 = 3.5 E(X)=\frac{1+2+3+4+5+6}{6}=3.5 E(X)=61+2+3+4+5+6=3.5
n n n个骰子: 3.5 n 3.5n 3.5n
5.3随机算法
随机算法代码如下(示例):
# 随机算法
import random
# 随机排列数组
def permute_by_sorting(A):
P = []
for i in range(len(A)):
P.append(random.randint(1, (len(A)) ** 3))
C = list(zip(A, P))
C.sort(key=lambda s: s[1])
new_A = list(zip(*C))[0