分治策略-基础.md

基础思想

分治策略(Divide and Conquer)基本思想:

  1. 将原始问题划分或者归结为规模较小的子问题;

  2. 递归或迭代求解每个子问题;

  3. 将子问题的解综合得到原问题的解。

阅读更多

分治策略-算法设计思想.md

算法设计思想

  • 将原问题归结为规模为n-1的2个子问题;

  • 继续归约,将原问题归结为规模为n-2的4个子问题。继续…,当子问题规模为1时,归约过程截止。

  • 从规模1n-1,陆续组合两个子问题的解。直到规模为n

  • 分析方法:递推方程。

阅读更多

分治策略-快速排序.md

基础思想

  • 用首元素xx作划分标准,将输入数组AA划分成不超过xx的元素构成的数组ALA_L,大于xx的元素构成的数组ARA_R。其中,AL,ARA_L,A_R从左到右存放数组AA的位置。

  • 递归地堆子问题ALA_LARA_R进行排序,直到子问题规模为11时停止。

阅读更多

分治策略-幂乘问题.md

幂乘问题

输入:aa为给定实数,nn为自然数

输出:ana^n

传统算法思想

顺序相乘 an=(...(((aa)a)a)...)aa^n=(...(((a\quad a)a)a)...)a

乘法次数:Θ(n)\varTheta (n)

阅读更多

分治策略-改进.md

减少子问题数

依据

分治算法的时间复杂度方程

W(n)=aW(n/b)+d(n)W(n) = aW(n/b) + d(n)

aa:子问题数,n/bn/b:子问题规模,d(n)d(n):划分与综合工作量。

阅读更多

分治策略-典型算法.md

选择问题

选最大和最小

输入:集合LL(含nn个不等的实数)

输出:LL中的第ii小的元素

  • i=1i=1,称为最小元素

  • i=ni=n,称为最大元素

位置处在中间爱你位置的元素,成为中位元素

nn为奇数,中位数唯一,i=(n+1)/2i=(n+1)/2

nn为偶数,可指定为i=n/2+1i=n/2+1

选最大算法:顺序比较,在最坏情况下的时间为W(n)=n1W(n)=n-1

阅读更多

分治策略-卷积

卷积及其应用

向量计算

给定向量:

  • a=(a0,a1,...,an1)a=(a_0, a_1, ..., a_{n-1})

  • b=(b0,b1,...,an1)b=(b_0, b_1, ..., a_{n-1})

向量和: a+b=(a0+b0,a1+b1,...,an1+bn1a+b=(a_0+b_0,a_1+b_1,...,a_{n-1}+b_{n-1}

阅读更多