对于民科吧s5_or吧友自增树的复杂度计算
自增树如s5_or所说,是一种思想像Splay的数据结构,每个节点维护一个堆权值,每当询问一个节点时,堆权值++,并返回时维护堆权值为堆的性质。这个树从旋转次数上比Splay小是肯定的,因为Splay旋转次数是logn次,但是这个树不一定,空间复杂度是O(n),接下来分析时间复杂度。
如果插入时是离散的数,询问是也是离散的数,那么树的深度期望logn,询问的时候期望复杂度也是O(logn),询问之后树的深度变化小于等于1,期望每logn次询问深度变化1,但因为变化有正负,所以深度期望不变,由于旋转次数小于Splay,所以常数小于Splay,在全随机情况下优于Splay。
但是如果是构造数据的话,自增树的灾难就来了,首先我们按次序插入K个数,从小到大,按照自增树的性质,势必会形成一条链,当然Splay可以靠不断提到根优化,自增树中也可以在返回时随机旋转(即堆权值相等时判断是否旋转的地方随机)做到logn,然后我们访问最右边的节点,它被提到了根,如果堆权值相等不旋转,那么我们在依次访问右数第二个,第三个。。。节点,最后复杂度变成了O(n),如果堆权值相等旋转,我们依次访问右数第二个,第三个。。。节点,然后就变成了一条链,又是O(n)。当然,这也可以靠随机相同权值时的旋转来做到控制深度,对于第n个访问的节点,它要提到根节点的期望访问次数f(n)= f(n-1)+ 0.5;即每N次访问会变成一条链,均摊O(logn)
从复杂度上来看没什么大问题,但是从功能上来说较之Splay和可持久化Treap有很大差距,不支持拆分合并因为它的旋转不可控(不能一组操作控制树的形态),在常数上肯定大于专业的集合类平衡树(如AVl,SBT),可以作为一种选择方式,来应对不同节点访问量差距大并且访问顺序随机的问题。
PS:可能复杂度推断有细节错误,但大致比较分析应该是正确的。
对于民科吧s5_or吧友自增树的复杂度计算的更多相关文章
- 最新 淘友天下java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.淘友天下等10家互联网公司的校招Offer,因为某些自身原因最终选择了淘友天下.6.7月主要是做系统复习.项目复盘.Leet ...
- 【强化学习】MOVE37-Introduction(导论)/马尔科夫链/马尔科夫决策过程
写在前面的话:从今日起,我会边跟着硅谷大牛Siraj的MOVE 37系列课程学习Reinforcement Learning(强化学习算法),边更新这个系列.课程包含视频和文字,课堂笔记会按视频为单位 ...
- avalon1.0正式发布
2013年最后的收成:avalon1.0正式发布 大半年前我就说过,MVVM是前端究极的解决方案,因此之后我大多数时间都在折腾avalon,成立了专门的QQ群与感兴趣的一起讨论.感谢第一批吃螃蟹的人, ...
- 2013年最后的收成:avalon1.0正式发布
大半年前我就说过,MVVM是前端究极的解决方案,因此之后我大多数时间都在折腾avalon,成立了专门的QQ群与感兴趣的一起讨论.感谢第一批吃螃蟹的人,avalon发展得很快,GITHUB上的贡献人数达 ...
- bzoj3674 可持久化并查集
我是萌萌的任意门 可持久化并查集的模板题-- 做法好像很多,可以标号法,可以森林法. 本来有O(mloglogn)的神算法(按秩合并+倍增),然而我这种鶸渣就只会写O(mlog2n)的民科算法--再加 ...
- 关于过拟合、局部最小值、以及Poor Generalization的思考
Poor Generalization 这可能是实际中遇到的最多问题. 比如FC网络为什么效果比CNN差那么多啊,是不是陷入局部最小值啊?是不是过拟合啊?是不是欠拟合啊? 在操场跑步的时候,又从SVM ...
- Rethink your own
0 声明 文中显式或隐式指出是摘抄的部分,仅代表原作者的观点. 该随笔的动机源自胡适先生的一句话的前半部分: 1 知识以及建立知识的过程有强弱.高大上土肥圆之分吗? 文章摘自传说中的1024:[真人轉 ...
- 一些对数学领域及数学研究的个人看法(转载自博士论坛wcboy)
转自:http://www.math.org.cn/forum.php?mod=viewthread&tid=14819&extra=&page=1 原作者: wcboy 现在 ...
- [转]学术型 github 畅想
转自 http://wulfric.me/2013/09/github-and-academy/ 以 github 的精神提供学术服务,也许是一个不错的方向. 什么是 github? Github 是 ...
随机推荐
- vs2012+ winform+.net4.0发布如何在xp上运行
今天在英文版vs2013打包发布4.0(非4.0 client)的winform时,遇到了在xp上无法运行的情况,.net framework 4.0在xp上已安装.在打包前,winform工程,即菜 ...
- (二)Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用
#!usr/bin/env python # -*- coding: utf-8 -*- def test(): print('hello, world') if __name__ == " ...
- kata练习题
This time no story, no theory. The examples below show you how to write function accum: Examples: ac ...
- react入门--------安装react
创建一个单页面应用 Create React App是开始构建新的React单页应用程序的最佳方式. 它可以帮助您快速集成您的开发环境,以便您可以使用最新的JavaScript功能,它提供了一个很好的 ...
- 使用js将Unix时间戳转换为普通时间
var unixtime=1358932051;formatTime (time) { let unixtime = time let unixTimestamp = new Date(unixtim ...
- L2-011. 玩转二叉树(不建树)
L2-011. 玩转二叉树 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设键值都是互不相等的正整 ...
- HDU 1081 DP找最大和的矩阵
题目大意: 在一个给定的大矩阵中找一个小型的矩阵,使这个矩阵中的元素和最大 可以先来看下面这个问题: 原来有做过在一个给定的数字序列中找一个最大和子序列,核心代码如下: ]; ]; ; ; int r ...
- poj3352
Road Construction Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7980 Accepted: 4014 Des ...
- uestc 1903
#include<stdio.h> int main() { int n,m,i,t; scanf("%d",&t); while(t--){ scanf(&q ...
- 洛谷——P2212 [USACO14MAR]浇地Watering the Fields
P2212 [USACO14MAR]浇地Watering the Fields 题目描述 Due to a lack of rain, Farmer John wants to build an ir ...