问题标签 [skip-lists]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1069 浏览

c - 如果不为空,则无锁队列入队

我已经使用基于http://www.boyet.com/articles/LockfreeQueue.html的比较和交换在 C 中实现了一个无锁队列。

它工作得很好,但我正在尝试将此队列集成到我已经实现的无锁跳过列表中。我将跳过列表用作优先级队列,并希望在发生优先级冲突时使用每个节点内的无锁队列来存储多个值。但是,由于当我检测到优先级冲突时在跳过列表中管理节点的方式,我需要能够仅当队列不为空时才能将项目添加到队列中。

由于队列的无锁特性,我不确定如何实际执行此操作。

所以基本上我将如何编写一个原子 enqueue_if_not_empty 操作?

0 投票
1 回答
2937 浏览

algorithm - 跳过列表的合并

如何在时间复杂度(最坏情况)中将 2 个给定Skip lists(每个都有 n 个键)合并为一个?Skip ListO(n)

只是寻找算法 - 没有特定的实现/语言。

0 投票
2 回答
3760 浏览

algorithm - 优先队列 - 跳过列表与斐波那契堆

我有兴趣实现一个优先级队列以启用一个也相对简单的高效 Astar 实现(我的意思是优先级队列很简单)。

似乎因为跳过列表提供了一个简单的 O(1) 提取最小操作和一个 O(Log N) 的插入操作,它可能与更难实现的具有 O(log N) 提取的斐波那契堆竞争 - Min 和 O(1) 插入。我认为 Skip-List 对于节点稀疏的图会更好,而斐波那契堆对于节点更密集的环境会更好。

这可能会使斐波那契堆通常更好,但我是否正确假设 Big-Oh 明智的这些将是相似的?

0 投票
7 回答
35170 浏览

java - java是否有跳过列表实现

ConcurrentSkipListSet在 Java Collection Framework 中找到,它由一个跳过列表备份。但是Java中有跳过列表吗?一套在我的用例中不起作用。我需要一个支持重复的可索引列表。

0 投票
2 回答
1396 浏览

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

ZADD的 redis文档指出该操作为 O(log N )。

但是,当插入的元素位于排序顺序的开头或结尾时,有谁知道 ZADD 是否比 O(log N ) 好?

例如,对于某些实现,这可能是 O(1)。

具体来说,redis教程指出:

排序集是通过包含跳过列表和哈希表的双端口数据结构实现的,因此每次添加元素时,Redis 都会执行 O(log( N )) 操作。

修改跳过列表以支持在开头和结尾插入O( k )似乎是合理的,其中k是跳过列表的最大级别。

0 投票
2 回答
206 浏览

c++ - 跳过列表错误有什么问题?

我有skiplist的实现,但它告诉我非常不清楚的错误

错误说包含不是skipset结构的功能,有些;未命中等,请查看错误列表

0 投票
1 回答
1233 浏览

concurrency - 具有等级操作的无锁跳过列表

是否有人知道任何支持排名操作(即找到第 k 个元素)的无锁跳过列表实现和/或研究论文?或者,有没有人知道为什么这样的操作永远行不通的根本原因?

奖励积分:

不假设垃圾收集的实施。根据我的经验,很多研究论文都忽略了内存管理。

支持:

有关如何在常规跳过列表中完成排名操作的描述:William Pugh 的“跳过列表食谱”

对于更好的无锁跳过列表描述之一:Keir Fraser 的“Practical lock-freedom”

更好的无锁跳过列表实现之一: http ://www.1024cores.net/home/parallel-computing/concurrent-skip-list

0 投票
3 回答
723 浏览

lock-free - 无锁双链跳过列表

有大量关于无锁双向链表的研究。同样,在无锁跳过列表上也有大量研究。然而,据我所知,没有人管理过无锁的双向链接跳过列表。有没有人知道任何相反的研究,或者是这种情况的原因?

编辑:特定场景是用于构建快速分位数(50%、75% 等)累加器。样本在 O(log n) 时间内被插入到跳过列表中。通过维护当前分位数的迭代器,我们可以在 O(1) 时间内将插入的值与当前分位数进行比较,并且可以轻松确定插入的值是在分位数的左侧还是右侧,以及分位数的多少结果需要移动。左移需要前一个指针。

据我了解,面对同时插入和删除的多个线程,任何困难都来自保持先前的指针一致。我想这个解决方案几乎肯定会巧妙地使用指针标记。

0 投票
1 回答
236 浏览

c++ - 需要有关跳过列表的信息

在这样的跳过列表中:

跳过列表

元素 4 是否可以访问第二个和第三个列表中的自身?我问的原因是因为我试图弄清楚如何为跳过列表实现删除操作。谢谢

0 投票
1 回答
1117 浏览

algorithm - 理想的跳过列表?O(n) 运行时间?

我正在尝试找到最佳算法

.

an 的定义ideal skip list是在第一级我们将拥有所有元素,在一半以上的级别,在四分之一之后的那个......等等。

我正在考虑O(n)运行时,其中涉及为原始链接列表中的每个节点投掷硬币,无论是否针对特定节点,我是否应该上去,并为楼上的当前节点创建另一个重复节点.. . 最终这个算法会产生 O(n) ,有没有更好的算法?

问候