早教吧作业答案频道 -->其他-->
算法设计分析题,求高手解答,高分考虑堆栈S,其基本操作包括:push(S,x)-元素x入栈;pop(S)-栈顶元素弹出;multipop(S,k):栈顶连续弹出k个元素(若栈中元素个数不足k个,则将栈弹空),
题目详情
算法设计分析题,求高手解答,高分
考虑堆栈S,其基本操作包括:push(S, x)-元素x入栈;pop(S)-栈顶元素弹出;multipop(S, k):栈顶连续弹出k个元素(若栈中元素个数不足k个,则将栈弹空),假设每入栈或弹出一个元素的时间成本为O(1)。请分别用聚集分析法、记账分析法、势能函数分析法证明:对含任意n个上述栈操作的序列,该序列单个操作的平均时间成本至多为O(1)
考虑堆栈S,其基本操作包括:push(S, x)-元素x入栈;pop(S)-栈顶元素弹出;multipop(S, k):栈顶连续弹出k个元素(若栈中元素个数不足k个,则将栈弹空),假设每入栈或弹出一个元素的时间成本为O(1)。请分别用聚集分析法、记账分析法、势能函数分析法证明:对含任意n个上述栈操作的序列,该序列单个操作的平均时间成本至多为O(1)
▼优质解答
答案和解析
聚集分析:n次操作最多的插入n个元素,插入删除元素个数数最多为2n,平均每次为2,即O(1)。
记账分析:设每次插入操作为2元,一元付账,一元存款,每删除一个元素(不管是pop还是multypop)为0元(插入该元素时已存了一元账),n次操作最多付2n元,平均2元,即O(1)。
势能函数分析:设势能函数f(i)为第i次操作后栈中的元素个数,显然f(i)恒大于0,f(0)=0;每插入一个元素代价为2,1是该操作代价,1是用来存储势能,f(i)=f(i-1)+1,删除一个元素操作代价为0,但栈中元素个数少了1,f(i)=f(i-1)-1,或者删除k个元素,代价为0,但f(i)=f(i-1)-k,操作代价用势能支付了,n次操作后,实际代价最多2n,平均每次也是O(1)。
记账分析:设每次插入操作为2元,一元付账,一元存款,每删除一个元素(不管是pop还是multypop)为0元(插入该元素时已存了一元账),n次操作最多付2n元,平均2元,即O(1)。
势能函数分析:设势能函数f(i)为第i次操作后栈中的元素个数,显然f(i)恒大于0,f(0)=0;每插入一个元素代价为2,1是该操作代价,1是用来存储势能,f(i)=f(i-1)+1,删除一个元素操作代价为0,但栈中元素个数少了1,f(i)=f(i-1)-1,或者删除k个元素,代价为0,但f(i)=f(i-1)-k,操作代价用势能支付了,n次操作后,实际代价最多2n,平均每次也是O(1)。
看了 算法设计分析题,求高手解答,...的网友还看了以下:
已知正方形ABCD的边长为6,P是BC边上异于点B的动点,设BP=x,S△APB=S如图,已知正方 2020-05-14 …
甲、乙两地相距s千米,某人计划a小时到达,现在要提前2小时到达,每小时要多走A.(a-2分之s-a 2020-05-20 …
设R 和S 分别是r和 s元关系,且 R有n个元组,S有m个元组。执行关系R和 S的笛卡儿积,记为 2020-05-23 …
设R和S分别是r和s元关系,且E有n个元组,s有m个元组。执行关系R和S的笛卡尔积,记为T=R×S, 2020-05-24 …
如果传递函数分子分母有同一个因子,例如(s+2)/(s+2)(s+3),他的极点应该...如果传递 2020-06-10 …
在等差数列{an}中,⑴若项数为偶数2n,则S2n=n(a1+a2n)=n(an+an+1)(an 2020-07-21 …
设α1,α2,…,αs为线性方程组Ax=0的一个基础解系,β1=t1α1+t2α2,β2=t1α2 2020-08-02 …
向量组α1,α2,…,αs(s≥2)线性无关,且可由向量组β1,β2,…,βs线性表示,则以下结论中 2020-11-03 …
S是上下振动的波源,频率为10Hz,所激起的波沿X轴向左向右传播,波速为20m/s,质点M、N到S的 2020-12-09 …
如图,S是上下振动的波源,频率为10Hz,所激起的波沿x轴向左向右传播,波速为20m/s,质点M、N 2020-12-18 …