skip-lists相关内容

lucene 如何在倒排索引中使用跳过列表?

在一些博客和 lucene 网站中,我知道 lucene 在倒排索引中使用数据结构“跳过列表".但我对此有些疑惑. 1:一般情况下,跳过列表可能会在内存中使用,但倒排索引存储在磁盘中.那么 lucene 在索引搜索时是如何使用它的呢?只是在磁盘上扫描或加载到内存中? 2:skip list的插入操作符经常使用random(0,1)来决定是否插入到下一级,但是在luncene的介绍中,似 ..
发布时间:2022-01-15 12:54:18 其他开发

Redis:当插入的元素在开头或结尾时,ZADD 是否比 O(logN) 更好?

ZADD 的 redis 文档 声明操作是 O(log N). 但是,当插入的元素位于排序顺序的开头或结尾时,有人知道 ZADD 是否比 O(log N) 更好? 例如对于某些实现,这可能是 O(1). 具体来说,redis 教程 指出: 排序集是通过双端口数据结构实现的,其中包含一个跳过列表和一个哈希表,所以每次我们添加一个元素Redis 执行 O(log(N)) 操作. ..
发布时间:2021-12-28 09:45:31 其他开发

跳过列表与二叉搜索树

我最近遇到了称为跳过列表.它似乎与二叉搜索树具有非常相似的行为. 你为什么要在二叉搜索树上使用跳过列表? 解决方案 跳过列表更适合并发访问/修改.Herb Sutter 撰写了一篇关于并发环境中的数据结构的文章.它有更深入的信息. 二叉搜索树最常用的实现是红黑树.当树被修改时,并发问题就会出现,它通常需要重新平衡.重新平衡操作会影响树的大部分区域,这将需要对许多树节点进行互斥锁 ..

为什么Redis SortedSet使用“跳过列表"而不是“平衡树"?

Redis文档如下: ZSET是使用两个数据结构来保存相同元素的有序集合为了使O(log(N))INSERT和REMOVE操作成一个排序数据结构. 将元素添加到哈希表,该哈希表将Redis对象映射到分数.同时将元素添加到跳过列表将分数映射到Redis对象(因此,对象按分数排序此“视图"). 我不太了解.有人可以给我详细的解释吗? 解决方案 Antirez说,请参见http ..
发布时间:2021-04-29 18:50:07 其他开发

什么是压缩树,它如何工作?

我听说过一种新的平衡BST数据结构,称为 zip树.什么是邮编树?如何运作? 解决方案 从总体上讲,一棵zip树是 随机平衡二叉搜索树, 这是将跳过列表编码为BST的一种方式,并且 使用一对称为 zipping 和 unzipping 的操作,而不是树的旋转. 第一个要点-zip树是随机的,平衡的BST-使人感觉到zip树在较高水平上可以实现.这是一种平衡的二叉搜索树,与挖 ..
发布时间:2021-04-15 19:37:37 其他开发

递归功能保持运行并且不打印任何内容

长话短说,我应该编写一个插入,删除,搜索和打印跳过列表中数字的代码,其中第一个节点为负无​​穷大,而最后一个节点为正无穷大(-inf>(。 。)> inf)。我从插入函数调用了搜索函数,以找到一个插入任何新节点的位置(仅在插入第三个节点之后),并且在主函数之外而不是在主函数内初始化或引用了我的节点(尽管我正在辩论)我是否应该选择后者)。但是,我的功能之一可能会陷入循环。 静态节点搜索(dou ..
发布时间:2020-10-26 00:25:28 Java开发

Redis:当插入的元素位于开头或结尾时,ZADD是否优于O(logN)?

ZADD的redis 文档表示操作为O(log N ). 但是,当插入的元素位于排序顺序的开头或结尾时,有人知道ZADD是否比O(log N )好吗? 例如对于某些实现,可能是O(1). 具体来说,redis 教程指出: 排序集是通过包含以下内容的双端口数据结构实现的: 跳过列表和哈希表,因此每次我们添加一个元素 Redis执行O(log( N ))操作. 似乎可以修 ..
发布时间:2020-07-08 18:34:20 其他开发

lucene如何在倒排索引中使用跳过列表?

在一些博客和lucene网站上,我知道lucene使用倒排索引中的数据结构“跳过列表".但是我对此有些疑惑. 1:通常,跳过列表可能在内存中使用,但倒排索引存储在磁盘中.那么,在索引上进行搜索时,lucene如何使用它?只是在磁盘上扫描它或将其加载到内存中? 2:跳过列表的插入运算符通常使用random(0,1)来决定是否插入下一个级别,但是在伦琴演奏中,似乎每个术语的间隔都是固定的, ..
发布时间:2020-05-04 07:29:15 其他开发

跳过列表与二进制搜索树

我最近遇到了称为 跳过列表 .它的行为似乎与二叉搜索树非常相似. 您为什么要在二进制搜索树上使用跳过列表? 解决方案 跳过列表更适合并发访问/修改. Herb Sutter撰写了关于并发环境中数据结构的文章.它具有更深入的信息. 二进制搜索树最常用的实现是红黑树 .修改树时,经常会出现并发问题,因此通常需要重新平衡.重新平衡操作可能会影响树的大部分,这将需要在许多树节点上使用互 ..

java是否有跳过列表实现

我找到 Java Collection Framework中的ConcurrentSkipListSet ,它使用跳过列表进行备份。但Java中是否有跳过列表?一套在我的用例中不起作用。我需要一个支持重复的可索引列表。 解决方案 因为你已经提到了一个可以索引的List(我假设你想要的)快速检索)并且需要允许重复,我建议你去找一个带有LinkedList或ArrayList的自定义Set。 ..
发布时间:2018-12-27 19:52:58 Java开发

跳过列表的预期空间消耗

插入n个元素后跳过列表使用的预期空间是什么? 我预计在最坏的情况下,空间消耗可能会无限增长。 维基百科说“Space O 如何以这种方式证明? 解决方案 根据本论文,其中维基百科更可靠,维基百科错误。概率跳过列表是 Theta(nlogn)最坏情况的空间复杂度。 尽管事实上,平均来说,PSL表现相当不错,在最坏的情况下,它的Theta(n lg n)空间和Theta ..
发布时间:2017-04-03 14:35:00 其他开发

跳过列表,他们真的表现与Pugh纸索赔一样好吗?

我正在尝试使用最少额外的内存开销来实现与BST一样好的跳过列表,此刻即使不考虑任何内存限制,我的SkipList实现的性能远远不是一个非常幼稚的平衡BST实现 - 也就是说,手工制作的BTS :) - 作为参考,我使用的是William Pugh的原始论文 PUG89 和我在Sedgewick -13.5-中的C中的算法中找到的实现。我的代码是一个递归的实现,这里是插入和查找操作的线索: ..
发布时间:2017-04-03 13:42:10 C/C++开发

跳过列表 - 曾经使用过他们?

我想知道有人是否曾经使用跳过列表。它看起来具有与平衡二叉树大致相同的优点,但是更容易实现。如果你有,你是否编写自己的,或者使用预先写的图书馆(如果是的话,它的名字是什么)? 解决方案几年前,我实现了自己的概率算法类。我不知道任何库实现,但是已经很久了。实现起来很简单我记得他们对大数据集有一些非常好的属性,并避免了一些重新平衡的问题。我认为实现也比二次尝试更简单。这里有一个很好的讨论和一些示例 ..
发布时间:2017-04-03 13:04:06 其他开发

跳过列表与二进制树

我最近遇到了被称为跳过列表的数据结构。他们似乎与二叉搜索树有非常相似的行为...我的问题是 - 你为什么要在二叉搜索树上使用跳过列表? 解决方案 跳过列表更适合并发访问/修改。 Herb Sutter在并发环境中撰写了有关数据结构的文章。它有更多的深入信息。 二进制搜索树中最常用的实现是一个红黑树。当树被修改时,并发问题就会出现,它往往需要重新平衡。重新平衡操作可以影响树的大部分,这 ..

无锁式滑雪者

有人知道任何无锁的滑雪者运动和/或研究论文支持排名操作(即找到第k个元素)?或者,任何人都知道为什么这样的操作永远不能工作? 奖励积分: 不假定垃圾收集的一个实现。这是我的经验相当一些研究论文忽略内存管理。 支持: 有关如何在常规skiplist中执行排名操作的说明:William Pugh的“A Skip List Cookbook” 免费滑雪者描述:Keir Fr ..
发布时间:2016-12-26 19:56:02 其他开发

跳过列表,他们真的表现好比Pugh纸索赔吗?

我试图实现一个跳过列表,执行与BST使用最小额外的内存开销一样好,目前,即使不考虑任何内存限制,我的跳过列表实现的性能是远离甚至非常朴素的平衡BST实现 - 也就是说,手工制作的BTS :) - 作为参考,我使用的原始论文从William Pugh PUG89 和执行我在Sedgewick -13.5-的C中的算法。我的代码是一个递归实现,这里是插入和查找操作的线索: sl_node ..
发布时间:2016-10-23 11:18:43 C/C++开发

SkipList< T> VS字典< TKEY的,TValue>

我最近一直念叨跳表。 我有执行防静电的数据集相当复杂的SQL查询的Web应用程序。 我想实现一个缓存系统,使我产生SQL查询的MD5哈希值,然后返回缓存的数据集查询,如果它存在于集合中。 哪些算法会更好,字典或SkipList?为什么呢? 的 http://msdn.microsoft.com/en-us/library/ms379573%28VS.80%29.aspx#d ..
发布时间:2016-09-26 21:51:41 C#/.NET

如何实现无锁跳跃列表

我需要实现一个无锁跳跃列表。我试图寻找论文。不幸的是我所发现的是无锁单链表(许多种)。但是如何实现无锁跳跃列表? 解决方案 无锁的跳跃列表在书中有相关的讨论,在做题链接到文学和实现(不一定是无锁)的跳转列表与二叉树和跳转列表 - 使用过他们”? / A>。 ..
发布时间:2015-11-30 15:50:59 C/C++