- 1、本文档共35页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Data Structure for Disjoint Sets.ppt
Disjoint Sets Data Structure for Disjoint Sets 11.1 Disjoint-set 指令 Disjoint set 資料結構: 一個維護所有 disjoint dynamic sets 組成的大集合 S={S1, S2, …, Sk} 的資料結構。 每個集合都被一個 representative 所代表,而 representative 是該集合中的某一個元素。 此資料結構支援以下的指令: Make-Set(x): 創造一個新的集合 {x} Union(x, y): 把兩個分別包含 x, y 的集合聯集起來 Find-Set(x): 傳回一個指標指向包含 x 的集合的 representative。 註:在某些應用中,使用那一個元素當作 representative 並不會有影響,只要在每次變動之間,代表一個集合的 representative 皆是同一個元素即可。而在其它的應用中,必需依照特定的規則來選擇 representative,例如在集合中,選數字最小者當作 representative。 符號: n: 所有 Make-Set 指令的總數。 m: 所有 Make-Set、Union 及 Find-Set 指令的總數。 註: m ? n 且所有 Union 指令的總數最多不會超過 n-1。 disjoint-set 資料結構例子 disjoint-set 資料結構例子 (續) CONNECTED-COMPONENTS(G) 1 for each vertex v ? V[G] 2 do MAKE-SET(v) 3 for each edge (u,v) ? E[G] 4 do if FIND-SET(u) ≠ FIND-SET(v) 5 then UNION(u,v) disjoint-set 資料結構例子 (續) SAME-COMPONENT(u,v) 1 if FIND-SET(u) = FIND-SET(v) 2 then return TRUE 3 else return FALSE 11.2 Linked-list 表示法 簡單的 Union(x, y) 作法 把第一個序列串接在第二個之後。 m = 2n-1 個指令耗時 O(n2) 每個指令的 amortized time 為 O(n)。 A weighted-union heuristic 每一個 representative 存放其代表的序列的長度。 把較短的序列附加在較長的序列之後。 Theorem 1: 使用 weighted-union heuristic 後,假設 Make-Set 指令總數為 n 個,則 m 個連續的 Make-Set, Union, 與 Find-Set 指令耗時 O(m+nlg n) 證明 Theorem 1 執行 Make-Set(x) 後,x 所在的序列中只包含 x 一個元素。 在 x 的 representative pointer 執行第一次更新之後,x 所在的序列中包含了至少兩個元素。 證明 Theorem 11.1 (續) 接下來我們可以觀察到在對 x 的 representative 執第 k 次更新後,包含 x 的序列至少有 2k 個元素。 由於 k=O(lg n),所有 Union 指令所耗的時間最多為 O(nlg n)。 每個 Make-Set 及 Find-Set 指令皆耗時 O(1)。因此證明成立。 11.3 Disjoint-set forests 一些增進執行速度的技巧 Union by rank: 由較小的 tree 的 root 指向較大的 tree 的 root (依照 tree 的高度區分)。 rank[x]: x 的高度(由 x 到一 descendant leaf 的最長路徑的邊的數量) Path compression: 在執行 Find-Set(x) 對過程中,把所有find path 上的點指向 root。(不改變任何 rank 的值) 範例: Find-Set(a) with Path Compression Pseudo-code for disjoint-set forests MAKE-SET(x) 1 p[x] ? x 2 rank[x] ? 0 UNION(x,y) 1 LINK(FIND-SET(x), FIND-SET(y)) LINK(x,y) 1 if rank[x] rank[y] 2 then p[y] ? x 3 else p[x] ? y 4 if rank[x]
您可能关注的文档
- <Java大学实用教程> Power point 制作耿祥义 张跃平.ppt
- <专线专有 企业独享>.ppt
- 1月4日营运部巡店复查报告.ppt
- 2 4 8 16 32.ppt
- 2000年高考作文.ppt
- 2009学年小学升中辅导.ppt
- 2009英语中考“书面表达”分析.ppt
- 2010年中考指导书说明.ppt
- 2011.9.30.ppt
- 2011年6月17日.ppt
- 2024年证券分析与咨询服务项目投资申请报告代可行性研究报告.docx
- 2024年铬酸酐项目资金申请报告代可行性研究报告.docx
- 2024年清洁胶项目资金申请报告代可行性研究报告.docx
- 2024年肉松饼项目投资申请报告代可行性研究报告.docx
- 2024年陆上泵项目资金需求报告代可行性研究报告.docx
- 2024年未硫化复合橡胶及其制品项目资金需求报告代可行性研究报告.docx
- 2024年精密温控节能设备项目资金筹措计划书代可行性研究报告.docx
- 2024年汽车覆盖件模具项目资金筹措计划书代可行性研究报告.docx
- 宋词行书钢笔字帖.pdf
- 我的暑假生活作文三年级300字10篇.pdf
文档评论(0)