算法导论第五章概率分析和随机算法

本文探讨了算法导论第五章的内容,重点在于概率分析和随机算法。介绍了雇佣问题中的概率分析,阐述了随机算法的概念及其期望运行时间。讲解了示性函数的应用,如雇佣人数的期望值计算,并通过骰子期望值的例子进一步说明。接着讨论了随机算法的实例,分析了不同情况下的概率分布。最后,提到了在线雇佣问题的策略和球与箱子模型,揭示了期望投球次数的计算公式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


5.1雇佣问题

  1. 概率分析
    概率分析是在问题分析中应用概率的理念,大多数情况,我们采用概率分析来分析一个算法的运行时间,对所有可能的输入产生的运行时间取平均,当报告此类的运行时间时,称其为平均情况运行时间

  2. 随机算法
    如果一个算法的表现不仅由输入决定,而且也由随机数生成器产生的数值决定,则称这个算法是随机的。称一个随机算法的运行时间为期望运行时间

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=1n1n1ni1

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值