南开大学软件学院2021年秋季学期研究生算法课程(复习)非确定算法:随机与近似

非确定算法:随机与近似

确定性算法Deterministic algorithms

对于给定的输入,算法的输出和运行时间不变

非确定性算法Non-deterministic algorithms

对于给定的输入,算法的输出或运行时间是不确定的

  • 启发式算法Heuristic algorithms
    • 利用输入数据的特征和信息对问题进行求解
    • 尽全力逼近最优解,但是无法得知和最优解的差距
  • 近似算法Approximation algorithms
    • 对问题给出一个近似最优解(数据无关)
    • 可以给出对最优解或最优解的上下界近似比(夹挤)
  • 随机算法Randomized algorithms
    • 随机数使算法本身成为随机变量,具有分布(数据无关)

随机算法

随机算法的优势

  1. 实现简单;
  2. 更加高效;
  3. 避开最坏情况(防hack);

常见的随机算法

  • 数论:Miller-Rabin素数测试,Pollard-Rho素因子分解
  • 数据结构:随机平衡树,布隆过滤器,各种哈希
  • 图论:最小割,平面图上的系列随机优化
  • 代数与优化:多项式矩阵正确性测试,线性规划,整数规划

关于随机和概率的一个问题

在半径为r的圆上取一弦,弦长大于\sqrt{3}r的概率是多少?

引例:快速排序(确定性算法)

  • 代码:每次在当前子数组中的确定位置选值做划分
  • 算法的最快运行时间按为O(n log n)
  • 但永远可以构造一个(或多个)对抗样例使算法时间复杂度到O(n^2),只要使得每次选取的值都是当前区间的最值
  • 即对于数据“明牌”了

随机化快速排序

  • 每次在区间内随机选取一个值作为分界值
  • 算法集合:每种选值策略都会对应一个新算法。
    • 共多少个?n!个,等价于洗牌shuffle后选指定位置(考虑划分树)
  • 期望时间复杂度为O(n log n)
  • 对谁的期望?关键在于:数据与算法之间的博弈
  • 对算法分布求期望(√)vs对数据分布求期望(×)
  • 算法分布上,对任一数据求期望(为什么O(n log n))

两个疑问

  • 洗牌算法如何实现?
    • 在n!全排列中选?
    • 现实洗牌
    • Fisher-Yates算法:
      • i=1,\cdot \cdot \cdot ,n,从i到n中任选一个数与a_i交换
    • 错误的Fisher-Yates算法?对i+1到n换;对1到n换
  • 为什么洗牌后,每次指定位置元素等价于每次在随机位置选元素&#x
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值