Microsoft PowerPoint - lecture14.pptx

Similar documents
Hashing


演算法導入、ソート、データ構造、ハッシュ

Microsoft Word htm


不 知 肉 味 的 用 法 相 同? (A) 長 煙 一 空, 皓 月 千 里 (B) 五 臟 六 腑 裡, 像 熨 斗 熨 過, 無 一 處 不 伏 貼 (C) 兩 片 頑 鐵, 到 他 手 裡, 便 有 了 五 音 十 二 律 似 的 (D) 吾 觀 三 代 以 下, 世 衰 道 微 12. 文


ACI pdf

PowerPoint 簡報

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1


Microsoft PowerPoint - STU_EC_Ch08.ppt

Microsoft Word htm

Microsoft PowerPoint - Model Checking a Lazy Concurrent List-Based Set Algorithm.ppt [Compatibility Mode]

Microsoft Word - 专论综述1.doc

月光迴旋曲

大 綱 最 有 利 標 目 的 及 類 型 最 有 利 標 之 辦 理 方 式 準 用 最 有 利 標 取 最 有 利 標 精 神 最 有 利 標 之 類 型 及 其 相 關 規 定 適 用 最 有 利 標 準 用 最 有 利 標 及 取 最 有 利 標 精 神 作 業 程 序 及 實 務 分 析

穨control.PDF

Agenda 大 纲 FIFO data-structures 先 进 先 出 ( FIFO) 数 据 结 构 (= First In First Out) Heap data-structures 堆 结 构 Non-static methods 非 静 态 方 法 (= object metho

Microsoft Word - 澎湖田調報告-宏達組9804.doc

平 凡 足 迹 李 本 川 作 者 为 中 国 科 学 院 海 洋 研 究 所 研 究 员,1935 年 生, 山 东 荣 成 人 我 今 年 63 岁 了 大 前 年 丈 夫 和 儿 子 在 一 个 月 内 先 后 离 开 了 人 世, 女 儿 又 已 出 嫁, 现 在 是 孑 然 一 身 我 是

今天 年春季号 总 92 期

*

( ) / / / / / / /

(Microsoft Word - 8\244T\244\362\277\337\272]\244W\265L\246W.doc)

Microsoft Word - 專家本色 doc

但, 你 应 该 听 过 我 们 走 在 大 路 上 这 首 歌, 或 许 还 知 道 革 命 人 永 远 是 年 轻 那 支 歌 ; 并 且, 几 乎 可 以 肯 定, 你 在 戴 红 领 巾 的 那 阵, 必 然 唱 过 牛 儿 还 在 山 坡 吃 草, 放 牛 的 却 不 知 道 哪 儿 去

2 临 终 助 念 答 问 序 临 终 关 怀, 由 佛 门 净 宗 古 来 祖 师 大 德 提 倡 助 念 往 生, 现 今 已 渐 为 社 会 大 众 所 重 视, 在 台 湾, 台 大 长 庚 等 各 大 医 院, 也 都 设 有 助 念 室 ; 大 陆 上 许 多 道 场, 也 有 专 为

校园之星

<4D F736F F F696E74202D FA8BEA861B8EAB7BDBEE3A658BB50C0B3A5CE28B773A6CBA5AB29>

之 原 則 及 國 防 部 訂 頒 國 軍 列 管 國 有 不 動 產 提 供 非 軍 方 單 位 使 用 處 理 原 則 規 定 不 符, 仍 應 以 出 租 方 式 辦 理 惟 可 就 偏 遠 地 區 提 供 官 兵 金 融 水 電 服 務 使 用 部 分, 研 議 降 低 租 金 標 準, 報

釋禪波羅蜜次第法門

1700 装 卸 搬 运 7645 装 卸 搬 运 服 务 2100 建 筑 7410 工 程 服 务 11% 装 卸 搬 运 服 务, 是 指 使 用 装 卸 搬 运 工 具 或 者 人 力 畜 力 将 货 物 在 运 输 工 具 之 间 装 卸 现 场 之 间 或 者 运 输 工 具 与 装 卸

《盗墓笔记》 南派三叔/著


特 别 提 示 一 依 据 中 华 人 们 共 和 国 证 券 法 ( 以 下 简 称 证 券 法 ) 上 市 公 司 收 购 管 理 办 法 ( 以 下 简 称 收 购 办 法 ) 公 开 发 行 证 券 的 公 司 信 息 披 露 内 容 与 格 式 准 则 第 15 号 权 益 变 动 报 告

HK 08/ HK 09/ HK 03/ HK 01/ HK 05/ HK 05/ HK 05/

HK 05/ HK 08/ HK 11/ HK 03/ HK 09/ HK 03/ HK 09/

HK 11/ HK 01/ HK 07/ HK 07/ HK 08/ HK 03/ HK 11/

Open topic Bellman-Ford算法与负环

C-062.docx

校园之星

上海浦~1

Two Mergeable Data Structures

Microsoft Word - 第三章第一節第二節.doc

untitled


深入理解otter

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

Microsoft PowerPoint - lecture15.pptx

Chapter 1 Introduction

<4D F736F F D20B3E6A4B830312D2D2DBCC6BD75BB50BEE3BCC6AABAA55BB4EEB942BAE22E646F6378>

Microsoft Word - ACL chapter02-5ed.docx

CC213

01

Linked Lists

epub

ebook70-5


实 习 上 下 点 表 格 解 释 和 相 关 纪 律 要 求 : 1 表 格 中 所 有 名 词 都 为 简 称, 包 括 医 院 名 称 四 年 级 五 年 级 各 专 业 名 称 等 所 有 时 间 都 为 学 生 装 好 行 李 出 发 时 间, 请 提 前 0 分 钟 将 行 李 运 到

简报158期.doc

2016 年 地 质 工 程 系 教 学 工 作 安 排 2016 学 年 我 系 将 在 总 结 过 去 工 作 的 基 础 上, 结 合 今 年 学 院 以 抓 质 量 强 内 涵 促 改 革 调 结 构 建 品 牌 细 管 理 重 过 程 为 宗 旨, 以 规 范 管 理 深 化 内 涵 为

<4D F736F F D203136BCADBBD8D2E4D3EBD1D0BEBF2E646F63>


Microsoft Word - 9pinggb_A4.doc

Microsoft Word - 9pinggb_A4-f4.doc

理 论 探 索 事 业 单 位 改 革 的 五 点 思 考 余 路 [ 摘 要 ] 事 业 单 位 改 革 是 中 国 改 革 的 重 要 环 节, 其 影 响 力 和 难 度 不 亚 于 国 有 企 业 改 革 本 文 着 重 围 绕 推 进 事 业 单 位 改 革 应 考 虑 的 五 个 方 面

2深化教育教学改革、创新人才培养模式

Microsoft Word - 9pinggb_let.doc

Microsoft Word - 9pingb5_let.doc

退休權益.ppt [相容模式]

Microsoft Word - 1.《國文》試題評析.doc

$%%& ()*+, %&, %-&&%%,. $ %,, $,, & /$- 0(1 $%%& %& 234 %-%, 5&%6&633 & 3%%, 3-%, %643 -%%% :::; 7<9; %-%, 3$%$ :::;

# $# #!# # # # # # # %# # # &# # # # #! "

Transcription:

PRIORITY QUEUES Michael Tsai 00//8

Outline Dynamic hashing Priority Queue 的種類 DEPQ 的用途 Leftist Tree Binomial Heaps

Dynamic hashing 觀察 : 當 n/b 比較大以後, O() 就開始崩壞 ( 往 O(n) 方向移動 ) 應變 : 所以要隨時觀察 n/b, 當它大過某一個 threshold 時就把 hash table 變大 觀察 : 把 hash table 變大的時候, 需要把小 hash table 的東西通通倒出來, 算出每一個 pair 在大 hash table 的位置 然後重新放進大 hash table 有個可憐鬼做 insert 正好碰到應該 hash table rebuild 的時候, 他就會等非常非常久. T_T

Dynamic hashing 目標 : 重建的時候, 不要一次把所以重建的事情都做完 或許, 留一些之後慢慢做? 每個 operation 的時間都要合理 又叫做 extendible hashing

例子 k h(k) A0 00 000 A 00 00 B0 0 000 B 0 00 C 0 00 C 0 00 C3 0 0 C5 0 0 h(k,i)=bits 0 i of h(k) Example: h(a0,)=0 h(a,3)=00= h(b,4)=00=9

Dynamic hashing using directories directory depth= number of bits of the index of the hash table 00 0 0 A0, B0 A, B C C3 Insert C5 h(c5, )=0= C5, overflow 000 00 00 0 00 0 0 we increase d by until not all h(k,d) of the keys in the cell are the same 動腦時間 : 如果原本的要加入 C 呢? 如果第二步驟後加入 A4 呢? 答案 : p. 4 43 A0, B0 A, B C C3 C5 k h(k) A0 00 000 A 00 00 B0 0 000 B 0 00 C 0 00 C 0 00 C3 0 0 C5 0 0

Dynamic hashing using directories 為什麼比較快? 只需要處理 overflow 的櫃子 如果把 directory 放在記憶體, 而櫃子資料放在硬碟 則 search 只需要讀一次硬碟 insert 最多需要讀一次硬碟 ( 讀資料, 發現 overflow 了 ), 寫兩次硬碟 ( 寫兩個新的櫃子 ) 當要把 hash table 變兩倍大時, 不需要碰硬碟 ( 只有改 directory)

Directoryless Dynamic hashing 假設 hash table 很大, 但是我們不想一開始就整個開來用 (initialization 會花很大 ) 用兩個變數來控制的 hash table 大小 : r, q hash table 開啟的地方為 0, 之間 q~ 之間使用 h(k,r) 0~q 及 ~ 之間使用 h(k,r+) r=, q=

Directoryless Dynamic hashing 每次輸入的時候, 如果現在這個櫃子滿了 則開一個新的櫃子 : 原本 q 櫃子裡面的東西用 h(k,r+) 分到 q 和 兩櫃子裡 注意有可能還是沒有解決問題 多出來的暫時用 chain 掛在櫃子下面 000 A0 00 B4, A0 0 A, B5 C5 0 A, B5 insert C5, full 0 C 0 C C3 C3 00 B4 r=, q=0 r=, q= 問 : 再加入 C 呢? ( 課本 p 45) k h(k) A0 00 000 A 00 00 B4 0 00 B5 0 0 C 0 00 C 0 00 C3 0 0 C5 0 0

複習 : Priority queue 的 operations A. 看 ( 找到 )queue 裡面 priority 最小 ( 或最大 ) 的 element B. 插入一個 element 到 queue 裡面 C. 拿掉 (delete)queue 裡面 priority 最小 ( 或最大 ) 的 element 之前用 max or min heap A=O() B=O(log n) C=O(log n)

其他 priority queue 的種類 Meldable priority queue: 除了原本三個 operation 還支援一個 operation 可以把兩個 priority queue 合併 有什麼用途? Double ended: 可以拿最大也可以拿最小的 ( 原本的為 single ended) 支援下面的 operations A. 看 ( 找到 )queue 裡面 priority 最小的 element B. 看 ( 找到 )queue 裡面 priority 最大的 element C. 插入一個 element 到 queue 裡面 D. 拿掉 (delete)queue 裡面 priority 最小的 element E. 拿掉 (delete)queue 裡面 priority 最大的 element

DEPQ 的用途 () DEPQ=Double Ended Priority Queue 用來 implement network buffer PCMAN Mozilla Firefox World of Warcraft utorrent. 網路印表機驅動程式 狀況一 : 網路 busy, 可是 buffer 已經滿了, 必須丟掉東西 取出 priority 最低的封包丟掉 DEPQ!! 網路卡驅動程式的 buffer 網路實體線路 狀況二 : 網路目前 idle, 必須選出下一個要傳到網路上的封包 取出 priority 最高的封包傳出

DEPQ 的用途 (): External sorting External sorting 的適用時機 : 無法全部丟入主記憶體 ( 部分要放在慢速儲存媒體 ) 使用 DEPQ 來 implement quick sort 的變種. 每次再從待 sorting 的數字們中取一個新的數字 A. 假設此時 DEPQ 中具 max/min priority 的數字分別為 B 與 S. b. 若 A<S, 則將 A 放到左邊一堆 待 sorting 的數字們 DEPQ. 從待 sorting 的數字中不斷拿數字放入 DEPQ 直到放滿主記憶體為止 a. 若 A>B, 則將 A 放到右邊一堆 c. 若, 則將 DEPQ 中 B 拿出丟到右邊 ( 或者將 DEPQ 中 S 拿出丟到左邊 ), 並將 A 放入 DEPQ 左邊一堆 : 都比 DEPQ 中的數字小 右邊一堆 : 都比 DEPQ 中的數字大

DEPQ 的用途 (): External sorting DEPQ 3. 將待 sorting 之數字堆拿空以後, 剩下 DEPQ 的數字, 依序拿出 priority 最高的, 放入中間一堆 中間一堆 : 從原本 DEPQ 放出來的 左邊一堆 : 都比中間一堆的數字小 右邊一堆 : 都比中間一堆的數字大 4. 中間一堆已排好, 遞迴呼叫繼續將左邊一堆及右邊一堆排好.

Meldable Priority Queue: Leftist tree Heap: 要花多少時間結合兩個 heap? 把兩個 heap 都當作沒有排過直接重新建一個大 heap 用從一個 array 建成一個 heap 的方法 ( 課本 section 7.6 heapsort) 需要 O(n) 目標 : meld, insert, delete=o(log n) find=o()

Extended Binary Tree A A 對應 B C B C D E F D E F Binary Tree Extended Binary Tree : internal nodes : external nodes

Leftist tree 的一些定義 Shortest(x): 從某個 extended tree 的 node 走到任一個 external node 的距離 可以用遞迴定義 : Shortest(x)= a. 0, if x 是 external node b. + min{shortest(leftchild(x)), shortest(rightchild(x))}, if x 是 internal node 定義 : A leftist tree is a binary tree such that if it is not empty, then shortest(leftchild(x)) shortest(rightchild(x)), for every internal node x.

例子 : 這是 leftist tree 嗎? A B C shortest(leftchild(c))=0 shortest(rightchild(c))= D E F

一些性質 假設 r 為 leftist tree 的 root, n 為 internal nodes 個數.. 從 root 到任何一 external node 的路徑中最右邊的一條, 為最短. 其長度為 shortest(r) log 為什麼?. shortest(r) 層內沒有 external nodes.. 由定義得知左邊的路徑一定比右邊的路徑長.

Min leftist tree Min leftist tree: 一個所有某 node 的 key 值永遠比它的小孩 key 值小的 leftist tree 3 7 80 50 0 9 8 5 5 0 8

Insert & Delete by Melding Insert(a, tree b): 創造一個只有 a 的 min leftist tree, 然後 meld(a,b). remove root node r tree b Meld(a,b) a left child s tree right child s tree Meld(leftChild(root), rightchild(root)) Delete(tree b): Meld(leftChild(root(b)), rightchild(root(b)))

Melding process Example Step : 把兩棵樹合併並確定 parent 的 key 大於 children 的 key is smaller than 5 add to the new tree 5 7 7 50 9 8 3 3 80 0 8 5 0

Melding process Example Step : 把兩棵樹合併並確定 parent 的 key 大於 children 的 key 5 is smaller than 50 add to the new tree 5 7 3 9 5 80 50 0 9 8 5 0 8 0 8

Melding process Example Step : 把兩棵樹合併並確定 parent 的 key 大於 children 的 key 8 is smaller than 50 add to the new tree 7 3 9 5 8 80 50 5 0 8 0 0 8 5

Melding process Example Step : 把兩棵樹合併並確定 parent 的 key 大於 children 的 key add to the new tree 7 5 50 9 8 80 3 0 8 5 0 80 50

Melding process Example Step : 把兩棵樹合併並確定 parent 的 key 大於 children 的 key 7 5 9 8 3 0 8 5 0 80 50

Melding process Example Step : 沿著剛剛右邊一條路線的 root, 確定所有的 shortest(left) shortest(right) 7 5 not ok 9 3 0 8 5 0 8 80 ok 50 ok

Melding process Example Step : 沿著剛剛右邊一條路線的 root, 確定所有的 shortest(left) shortest(right) not ok 7 5 8 9 3 0 50 5 0 8 80

Melding process Example Step : 沿著剛剛右邊一條路線的 root, 確定所有的 shortest(left) shortest(right) 5 7 5 0 8 9 50 80 0 8 3

那要花多少時間呢? Meld operation = O(??) 兩個 operation 都只要花走右邊路徑長度的時間 右邊路徑長度都是最短的 Worst case: balanced binary tree 所以所花時間為 O(log n)

變形 : Weight based leftist tree w(x): node 的 weight w(x)= 以 x 當作 root 的 subtree 裡面 internal node 的數目 如果 x 是 external node, 則 w(x)=0 w(x) 遞迴定義 : w(x)=+w(leftchild(x))+w(rightchild(x)) Weight based Leftist Tree 定義 : 對每一個 internal node x, w(leftchild(x)) w(rightchild(x)). 其中又可以有 Max or min weight based leftist tree (parent key 值大於 children key 值 )

Weight based leftist tree 定理 : 對 weight based leftist tree 的任一 internal node x, rightmost(x) 為其至任一 external node 的路徑中最右邊一條的長度. 則 rightmost(x) log 證明 ( 使用歸納法 ) 請見課本 p.43 meld, insert, delete 的方法如同一般 leftist tree 好處 : 第二步驟不用再使用獨立一個 pass 即可完成

B Heap (Binomial Heap) 目標 :. 支援 insert, delete (min), and meld 的動作. 平均來說 單一的 operation 可能可以到達 O() 或 O(log n) 跟課本講得不太一樣 參考資料 : http://en.wikipedia.org/wiki/binomial_heap 很讚的動畫 applet http://www.cse.yorku.ca/~aaw/sotirios/binomialheap.html

Binomial Tree 長什麼樣子 binomial tree 的定義 :. binomial tree of order 0 只有單一 node. binomial tree of order k 一個 root, 自己的 children 為 order 為 k, k,, 0 的 binomial tree 們 node 數目為 n,

表示方法 min Siblings: Linked List, ordered by tree degree

Binomial Heap 長什麼樣子 是 binomial tree 組成的 forest. 每個 tree 的任何一 parent node 的 key 大 ( 小 ) 於 child node 的 key. 每個 order 的 binomial tree 只能在這個 forest 裡面有一顆或零棵 條件. 使得 n 個 node 的 binomial heap 最多只有 log + 棵樹

Merge 兩棵 order 一樣的樹 看 root key 誰比較小 小的當新的樹的 root 大的接在新的樹的 root 下面 min min 4 4

Merge 兩個 heap (Meld) 假設要 merge p 和 q 兩個 heap p 和 q 各有 order 0 K 的 binomial tree 則開始看每個 order ( 假設是 i) 如果 p 和 q 中只有一個有 order i 的 則直接丟到 merged 的 heap 否則的話, 就把兩個 tree 合併 合併後的 tree, 還有可能跟後面 order 比較大的 tree 再合併 黑板舉另外一個例子 O(log n) 合併的 : 8 5 p q 4 order 0: 都有 order : 只有一個, 但 merge 過後的也有 order : 只有一個, 但 merge 過後的也有 4 5 3 6 7 3 6 7 8 9 9

Insert & Find minimum Insert: 使用 merge 來 implement 當作 merge 原本的 heap 和一個 order 0 的 tree( 只有一個 node) 就好 O(log n) 平均來講 可以達到 O()! Find minimum: 把所有樹的 root key 都檢查一遍找到最小的 O(log n) 或 O() 如果有一個 pointer 每次都指到最小的 ( 把找的動作在其他 operation 做了 )

Delete minimum 除了有動到的 tree 之外, 其他的 sub tree 也是一個 binomial heap 假設這個是最小的 Merge O(log n) 拿掉之後, 底下的 sub tree 也是 binomial heap