From 1f306b8809b322d118e6895c657e0582cb3e4bc1 Mon Sep 17 00:00:00 2001 From: Shine wOng <1551885@tongji.edu.cn> Date: Sun, 29 Sep 2019 20:41:20 +0800 Subject: [PATCH] commit conclusion on skiplist --- thu_dsa/chp9/skiplist.md | 186 ++++++++++++++++++++++++++++++++++++++ thu_dsa/chp9/skiplist.png | Bin 0 -> 53475 bytes 2 files changed, 186 insertions(+) create mode 100644 thu_dsa/chp9/skiplist.md create mode 100644 thu_dsa/chp9/skiplist.png diff --git a/thu_dsa/chp9/skiplist.md b/thu_dsa/chp9/skiplist.md new file mode 100644 index 0000000..771897d --- /dev/null +++ b/thu_dsa/chp9/skiplist.md @@ -0,0 +1,186 @@ +跳转表知识总结 +============ + +## 跳转表的基本概念 + +跳转表是一个基于列表`list`的数据结构,从结构上来说,它是由多个列表组成的。各个列表在纵向形成多层,其中第一层(最底层)拥有跳转表中的所有数据节点,以上各层列表中的数据都是其底层列表的一个子集,特别地,最顶层的列表不包含任何数据,仅含有两个头尾哨兵。跳转表的结构如图所示: + +![skiplist_structure](skiplist.png) + +用地铁站对跳转表打一个比方,设想有一个城市的地铁分为多层,其中最底层的地铁要经过该城市的所有站台;所有这些站台中,有一些人流量很密集的站台,为它们在上一层设立一条新的地铁线路,因为该线路只经过这些大站台,因此运行速度可以更快。当人们乘坐地铁的时候,为了到了某一个小站台,最快捷的方案显然是先做大站车到距离小站台最近的大站台,当然在乘坐最底层的慢车到达某个小站。跳转表就是这样一种思路,通过在上层列表节点间的快速跳转,来迅速查找到某个数据。 + +从上面的图中也可以看到,跳转表的结构就类似于一棵搜索树,上层列表对应了搜索树中高度较高的节点,而底层列表对应了搜索树中的叶节点。实际上,根据跳转表发明者的定义,跳转表是基于概率实现的对平衡二叉树的一种替代方案,它使用概率来实现平衡,而非强制的平衡,因而对于插入和删除节点比传统平衡树更为高效。 + +## 跳转表的结构 + +从宏观上来看,跳转表是由多层的列表组成的,为了实现不同层之间列表的跳转,列表中的每个节点除了要有前向后向指针以外,还需要同时具有上下的指针,来表示不同层次地铁的“换乘路径”。为此,需要修改`list`的实现中关于`ListNode`的定义,为其增加上下的指针,即形成下面的`QuadNode`类型: + +```cpp +template +class QuadNode{ +public: + T entry; + QuadNodePosi(T) prev; + QuadNodePosi(T) next; + QuadNodePosi(T) above; + QuadNodePosi(T) below; + + QuadNode() = default; + QuadNode(T entry) :entry(entry) {} +}; +``` + +基于`QuadNode`可以实现四联表`QuadList`类型,使用`QuadList`来作为跳转表的底层列表: + +```cpp +#define QuadNodePosi(T) QuadNode* + +template +class QuadList{ +private: + QuadNodePosi(T) __head; + QuadNodePosi(T) __tail; + int __size; + +public: + ...... +``` + +需要指出,每一层的列表都要是有序的,这就仿佛你在坐地铁的时候,对于任意站台,需要知道它的前一站是什么、后一站是什么,这样你才可以规划路线,并且决定在哪里下车。否则,地铁就是在各个站台之间随机运行,也就不存在我们上面所说的先坐大站车再坐小站车的策略了。为了简化操作,在初始化时应该首位哨兵的值分别为`MIN`和`MAX`,如下所示: + +```cpp +#define MAXINT (int)(0x7fffffff) +#define MININT (int)(0x80000000) +``` + +跳转表的多层次结构是通过`生长概率逐层减半`来实现的,具体说来,就是说在第`k`层出现的元素,在第`k + 1`层也出现的概率为`p = 1 / 2`。这样,如果最底层的节点数量为`n`,则它的上一层的期望节点数量就是`n / 2`,再上一层就是`n / 4`,`n / 8, ......, 2, 1`,从结构上就非常类似一棵二叉树了。并且可以看出,跳转表的期望总节点数量为 + +``` +n + n / 2 + n / 4 + ...... + 2 + 1 < 2n = O(n) +``` + +可见,跳转表的空间复杂度并没有因为层次的原因而得到显著增长。 + +## 跳转表的实现 + +跳转表的基本操作主要有三个,即搜索,插入和删除。以下就讨论如何实现这三个基本操作。 + +### 跳转表的搜索算法 + +实际上,在上面地铁那里已经叙述过跳转表的搜索算法了,即首先坐上层的大战车快速到达距离小站最近的位置,然后换乘底层的小站车。用算法的语言描述,即自上而下,自左而右地搜索,对于每一层的列表,从左至右遍历它的每一个元素,直到发现第一个大于搜索值`key`的元素,然后后退一步,如果当前节点的`key`值等于搜索值,则成功返回,否则表示应该在这里下车换乘了。如果当前列表还不是最底层,则切换到下一层的列表,并且重复上面的操作,直到查找成功,或者因为不存在该`key`值而查找失败。 +这里的搜索算法将基于遵循前面列表的约定,即总是返回不大于`key`值节点中的最靠右者。跳转表的搜索算法实现如下: + +```cpp +template +QuadNode>* SkipList::skipSearch(K key) { + QuadNode>* qnode = last()->val->first(); //the first quadlist node of the last quadlist + while (1) { + while (qnode->entry.key < key) qnode = qnode->next; + if (qnode->entry.key == key) return qnode; + //else + qnode = qnode->prev; + if (qnode->below == nullptr) return qnode; + //else + qnode = qnode->below; + } +} +``` + +跳转表的搜索算法仅需要`O(logn)`的时间复杂度,对该结论可以定性地来理解。由于`生长概率逐层减半`,跳转表的期望层数只有`h = logn`,所以搜索算法中至多进行`O(logn)`次层间跳转;类比于二叉树,每进行一次层间跳转,就相当于排除了最底层一半的节点,因此搜索过程中,横向跳转次数的期望就等于跳转表的层数`O(h)`,所以所有的层间跳转和横向跳转至多进行`O(h) = O(logn)`次,每次跳转都只需要常数的时间,即整体的时间复杂度为`O(logn)`。 + +下面可以严格地证明横向跳转的次数的期望等于跳转表的层数`O(h)`。 + +考虑搜索过程的逆过程,即从底层列表向右向上移动,该移动过程可以描述为:在某一层不断向右移动,直到发现了第一个向上生长的节点,或者直到到达第一个可以换乘的大站。设某一层横向移动的次数为`K`,有 + +$$ +P(K = 0) = p\\ +P(K = 1) = (1 - p)p\\ +...\\ +P(K = k) = (1 - p)^{k - 1}p, k = 1, 2, ... +$$ + +即随机变量`K`服从几何分布,其期望`EK = 1`,即在每一层的期望移动次数仅为`1`,这样一次搜索过程中的横向跳转次数不超过`h`。故得证。 + +基于搜索算法,可以快捷地实现跳转表的插入和删除算法。 + +## 跳转表的插入算法 + +为了将一个新的词条插入到跳转表中,首先需要调用一次搜索算法来找到正确的插入位置,得益于搜索算法的语义,如果的确查找到了要新插入的关键码,则返回的位置必然是相同关键码的词条中最左侧的一个,应该将新的词条插入到它的左侧;如果没有找到新的关键码,则返回的是不大于该关键码词条中最右侧的一个,此时应该将新的词条插入到它的右侧。 + +在定位了插入位置后,为了将新的词条插入,首先需要将插入位置指针强制转移到底层,从最底层开始插入,完成实质性的插入操作只需要修改前后词条的指针即可。此后,还需要保证`生长概率逐层减半`,可以通过一个随机数来实现,如果生成的随机数是奇数(或偶数),则继续在上一层插入,这个过程不断重复,直到生成的随机数表示不继续插入。 + +为了将新的词条在上一层插入,需要找到该词条在上一层的前驱后者后继节点。一种策略是遍历上一层的全部节点,直到找到新词条的前驱或者后继,其时间复杂度为`O(n)`,毋庸置疑,这种策略的开销太高了。为了快速地找到新词条的后继,可以沿用搜索过程中的跳转策略,具体说来就是在当前层次继续向后遍历,直到发现第一个向上生长的节点,在这里向上层跳转,就是新词条的后继节点了。在前面也已经证明过了,这种遍历进行次数的期望仅为`O(1)`,因此插入的时间复杂度,主要是消耗在了`search`过程中,其总体的时间复杂度也是`O(logn)`。插入过程的具体代码如下: + +```cpp +template +bool SkipList::put(K key, V value){ + QuadNode>* qnode = skipSearch(key); + QuadNode>* belowNode; + ListNode>*> *qlist = first(); + QuadList> *newlist; + + while (qnode->below != nullptr) qnode = qnode->below; + if (qnode->entry.key != key) qnode = qnode->next; + qlist->val->insert_before_above(qnode, entry(key, value)); + if (next(qlist) == nullptr) { + newlist = new QuadList>(); + newlist->sethead(entry(MININT, 0)); + newlist->settail(entry(MAXINT, 0)); + newlist->connectTo(qlist->val); + push_back(newlist); + } + + while(rand() % 2 == 0){ + belowNode = qnode->prev; + qlist = next(qlist); + while (qnode->above == nullptr) qnode = qnode->next; + qnode = qnode->above; + qlist->val->insert_before_above(qnode, entry(key, value), belowNode); + if (next(qlist) == nullptr) { + newlist = new QuadList>(); + newlist->sethead(entry(MININT, 0)); + newlist->settail(entry(MAXINT, 0)); + newlist->connectTo(qlist->val); + push_back(newlist); + } + } + return true; +} +``` + +需要注意的是,在插入过程中,如果在最顶层的列表中进行了插入,则需要新创建一个为空的顶层列表,实际上,这也是跳转表层次增长的唯一原因。 + +## 跳转表的删除算法 + +跳转表的删除策略基本是类似插入的策略的,而且还要更加简单,因为不需要寻找被删除词条的前驱或者后继节点。具体的算法是,首先调用一次`search`对被删除的词条进行定位,随后即可自上而下依次对各层次中的该词条进行删除,由于这种删除至多会进行`h`次,因此删除操作的时间复杂度也仍然是`O(h) = O(logn)`。删除操作的具体代码如下: + +```cpp +template +bool SkipList::remove(K key){ + QuadNode>* qnode = skipSearch(key); + QuadNode>* tempNode; + ListNode>*>* qlist = first(); + if (qnode->entry.key != key) return false; + //else + while (qnode->below) qnode = qnode->below; + + while(qnode){ + tempNode = qnode; + qlist->val->remove(qnode); + qnode = qnode->above; + qlist = next(qlist); + delete tempNode; + } + + //remove level if empty + qlist = prev(last()); + while(qlist && qlist->val->empty()){ + pop_back(); + qlist = prev(qlist); + } + + return true; +} +``` + +需要注意的是,删除操作中也涉及到某一层次列表的删除。即在一次删除操作以后,如果该层次列表为空,则应该对该层次的列表进行删除。这也是跳转表层次降低的唯一原因。 diff --git a/thu_dsa/chp9/skiplist.png b/thu_dsa/chp9/skiplist.png new file mode 100644 index 0000000000000000000000000000000000000000..c1c29a93653c0ec5d60b38e5a9a76ec0b10da0d4 GIT binary patch literal 53475 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