算法導論筆記——第二十章 van Emde Boas樹


當關鍵字是有界范圍內的整數時,能夠規避Ω(lglgn)下界的限制,那么在類似的場景下,我們應弄清楚o(lgn)時間內是否可以完成優先隊列的每個操作。在本章中,我們將看到:van Emde Boas樹支持優先隊列操作及一些其他操作,每個操作最后情況運行時間為O(lglgn)。而這種數據結構限制關鍵字必須為0~n-1的整數且無重復

下面以n為元素個數,u為全域大小。

20.1 基本方法

直接尋址

即位圖bitmap方法。

insert,delete和member:復雜度O(1)

minimum,maximum,successor和predecessor最壞情況為O(u)

疊加的二叉樹結構

位向量的全部元素組成了二叉樹的葉子,並且每個內部結點為1當且僅當其子樹中任一個葉節點包含1。

 

由於樹的高度為lgu,每個操作至多沿樹進行一趟向上和一趟向下的過程,因此每個操作的最壞情況運行時間為O(lgn)。

疊加的一棵高度恆定的樹

疊加的樹度數為u1/2。每個操作中,最多對兩個大小為u1/2位的簇以及summary數組進行搜索,所以每個操作耗費O(u1/2)時間。(比二叉樹漸進差)

使用度為u1/2的樹是van Emde Boas樹的關鍵思想。

20.2 遞歸結構

在本節中,我們對位向量上度為u1/2的疊加樹想法進行修改。上一節中,用到了大小為u1/2的summary數組,數組的每項都指向一個大小為u1/2的另一個結構。現在使用結構遞歸,每次遞歸都已平方根大小縮減全域。(u,u1/2,u1/4,u1/8,...)

通過變量替換法,能夠得到遞歸式

T(n)=2T([u1/2])+lgn

的解為T(n)=O(lgnlglgn)。考慮一個相似但更簡單的遞歸式:

T(n)=2T(u1/2)+1

其解為T(n)=O(lglgn)。此遞歸式將指導數據結構上的查找。我們要設計一個遞歸的數據結構,該數據結構每層以u1/2為因子縮減規模。當一個操作遍歷這個數據結構時,在遞歸到下一層次前,其在每一層耗費常數時間。

20.2.1 原型van Emde Boas結構

有些操作達不到O(lglgn)。

MEMBER:O(lglgu)

MINIMUN:O(lgu)

SUCCESSOR:O(lgulglgu)

INSERT:O(lgu)

DELETE:添加一個屬性n來記錄其擁有的元素個數

20.3 van Emde Boas樹及其操作

全域限制放寬到2k,增加兩個屬性min和max,分別記錄vEB樹中的最小和最大元素。而且min不出現在在任何cluster中。

得到T(u)=O(lglgn)。

SUCCESSOR:

INSERT:

DELETE:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM