如何证明treap数插入的期望旋转次数小于2
来源:互联网 发布:如何防止网络麻将开挂 编辑:程序博客网 时间:2024/05/22 08:03
介绍
树堆,在数据结构中也称Treap,是指有一个随机附加域满足堆的性质的二叉搜索树,其结构相当于以随机数据插入的二叉搜索树。其基本操作的期望时间复杂度为O(logn)。
对于插入
给节点随机分配一个优先级,先和二叉排序树的插入一样,先把要插入的点插入到一个叶子上,然后跟维护堆一样,如果当前节点的优先级比父亲大就旋转,如果当前节点是父亲的左儿子就右旋,如果当前节点是父亲的右儿子就左旋。
证明
在这里我们先假设优先级的分布是稠密的。
如果不是稠密的,可以通过映射来构造一个稠密的分布:
把优先级从小到大排序,然后把优先级直接用序号代替。这样就得到了一个稠密的分布
设我们要插入的节点的优先级为
首先,如果
所以我们讨论
我们可以得到树高
而我们的
每次旋转,X都会减少一层树高(升上去了)
所以我们的旋转次数
由于我们的X是在
那么期望旋转次数为加权平均数
即
证明完毕.
阅读全文
0 0
- 如何证明treap数插入的期望旋转次数小于2
- 向量的旋转证明
- 不基于旋转的treap
- 【模板】基于旋转的Treap
- 积分的比赛次数期望
- 二项分布期望与方差的证明
- 【Treap/非旋转Treap】BZOJ1503 [NOI2004]郁闷的出纳员
- 四元数旋转公式的证明
- 四元数旋转公式的证明
- 四元数旋转公式的证明
- 四元数旋转公式的证明
- 小于65536的数的十六进制数
- Treap堆的插入,删除操作
- 小于256任意数的二进制数
- Mysql查出前10位消费次数小于2的会员(聚焦面试题)
- 编写一个程序,对于小于1000的正整数,通过实验确定期望产生多少个数才能使得每个数至少出现一次。
- 如何找到一个数组里面重复次数最多的数
- 如何在数组中找出重复次数最多的数
- MONGODB的基础知识
- 模拟串口代码-不一样的方法
- FOJ-2180 骑士
- 数据结构与算法目录
- CANARY爆破
- 如何证明treap数插入的期望旋转次数小于2
- 关于JAVA中substring()和indexOf()的用法
- 人工智能是一种思维方式
- MongoDB数据库的基本操作
- hdu 1202
- ubuntu下java 命令行引用jar包的方法
- 对象数组
- 机房收费系统之上下机
- Linux-----SSH免密码登录