算法导论学习笔记-第5章 概率分析和随机算法

本文深入探讨了概率分析在确定算法运行时间上的应用,以及随机算法如何通过引入随机性来优化算法行为。重点介绍了使用指示器随机变量进行概率分析的方法,并详细解释了两种随机排列数组的方法及其引理,旨在突出随机性在算法设计中的关键作用。
摘要由CSDN通过智能技术生成

总结:这章由雇佣问题引出了概率 分析和随机算法。概率分析一般用于确定一些算法的运行时间。而随机化算法用来强行使算法的输入符合某种概率分布,随机化算法的行为不仅由输入决定,还要由 一个随机数生成器所生成的值来决定。

 

1、 概率分析

可以利用指示器随机变量来进行概 率分析,获得事件发生的期望值。

 

 

引理:给定样本空间 S S 中的事件 A ,令 XA =I{A} ,则 E[XA ]=Pr{A}

 

 

2、 随机算法

概率分析是在输入上作了假设,而 在随机算法中,随机发生在算法上,而不是发生在输入分布上,也就是对于同一个输入,由于引入了随机算法,最后的排列也会发生变化。这样做是使得“即使你最 坏的敌人也无法产生最糟的输入数列,因为随机的排列使得输入次序不相关,只有在随机数生成器产生一个不幸运的置换时,随机算法才运行得不好”。

 

随机排列数组的方法

1 )为数组的每个元素 A[i] 赋一个随机的优先级 P[i] ,然后根据优先级对数组 A 中的元素进行排序。 这 里排序,将花费 O(nlgn) 的时间。

伪代码

 

 

引理:假设所有的优先级都是唯一 的,过程 PERMUTE-BY-SORTING 可 以产生输入的均匀随机排列。

 

2 )原地排列给定的 数列。在 O(n) 时间内完成。

伪代码

 

引理:过程 RANDOMIZE-IN-PLACE 可以计算出一个均匀随机排列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值