算法设计与分析课程

本文详细探讨了算法设计与分析的各个章节,包括搜索、排序、分治、贪心、动态规划和图算法。深入讲解了线性搜索、二分搜索、选择排序、冒泡排序、插入排序、归并排序、快速排序的时间复杂度和性能,并介绍了分治策略的Master定理。此外,还涵盖了最小反例、最短路径、最大流等问题以及动态规划的子结构问题。
摘要由CSDN通过智能技术生成

Chapter 1 Algorithm Analysis

  • Complexity
    • time/space
    • Best/Worst/Average

Searching

  • Linear
    • Best: Ω ( 1 ) \Omega(1) Ω(1)
    • Worst: O ( n ) O(n) O(n)
    • Space: O ( 1 ) O(1) O(1)
    • Average: E ( x ) = ∑ P r ( x ) ⋅ c o s t ( x ) = ∑ i = 1 n 1 n ⋅ i = 1 n ∑ i = 1 n ⋅ n ( n + 1 ) 2 = n + 1 2 = O ( n ) E(x)=\sum Pr(x)\cdot cost(x)=\sum_{i=1}^n \frac{1}{n}\cdot i=\frac{1}{n}\sum i=\frac{1}{n}\cdot \frac{n(n+1)}{2}=\frac{n+1}{2}=O(n) E(x)=Pr(x)cost(x)=i=1nn1i=n1i=n12n(n+1)=2n+1=O(n)
  • Binary(sorted array as input)
    • Best: Ω ( 1 ) \Omega(1) Ω(1)
    • Worst: O ( log ⁡ n ) O(\log n) O(logn)
    • Space: O ( 1 ) O(1) O(1)
    • Average: E ( x ) = ∑ P r ( x ) ⋅ c o s t ( x ) = ∑ i = 1 log ⁡ n 2 i − 1 n ⋅ i = 1 n ( ∑ i = 1 log ⁡ n 2 i − 1 ⋅ i ) = 1 n ( 2 log ⁡ n ⋅ log ⁡ n − 2 log ⁡ n + 1 ) = O ( log ⁡ n ) E(x)=\sum Pr(x)\cdot cost(x)=\sum_{i=1}^{\log n} \frac{2^{i-1}}{n}\cdot i=\frac{1}{n}(\sum_{i=1}^{\log n}2^{i-1}\cdot i)=\frac{1}{n}(2^{\log n}\cdot \log n-2^{\log n}+1)=O(\log n) E(x)=Pr(x)cost(x)=i=1lognn2i1i=n1(i=1logn2i1i)=n1(2lognlogn2logn+1)=O(logn)

Sorting

  • Linear
    • Selection:every iteration, select the i i ith smallest number and locates x x x at i i ith slot.
      • Best=Worst=Average= ∑ i = 1 n − 1 i = n ( n − 1 ) 2 = Θ ( n 2 ) \sum_{i=1}^{n-1} i=\frac{n(n-1)}{2}=\Theta(n^2) i=1n1i=2n(n1)=Θ(n2)
      • Space: O ( 1 ) O(1) O(1)
    • Bubble:repeated swap the adjacent elements if they are in wrong order.
      • Best=Worst=Average= ∑ i = 1 n − 1 i = n ( n − 1 ) 2 = Θ ( n 2 ) \sum_{i=1}^{n-1} i=\frac{n(n-1)}{2}=\Theta(n^2) i=1n1i=2n(n1)=Θ(n2)
      • Space: O ( 1 ) O(1) O(1)
    • Insertion:each time takes first element in the unsorted part and inserts it to the right place of the sorted one( ∀ A [ j ] > x , A [ j + 1 ] ← A [ j ] , j ← j − 1 \forall A[j]>x, A[j+1]\leftarrow A[j],j\leftarrow j-1 A[j]>x,A[j+1]A[j],jj1)
      • Best: Ω ( n ) \Omega(n) Ω(n)
      • Worst: ∑ i = 2 n = n ( n − 1 ) 2 = O ( n 2 ) \sum_{i=2}^n=\frac{n(n-1)}{2}=O(n^2) i=2n=2n(n1)=O(n2)
      • Space: O ( 1 ) O(1) O(1)
      • Average:
        • suppose A [ i ] A[i] A[i] should be inserted at position j j j E ( x ) = ∑ P r ( x ) ⋅ c o s t ( x ) = 1 i ⋅ ( i − 1 ) + ∑ j = 2 i 1 i ⋅ ( i − j + 1 ) = i 2 − 1 i + 1 2 E(x)=\sum Pr(x)\cdot cost(x)=\frac{1}{i}\cdot (i-1)+\sum_{j=2}^{i}\frac{1}{i}\cdot (i-j+1)=\frac{i}{2}-\frac{1}{i}+\frac{1}{2} E(x)=Pr(x)cost(x)=i1(i1)+j=2ii1(ij+1)=2ii1+21
        • ∑ i = 2 n ( i 2 − 1 i + 1 2 ) = n 2 4 + 3 n 4 − ∑ i = 1 n 1 i = O ( n 2 ) \sum_{i=2}^n(\frac{i}{2}-\frac{1}{i}+\frac{1}{2})=\frac{n^2}{4}+\frac{3n}{4}-\sum_{i=1}^n\frac{1}{i}=O(n^2) i=2n(2ii1+21)=4n2+43ni=1ni1=O(n2)
  • Recursive
    • MergeSort:select the mid element, MergeSort(A[left, mid]), MergeSort(A[mid+1, right]), Merge(A, left, mid, right)
      • Best=Worst=Average= Θ ( n log ⁡ n ) \Theta(n\log n) Θ(nlogn)
      • Space: O ( n ) O(n) O(n)
    • QuickSort: Randomly Choose a p i v o t pivot pivot and partition the array by smaller and larger halves, QucikSort(A[1, i-1]), QuickSort(A[i+1, n])
      • Best: Ω ( n log ⁡ n ) \Omega(n\log n) Ω(nlogn)
      • Worst: O ( n 2 ) O(n^2) O(n2),退化到linear
      • Space: O ( log ⁡ n ) O(\log n) O(logn)
      • Average:
        T ( n ) = E m [ T ( m − 1 ) + T ( n − m ) ] + c n T(n)=E_m[T(m-1)+T(n-m)]+cn T(n)=Em[T(m1)+T(nm)]+cn
        = E m [ T ( m − 1 ) ] + E m [ T ( n − m ) ] + c n =E_m[T(m-1)]+E_m[T(n-m)]+cn =Em[T(m1)]+Em[T(nm)]+cn
        = ∑ m = 1 n P r ( m ) ⋅ T ( m − 1 ) + ∑ m = 1 n P r ( m ) ⋅ T ( n − m ) + c n =\sum_{m=1}^n Pr(m)\cdot T(m-1)+\sum_{m=1}^n Pr(m)\cdot T(n-m)+cn =
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值