11.擴充的數(shù)據結構逻炊、動態(tài)有序統(tǒng)計和區(qū)間樹

Augmenting data structures

Dynamic order statistics

OS-Select(i) - returns ith smallest item in dynamic set
OS-Rank(x) - returns rank of x in sorted order
Idea: Keep subtree sizes in nodes of a red-black tree

OS-Select(x, i) // ith smallest in subtree rooted at x
    k ← size[left[x]] + 1  // k = rank(x)
    if i = k then return x
    if i < k then return OS-Select(left[x], i)
    else return OS-Select(right[x], i-k)

Analysis: O(lg n)

OS-Rank in CLRS

OS-Rank(T, x)     // rank of x in the tree T
    r = x.left.size + 1
    y = x
    while y ≠ T.root
        if y == y.p.right
            r = r + y.p.left.size + 1
        y = y.p
    return r

Q: Why not keep ranks in nodes instead of subtre suzes?
A: Hard to maintain when r-b tree is modified.

Modifying operations: Insert, delete

Strategy: Update subtree sizes when inserting or deleting
Ex: 像一個紅黑樹insert的時候却紧,不但要重新算size,還要handle rebalancing. recoloring 不影響size嫂冻。rotation 最多只發(fā)生兩次葵萎,而且只有少量node的size要改變导犹。

Data-Structure augmentation

Methodology (Ex OS trees)
  1. Choose underlying data structure (red-black tree)
  2. Determine additional information (subtree size)
  3. Verity info can be maintained for the modifying operations(Insert, Delete, rotations)
  4. Develop new operations that use info (DS-Select, OS-Rank)

Usually, mush plays with interactions between steps.

Example: Interval trees

Maintain a set of intervals
e.g. time intervals


time intervals with query operation
Methodology
  1. red-black tree keyed on the low endpoint (我覺得,同時存了high endpoint)
  2. Store in the node the largest value m in the subtree rooted at that node
  3. Modifying ops
    Insert: Fix m's on way down
    But, also need to handle rotations (takes O(1) time)
    Insert time = O(lg n)
    Delete similar (書上有但是今晚要自己先想一想)
  4. New opertations
Interval-Search(i)  //Find an interval that overlaps i
    x ← root
    while x ≠ nil and (low[i] > high[int[x]] or low [int[x]] > high[i])     //int[x] = the interval of x
    do // i and int[x] don't overlap
        if left[x] ≠ nil and low [i] ≤ m[left[x]]
            then x ← left[x]
        else x ← right[x]
    return x

List all overlaps: O(k*lg n) "output sensitive" 方法是每找到一個就把它刪掉
Best to date = O(k + lg n) 在另一種數(shù)據結構中能實現(xiàn)
k 是overlaps的數(shù)量

Correctness
Thearem

Let L = {i' \in left[x]}, R = {i' \in right[x]}

  • If search goes right then {i' \in L: i's overlaps i} = ?
  • If search goes left, then:
    {i' \in L: i' overlaps i} = ?
    \Rightarrow {i' \in R: i' overlaps i} = ?
Proof

Suppose search goes right

  • If left[x] = nil, done since L = ?
  • Otherwise, low[i] > m[left[x]]

Suppose search goes left and {i' \in L : i' overlaps i} = ?
Then, low[i] \leq m[left[x]] = high[j] for some j \in L
Since j \in L, j doesn't overlap i \Rightarrow high[i] < low[j]

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末羡忘,一起剝皮案震驚了整個濱河市谎痢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凉蜂,死亡現(xiàn)場離奇詭異快骗,居然都是意外死亡诡渴,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人太雨,你說我怎么就攤上這事】猓” “怎么了囊扳?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵吩翻,是天一觀的道長。 經常有香客問我锥咸,道長狭瞎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任搏予,我火速辦了婚禮熊锭,結果婚禮上,老公的妹妹穿的比我還像新娘雪侥。我一直安慰自己碗殷,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布校镐。 她就那樣靜靜地躺著,像睡著了一般捺典。 火紅的嫁衣襯著肌膚如雪鸟廓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天襟己,我揣著相機與錄音引谜,去河邊找鬼。 笑死擎浴,一個胖子當著我的面吹牛员咽,可吹牛的內容都是我干的。 我是一名探鬼主播贮预,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼贝室,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了仿吞?” 一聲冷哼從身側響起滑频,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎唤冈,沒想到半個月后峡迷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡你虹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年绘搞,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片傅物。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡夯辖,死狀恐怖,靈堂內的尸體忽然破棺而出董饰,到底是詐尸還是另有隱情楼雹,我是刑警寧澤模孩,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站贮缅,受9級特大地震影響榨咐,放射性物質發(fā)生泄漏。R本人自食惡果不足惜谴供,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一块茁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧桂肌,春花似錦数焊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谭跨,卻和暖如春干厚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背螃宙。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工蛮瞄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谆扎。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓挂捅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親堂湖。 傳聞我的和親對象是個殘疾皇子闲先,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容

  • 在中國的大城市騎車并不是一件時髦體面的事饵蒂。大多數(shù)民眾騎車不是發(fā)自內心,價格低廉是最大的原因酱讶。如果理智一點退盯,抱著環(huán)保...
    HugoYe閱讀 545評論 0 2
  • 今天我有重新看了一下如何培養(yǎng)正確的剛需,這篇文章讓我照到我自己的鏡子泻肯,我就是那種表現(xiàn)型的人格渊迁,讓我想起我以前的種種...
    唯鳴日記閱讀 197評論 0 0
  • 玉蘭~南方早春重要的觀花樹木,為美化庭院之理想花型
    幻陌塵煙閱讀 164評論 0 1
  • 我有很多夢 在暖和的被窩里形成 暖呼呼的它們 從不在乎什么名利啊,寵愛啊稚铣,包括過程 只是發(fā)生 然后醒悟在起身 我也...
    病病念執(zhí)閱讀 223評論 3 3
  • 歐文阿箱叁, 特別傾情墅垮, 全情投入在講, 他耕漱, 他心目中的婚姻是什麼樣的算色。 他心目中的丈夫應該是什麼樣的。 我們來看一...
    演維閱讀 403評論 0 1