原帖

  自增树如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吧友自增树的复杂度计算的更多相关文章

  1. 最新 淘友天下java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.淘友天下等10家互联网公司的校招Offer,因为某些自身原因最终选择了淘友天下.6.7月主要是做系统复习.项目复盘.Leet ...

  2. 【强化学习】MOVE37-Introduction(导论)/马尔科夫链/马尔科夫决策过程

    写在前面的话:从今日起,我会边跟着硅谷大牛Siraj的MOVE 37系列课程学习Reinforcement Learning(强化学习算法),边更新这个系列.课程包含视频和文字,课堂笔记会按视频为单位 ...

  3. avalon1.0正式发布

    2013年最后的收成:avalon1.0正式发布 大半年前我就说过,MVVM是前端究极的解决方案,因此之后我大多数时间都在折腾avalon,成立了专门的QQ群与感兴趣的一起讨论.感谢第一批吃螃蟹的人, ...

  4. 2013年最后的收成:avalon1.0正式发布

    大半年前我就说过,MVVM是前端究极的解决方案,因此之后我大多数时间都在折腾avalon,成立了专门的QQ群与感兴趣的一起讨论.感谢第一批吃螃蟹的人,avalon发展得很快,GITHUB上的贡献人数达 ...

  5. bzoj3674 可持久化并查集

    我是萌萌的任意门 可持久化并查集的模板题-- 做法好像很多,可以标号法,可以森林法. 本来有O(mloglogn)的神算法(按秩合并+倍增),然而我这种鶸渣就只会写O(mlog2n)的民科算法--再加 ...

  6. 关于过拟合、局部最小值、以及Poor Generalization的思考

    Poor Generalization 这可能是实际中遇到的最多问题. 比如FC网络为什么效果比CNN差那么多啊,是不是陷入局部最小值啊?是不是过拟合啊?是不是欠拟合啊? 在操场跑步的时候,又从SVM ...

  7. Rethink your own

    0 声明 文中显式或隐式指出是摘抄的部分,仅代表原作者的观点. 该随笔的动机源自胡适先生的一句话的前半部分: 1 知识以及建立知识的过程有强弱.高大上土肥圆之分吗? 文章摘自传说中的1024:[真人轉 ...

  8. 一些对数学领域及数学研究的个人看法(转载自博士论坛wcboy)

    转自:http://www.math.org.cn/forum.php?mod=viewthread&tid=14819&extra=&page=1 原作者: wcboy 现在 ...

  9. [转]学术型 github 畅想

    转自 http://wulfric.me/2013/09/github-and-academy/ 以 github 的精神提供学术服务,也许是一个不错的方向. 什么是 github? Github 是 ...

随机推荐

  1. vuex----------state的基础用法

    先使用vue cli构建一个自己的vue项目 1.npm i -g vue-cli 2.vue init webpack sell (sell是你的项目名) 3.一路回车(在这个过程中会提示你是否安装 ...

  2. java属性的默认值

    String 默认null Boolean默认false int默认0 double默认0.0 类中使用自定义类定义属性默认值:null 在定义属性的时候可以指定默认值

  3. JavaScript保留关键字(全)

    JavaScript 标准 所有的现代浏览器已经完全支持 ES5(ECMAScript 5). JavaScript 保留关键字(keyword) Javascript 的保留关键字(标识符)不可以用 ...

  4. getContextPath和getRealPath的区别-----其实主要区别就是相对路径和绝对路径

    getContextPath和getRealPath的区别 其实主要区别就是相对路径和绝对路径 https://blog.csdn.net/zsmj_2011/article/details/4121 ...

  5. CodeForcesGym 100753E Change of Scenery

    Change of Scenery Time Limit: 10000ms Memory Limit: 262144KB This problem will be judged on CodeForc ...

  6. 最长上升子序列的回溯 ZOJ 2432

    题目大意: 找一组最长上升公共子序列,并把任意一组满足的情况输出出来 最长公共上升子序列不清楚可以先看这篇文章 http://www.cnblogs.com/CSU3901130321/p/41826 ...

  7. 用信号量及其PV操作处理实际问题

    43.现有3个生产者P1.P2.P3,他们都要生产橘子汁,每个生产者都已分别购得两种不同的原料,待购齐第三种原料后就可配制成橘子汁装瓶出售.有一供应商能源源不断的供应糖.水.橘子精,但每次只拿出一种原 ...

  8. xtrabackup 恢复单表步骤

    1.apply-log应用redo日志,并导出表的数据字典innobackupex --apply-log --export  备份集 2.建表 如果知道表结构,则重建删除的表 create tabl ...

  9. Effective C++ Item 44 将与參数无关的代码抽离 templates

    本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 经验:Templates 生成多个 classes 和多个函数,所以不论什么 templat ...

  10. iOS开发之剖析"秘密"App内容页面效果(一)

    近期在玩"秘密",发现点击主界面的Cell进去后的页面效果不错,就写了个Demo来演示下. 它主要效果:下拉头部视图放大,上拉视图模糊并且到一定位置固定不动,其它Cell能够继续上 ...