演算法導論14 2

2022-07-07 15:24:09 字數 1108 閱讀 8255

本小節介紹了擴充套件資料結構的抽象過程,同時證明了乙個定理;

選擇一種基礎資料結構

確定基礎資料結構中要維護的附加資訊

檢驗基礎資料結構上的基本修改操作能否維護附加資訊

設計一些新的操作來應用附加資訊

設\(f\)是\(n\)個節點的紅黑樹\(t\)擴張的屬性,且假設對任一節點\(x\),\(f\)的值僅依賴於節點\(x, x.left, x.right\)的資訊,可能包括\(x.left.f, x.right.f\)。那麼,我們可以在插入和刪除操作期間對\(t\)的所有節點的\(f\)值進行維護,並且不影響這兩個操作的\(o(\lg)\)漸近時間效能。

通過為節點增加指標的方式,試說明如何在擴充套件的順序統計樹上,支援每一動態集合查詢操作\(minimum,maxmum,successor,predecessor\)在最壞時間\(o(1)\)內完成。順序統計樹上的其他操作的漸近效能不應受影響。

minimum:用乙個指標指向樹中最小的元素。每次插入時與 minimum 比較檢測是否需要更改。若刪除 minimum,則指標指向它的後繼。旋轉不影響 minimum。

maximum:同 minimum。

predecessor、successor:給每個結點新增指向前驅和指向後繼的指標。

插入:時間複雜度仍為 \(o(\lg)\),插入 \(x\) 結點時,若 \(x ≠ maximum\),利用 \(o(\lg)\) 時間找到 \(x\) 的後繼 \(y\),找到 \(y\) 後,\(y\) 的前驅 \(w\) 則只需 \(o(1)\) 時間,在用 $o(1) $時間更新 \(w, x, y\) 的前驅、後繼。若\(x == maximum\),則利用 \(o(\lg)\) 時間找 \(x\) 的前驅,同理。

刪除:和插入類似。

旋轉不影響前驅、後繼的指標。

能否在不影響紅黑樹任何操作的漸進性能的前提下,將結點的黑高作為書中結點的乙個效能來維護?說明如何做,如果不能,請說明理由。如何維護結點的深度?

樹為空時,黑高為\(0\);

只有根節點時,黑高為\(1\);

在插入和刪除過程中,重新著色時,修改黑高;

演算法導論 14 2 Josephus排列

分類 演算法導論 2012 08 28 11 00 445人閱讀收藏 舉報題目 josephus問題的定義如下 假設n個人排成環形,且有以正整數m n。從某個制定的人開始,沿環報數,每遇到第m個人就讓其出列,且報數進行下去。這個過程一直進行到所有人都出列為止。每個人出列的次序定義了整數1,2,n的 ...

演算法導論14 2如何擴張資料結構 練習總結

14.2 1 通過為結點增加指標的方式,試說明如何在擴張的順序統計樹上,支援每一動態集合查詢操作 minimum maximum successor 和 predecessor 在最壞時間 o 1 內完成。順序統計樹上的其他操作的漸進性能不受影響。answer minimum 用乙個指標指向樹中最小...

演算法導論 隨機演算法

一.概率分布 對於有些問題本身是屬於概率問題,如僱傭問題 對於此類問題,我們需要利用概率分析來得到演算法的執行時間,有時也用來分析其他的量。例如,僱傭問題中的費用問題也需要結合概率分析來計算得到。為了使用概率分析,我們必須使用或者假設已知關於輸入的概率分布,然後通過分析該演算法計算出平均情況下的執行...