算法导论20.2-2

来源:互联网 发布:淘宝上的算命准吗 编辑:程序博客网 时间:2024/06/06 06:40
  • 问题描述
    写出PROTO-vEB-DELETE的伪代码。通过扫描簇内的相关位,来更新相应的summary位。并且你实现的伪代码的最坏情况运行时间是多少?
  • 问题求解

PROTO-vEB-DELETE(V,x)
注:删除V中的x

if V.u == 2    V.A[x]=0else PROTO-vEB-DELETE(V.cluster[high(x)],low(x))    isEmpty = true    for i=high(x)*sqrt(u) to (high(x)+1)*sqrt(u)-1       if PROTO-vEB-MEMBER(V.cluster[high(x)],i)           isEmpty = false           break    if isEmpty       PROTO-vEB-DELETE(V.summary,high(x))      

在最坏情况下需要两次PROTO-vEB-DELETE操作和u次扫描簇内的相关位,每次扫描都花费O(lglgu)时间。因此我们得到花费时间的递推式

T(u)=2T(u)+O(ulglgu)

用主定理求得T(u)=O(ulglgu)

原创粉丝点击