算法设计与分析学习笔记Week_02

Week_02

一、大纲

在这里插入图片描述


二、序列求和的方法

1.等比数列与调和级数求和公式

∑ k = 0 ∞ a q k = a 1 − q   ( q < 1 )           ,             ∑ k = 1 n 1 k = ln ⁡ n + O ( 1 ) \sum_{k=0}^{\infty}aq^k = \frac{a}{1-q} \ (q<1) \ \ \ \ \ \ \ \ \ , \ \ \ \ \ \ \ \ \ \ \ \sum_{k=1}^n \frac1 k = \ln n + O(1) \\ k=0aqk=1qa (q<1)         ,           k=1nk1=lnn+O(1)
∑ t = 1 k t   2 t − 1 = ( k − 1 ) 2 k + 1 \sum_{t=1}^k t \ 2^{t-1} = (k-1)2^k+1 t=1kt 2t1=(k1)2k+1

2.二分查找

//算法 BinarySearch(T, l, r, x)
//输入: 数组T, 下标从l到x;数x
//输出: j
l=1; r=n;
while l<=r do
    m = (l+r)/2;
    if T[m]==x then return m;
    else if T[m]>x then r=m-1;
        else l=m+1;
return 0;

分析:假设 n = 2 k − 1 n = 2^k-1 n=2k1 ,则输入有 2 n + 1 2n+1 2n+1
(1) x x x T T T 中:

x = T [ 1 ] x = T [ 2 ] … x = T [ n − 1 ] x = T [ n ] x = T[1] \\ x = T[2] \\ \dots \\ x = T[n-1]\\ x = T[n] \\ x=T[1]x=T[2]x=T[n1]x=T[n]
(2) x x x 不在 T T T 中:

x < T [ 1 ] T [ 1 ] < x < T [ 2 ] … T [ n − 1 ] < x < T [ n ] T [ n ] < x x < T[1] \\ T[1] < x < T[2] \\ \dots \\ T[n-1] < x < T[n] \\ T[n] < x x<T[1]T[1]<x<T[2]T[n1]<x<T[n]T[n]<x
比较t次的输入个数:
t = 1 , 2 , … , k − 1 t=1,2,\dots,k-1 t=1,2,,k1 ,比较 t t t 次: 2 t − 1 2^{t-1} 2t1 个;
比较 k k k 次的输入有 2 k − 1 + n + 1 2^{k-1}+n+1 2k1+n+1
总次数:对每个输入乘以次数并求和
平均时间复杂度:
假设 n = 2 k − 1 n=2^k -1 n=2k1 ,各种输入概率相等

A ( n ) = 1 2 n + 1 [ ∑ t = 1 k − 1 t 2 t − 1 + k ( 2 k − 1 + n + 1 ) ] = ⌊ log ⁡ n ⌋ + 1 2 A(n) = \frac1{2n+1}[\sum_{t=1}^{k-1}t2^{t-1}+k(2^{k-1}+n+1)] \\ =\lfloor \log n \rfloor +\frac12 A(n)=2n+11[t=1k1t2t1+k(2k1+n+1)]=logn+21

3.估计和式上界的放大法

放大法:

  1. ∑ k = 1 n a k ≤ n a m a x \sum_{k=1}^{n} a_k \le na_{max} k=1naknamax
  2. 假设存在常数 r < 1 r<1 r<1 ,使得对一切 k ≥ 0 k\ge 0 k0 a k + 1 / a k ≤ r a_{k+1}/a_k \le r ak+1/akr 成立

∑ k = 0 n a k ≤ ∑ k = 0 ∞ a 0 r k = a 0 ∑ k = 0 ∞ r k = a 0 1 − r \sum_{k=0}^{n}a_k \le \sum_{k=0}^{\infty}a_0r^k = a_0\sum_{k=0}^{\infty}r^k = \frac{a_0}{1-r} k=0nakk=0a0rk=a

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值