计算机算法设计与解析.ppt

计算机算法设计与解析

* 跳跃表 在一个完全跳跃表中,具有i级指针的结点中有一半同时具有i+1级指针。为了维持跳跃表的平衡性,可以事先确定一个实数0p1,并要求在跳跃表中维持在具有i级指针的结点中同时具有i+1级指针的结点所占比例约为p。为此目的,在插入一个新结点时,先将其结点级别初始化为0,然后用随机数生成器反复地产生一个[0,1]间的随机实数q。如果qp,则使新结点级别增加1,直至q?p。由此产生新结点级别的过程可知,所产生的新结点的级别为0的概率为1-p,级别为1的概率为p(1-p),…,级别为i的概率为pi(1-p)。如此产生的新结点的级别有可能是一个很大的数,甚至远远超过表中元素的个数。为了避免这种情况,用 作为新结点级别的上界。其中n是当前跳跃表中结点个数。当前跳跃表中任一结点的级别不超过 * 拉斯维加斯( Las Vegas )算法 拉斯维加斯算法的一个显著特征是它所作的随机性决策有可能导致算法找不到所需的解。 void obstinate(Object x, Object y) {// 反复调用拉斯维加斯算法LV(x,y),直到找到问题的一个解y bool success= false; while (!success) success=lv(x,y); } 设p(x)是对输入x调用拉斯维加斯算法获得问题的一个解

文档评论(0)

1亿VIP精品文档

相关文档