
数据结构
我不是狼人
渣渣辉
展开
-
COMP9101 算法设计 week5
动态规划动态规划的主要思想是:从(精心选择)较小规模子问题的最优解中建立问题的最优解。子问题的选择允许递归构造子问题的最优解,从最优解到较小规模的子问题。DP的效率来自于这样一个事实,即解决较大问题所需的子问题集严重重叠;每个子问题只求解一次,其解被存储在一个表中,以供解决较大问题时使用。实例:活动ai的列表,1≤i≤n,开始时间si,结束时间fi。两个活动不能同时进行。任务:找出总持续时间最长的兼容活动的子集。我们在上一节使用贪心方法来解决一个有点类似的问题,即找到具有最大可能数量的兼容活动的原创 2020-07-07 11:03:40 · 515 阅读 · 1 评论 -
COMP9101 算法设计 week4
贪心算法问题一:一个活动ai的列表,1<=i<=n,si时间开始,fi结束,没有两个活动在同时发生。任务:找到最大兼容size的子集。尝试1:总是选择最短且与之前不冲突活动,删掉冲突的活动?不可以。尝试2:选择一个与其他冲突最小的activity。看起来对未来选择限制最小。不可以。**正确的策略:**在不与之前选择的冲突下,总是选择结束时间最早的。证明这个贪心算法的最优证明任何最优解与贪婪算法的活动数量相同:找到违反贪婪原则的第一个的活动。表明用贪婪算法的选择代替原创 2020-06-25 00:46:18 · 621 阅读 · 1 评论 -
COMP9101 算法设计 week3
FFT快速傅立叶假设我们有2个多项式:PA(x) = Anx^n…+A0. PB(x)=Bnx ^n+…+B0将他们变成value表示法:因为它们两个的乘积是2n阶的,我们需要2n+1个不同的x:PA(x)<-> {(x0,PA(x0)),…(x2n, PA(x2n))}PB(x)<->{(x0,PB(x0)),…,(x2n, PB(x2n))}2.将它们点对点相乘{(x0, PA(x0)*PB(x0)), (x1,PA(x1)PB(x1))…(x2n原创 2020-06-17 01:16:33 · 406 阅读 · 0 评论 -
COMP9101算法设计 week1 chapter2
Karatsuba trickAB = A1B1*2^(n/2)+(A1B0+A0B1)2 ^(n/2)+A0B0=A1B12^(n/2)+( (A1+A0) * (B0+B1)-A1B1-A0B0)*2 ^(n/2)+A0B0我们在每次递归回合中保存一个乘积。以上可知,T(n)满足递归:T(n)=3T(n/2)+cn则:T(n/2) = 3T(n/(2^2))+c(n/2)对于n/(2^2):T(n/(2 ^ 2))= 3T(n/(2^2))+c*(n/(2 ^2))…T(n)=3原创 2020-06-06 21:06:47 · 658 阅读 · 0 评论 -
COMP9101 算法设计 第一周
随机算法是non-deterministic的。问题:两个贼抢仓库,他们必须分开一堆没有标签的东西。设计算法确保贼相信自己至少获利一半。解决方法:一个贼负责分赃,另一个贼先拿。这样两个贼都认为自己拿到的不亏。但如果是三个贼呢?如果按照之前的方法,一个贼分赃,其他两个先拿。但如果两个贼选了同一份呢?有人认为这样的话第一个贼就可以选择剩下2个的任意一个,剩下的两个贼按之前的方式继续。但事实行不通。在将货物分成A,B,C之后,可能第二个贼认为:A=50%, B=40%, C=10%但第三个贼认原创 2020-06-03 21:12:48 · 1053 阅读 · 0 评论 -
算法导论整理
1.算法基础1.插入排序(Insertion-Sort)for j=2 to A.length: key = A[j] //insert A[j] into the sorted sequence A[1...j-1] i=j-1 while i &amp;gt;0 and A[i]&amp;gt;key A[i+1] = A[i] i = i-1 A[i+1]=key原理:类似于扑克...原创 2018-11-19 13:08:58 · 322 阅读 · 0 评论