跳跃表 Skip List

本文探讨了Skip List的基本概念及其实现方式,包括插入、查找和删除操作,并将其与红黑树等数据结构进行了对比。

最近在学习redis,这时才知道了skip list,结合Mit 算法导论 lecture 12,在奋斗了2个早上的时间后有了下面的东东。

对于我们熟悉的binary search来说,我们需要能够做到random access才行。但是在普通的link这种数据结构中却不能做到。而这种情况下我们有很多类似的工具比如heap,tree,b tree,red-black tree。等等类似的都是来自AVL的变种。但是说实话,这些东东,的确是挺难实现的,需要做各种的旋转啊,调整啊,来保持平衡。特别是red-black tree。而这时的skip list 就为我们提供了一个很好的思路。

introduction

让我们先从简单的开始

image

如果最下面的数字是已经排序好的数列,我们想要快速查找其中一项,而不是简单的便利。我们可以增加一个link,也就是上面的一条,来让我们能够“跳过”一些元素,也就是减少一些不必要的比较。

那么在2条时,我们的访问程度是多少呢?L2 + L1 / L2, 也就是第二条link的个数+ 每一个小端个数,这个是最差情况。显然,让这个不等式和最小,需要 L2 = L1 / L2。 显然L1是一个定值。这里设为N,那么,2条link下,我们的查找复杂度是 2 * √n

如何再优化呢?这个思路很简单,就是在L2上面再构建一个link L3. 整个时间也就是 L3 + L2 / L3 + L1 / L2 ,根据不等式性质,他们的和最小时,也就是 L3 = L2 / L3 = L1 / L2。当L1 = N时,他们的和时 3 * 立方根(N)

image

当第k层时, 我们的时间则是 k * k次方跟(N)

当k = lgN 时,我们的时间为 lgN * lg 次方跟(N),根据对数的换底公式,我们可以得出 时间是 2lgN. 哈,我们现在已经降到O(lgN).我们满足了。

这时我们可以想象一下,这个skip list的结构,其实就是一个binary tree。我们通过最上面的一层访问类似跟节点的情况,然后一层层link 相当于tree的孩子节点,整个比较过程和binary search 非常的相似。

insert

对于这些结构来说,搞定search不是难点,插入和删除则是最麻烦的东西。这里我们可以自己思考一下,为了保证我们的link的结构足够完美,可能需要记录没一段的个数,然后我们可能有一些节点要上几层或是下几层。但是这个其实,本质上和那些avl树又一样了。skip list则是基于一种随机的策略来决定这些节点。其实我们可以思考一下,最完美的分法就是和binary tree一样的,所以这种2倍数的关系就可以用抛硬币的方式来决定。

这里为了程序时间方便,我们创建一个无穷小的节点作为我们的其实节点,这样,我们所有的开始都是从最左边。

image

我们插入一个元素30,这时我们可以判断一下这个新的元素是否需要“升级”,这里我扔了一下,反面,不用升级了。

image

这里我们插入一个15,我扔了一下,反面。不用升级

image

这里我们插入一个20,我扔了一个正面,又扔了一个正面,额,好吧第三次终于是反面了。

image

这里涉及到了一点点的随机算法的证明,这些东西实在是让人烦躁。主要还是大学时候的概率学得就不咋地,现在也都忘了。从最直观的来看,就是一层层升级的概率会越来越低,在随机算法足够独立和大量的数目上来看,不难形成这样子的一个类似tree的结构。

delete

删除这里的操作简直就是blazingly simple,因为我们整个list layer 都是建立在随机上的,删除则是直接删除就好了

我在看到这里,基本已经受不了要吐槽了。实现这个也太简单了,相对red-black tree这种东西。

先看效果: https://renmaiwang.cn/s/jkhfz Hue系列产品将具备高度的个性化定制能力,并且借助内置红、蓝、绿三原色LED的灯泡,能够混合生成1600万种不同色彩的灯光。 整个操作流程完全由安装于iPhone上的应用程序进行管理。 这一创新举措为智能照明控制领域带来了新的启示,国内相关领域的从业者也积极投身于相关研究。 鉴于Hue产品采用WiFi无线连接方式,而国内WiFi网络尚未全面覆盖,本研究选择应用更为普及的蓝牙技术,通过手机蓝牙与单片机进行数据交互,进而产生可调节占空比的PWM信号,以此来控制LED驱动电路,实现LED的调光功能以及DIY调色方案。 本文重点阐述了一种基于手机蓝牙通信的LED灯设计方案,该方案受到飞利浦Hue智能灯泡的启发,但考虑到国内WiFi网络的覆盖限制,故而选用更为通用的蓝牙技术。 以下为相关技术细节的详尽介绍:1. **智能照明控制系统**:智能照明控制系统允许用户借助手机应用程序实现远程控制照明设备,提供个性化的调光及色彩调整功能。 飞利浦Hue作为行业领先者,通过红、蓝、绿三原色LED的混合,能够呈现1600万种颜色,实现了全面的定制化体验。 2. **蓝牙通信技术**:蓝牙技术是一种低成本、短距离的无线传输方案,工作于2.4GHz ISM频段,具备即插即用和强抗干扰能力。 蓝牙协议栈由硬件层和软件层构成,提供通用访问Profile、服务发现应用Profile以及串口Profiles等丰富功能,确保不同设备间的良好互操作性。 3. **脉冲宽度调制调光**:脉冲宽度调制(PWM)是一种高效能的调光方式,通过调节脉冲宽度来控制LED的亮度。 当PWM频率超过200Hz时,人眼无法察觉明显的闪烁现象。 占空比指的...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值