Disjoint Sets Michael Tsai 2013/05/14.

Slides:



Advertisements
Similar presentations
index 目次 ( 請按一下滑鼠,解答就會出現喔 !) 接續下頁解答 3-1 極限的概念.
Advertisements

會計學 Chapter 1 基本概念 1-2 基本概念 第一節 單式簿記 第二節 會計學的定義與功用 第三節 會計學術與會計人員 第四節 企業組織 第五節 會計學基本第五節 會計學基本慣例 第六節 會計方程式 第七節 財務報表.
Chapter 5 教育發展與職業選擇. 1. 認識高職學生的生涯進路。 2. 了解個人特質與職業屬性之 間的關係。 3. 認識打工安全與勞動權益。
旅 糾 紛 遊 與緊急事件處理 11 Chapter 旅遊費用.
我们向往新的飞翔 青岛顺兴路小学.
小 王 子 組別:第五組 班級:財金二甲 組員:A 林安潔 A 陳思羽 A 許雅涵
11-1 保險業之定義 11-2 保險業之設立 11-3 保險業之組織 11-4 保險業之營業範圍
算法分析(3) 重要的数据结构.
数据结构 杨鹏宇 QQ: 版权所有,转载或翻印必究
9-1 火災保險 9-2 海上保險 9-3 陸空保險 9-4 責任保險 9-5 保證保險 9-6 其他財產保險
Introduction 基本概念 授課老師:蕭志明
校园信息管理系统 河北科技大学网络中心 2000/4/10.
導覽解說與環境教育 CHAPTER 3 解說員.
徵收苗栗市福全段147、1588及文心段10、11地號等4筆土地之
財務報表的內容 四種報表格式 財務報表的補充說明 會計師簽證的重要性 合併報表 財務報表分析 Chapter 2 財務報表的內容.
老師 製作 法律與生活.
Performance Evaluation
讲 义 大家好!根据局领导的指示,在局会计科和各业务科室的安排下,我给各位简要介绍支付中心的工作职能和集中支付的业务流程。这样使我们之间沟通更融洽,便于我们为预算单位提供更优质的服务。 下面我主要从三方面介绍集中支付业务,一是网上支付系统,二是集中支付业务流程及规定等,
第十七章休閒農業之經營策略與成功之道 17 Chapter.
Chapter 2 勞工安全衛生法.
中国人民公安大学经费管理办法(试行) 第一章总则 第四条:“一支笔” “一支笔”--仅指单位主要负责人。负责对本 单位的经费进行审核审批。
風險分析與財務結構 瞭解風險的定義與種類 衡量企業風險與財務風險 影響企業風險的因素 影響財務風險的因素 以現金流量衡量企業長期的財務狀況
國際行銷管理 林 建 煌 著.
第一節 知覺 第二節 認知 第三節 學習 第四節 創造力
Minimum Spanning Trees
§4 Additional Binary Tree Operations
Chap4 Tree.
CHAPTER 2 綜合所得稅之架構.
Chapter8 Binary and Other Trees
Chap 3 堆疊與佇列 Stack and Queue.
Ch13 集合與泛型 物件導向程式設計(2).
The Greedy Method.
哈夫曼编码.
Graph 2 Michael Tsai 2012/5/1 連載: 學生上課睡覺姿勢大全
JAVA程序设计 第5章 深入理解JAVA语言----补充.
Course 9 NP Theory序論 An Introduction to the Theory of NP
浅谈MySql索引及锁的应用 厦门大学数据库实验室 刘颖杰 2014年3月8日.
辅导课程十三.
主題:踏出宣教路 使12:11 彼得醒悟過來,說:「我現在真知道主差遣 他的使者,救我脫離希律的手和猶太百姓一
變數命名 保留字(Reserved Word)
数据结构与算法
樹狀結構 Tree Structure chapter 7 德明科技大學資訊科技系.
String Matching Michael Tsai 2012/06/04.
二叉树和其他树 (Binary and other trees)
樹 2 Michael Tsai 2013/3/26.
感謝同學們在加分題建議. 我會好好研讀+反省~
Tree & Binary Tree.
Chapter 5 Recursion.
Sorting in Linear Time Michael Tsai 2013/5/21.
Chapter 11 3D實體繪製(1).
老師 製作 休閒農場.
Linked Lists Prof. Michael Tsai 2013/3/12.
Hashing Michael Tsai 2013/06/04.
第五节 并查集.
String Matching Michael Tsai 2013/05/28.
微信商城系统操作说明 色卡会智能门店.
Amortized Analysis Michael Tsai 2013/11/14.
演算法分析 (Analyzing Algorithms)
本节内容 Lua基本语法.
進階資料結構(2) Disjoint Sets
Chapter 7 Relations (關係)
Hashing Michael Tsai 2017/4/25.
Multi-threaded Algorithm 3
大綱 一.受試者之禮券/禮品所得稅規範 二.範例介紹 三.自主管理 四.財務室提醒.
计算机问题求解 – 论题 基本的数据结构 2018年05月09日.
Advanced Competitive Programming
團體工作的倫理議題 CHAPTER 12. 團體工作的倫理議題 CHAPTER 12 團體工作的倫理議題 1.如果我有資格執行個別治療,那麼我也可以執行團體治療。 2.仔細而審慎地篩選團體成員,較符合專業倫理要求。 3.在團體治療開始前,讓成員能先有準備以便從團體中獲得最大利益,是非常重要的。
Graph 1 Michael Tsai 2012/4/24 連載: 學生上課睡覺姿勢大全
算法基础习题课2 助教:刘倩玉.
JAVA 程式設計與資料結構 第十七章 Tree.
Presentation transcript:

Disjoint Sets Michael Tsai 2013/05/14

Equivalence Relation Set: 一個group的elements, 沒有次序 假設S為包含所有元素的集合 兩個element a和b的relation R稱為equivalence relation, iff: Reflexive: 對每個element 𝑎∈𝑆, 𝑎 𝑅 𝑎 is true. Symmetric: 對任兩個elements 𝑎,𝑏∈𝑆, if 𝑎 𝑅 𝑏 is true, then 𝑏 𝑅 𝑎 is true. Transitive: 對任三個elements 𝑎,𝑏,𝑐∈𝑆, if 𝑎 𝑅 𝑏 and 𝑏 𝑅 𝑐 is true, then 𝑎 𝑅 𝑐 is true. 例: 道路連接性 (road connectivity)是equivalence relation

Equivalence Class The equivalence class of an element 𝑎: 一個包含S中所有和𝑎 有equivalence relation的elements的集合 {∀𝑒∈𝑆 𝑠.𝑡. 𝑒 𝑅 𝑎} 假設我們把S中所有元素分到不同的equivalence class, 則每個元素只會屬於一個equivalence class 任兩個equivalence class 𝑆 𝑖 , 𝑆 𝑗 都符合 𝑆 𝑖 ∩ 𝑆 𝑗 =𝜙, if 𝑖≠𝑗.  Disjoint sets! Equivalence class把原本的S 切(partition)成數個equivalence class 道路連接性的例子: 如果兩個城市有路連接,則它們屬於同一個equivalence class

Operation on Disjoint Sets MAKESET(x): 做一個新的set, 只包含element x UNION(x,y): 將包含x的set和包含y的set合併成為一個新的set (原本包含x和包含y的兩個set刪掉) FIND(x): 找出包含x的set的”名字”(ID號碼) UNION之前通常要先用FIND確定兩個element屬於不同set 問: 如何表示Disjoint Sets, 使得這些operation可以快速地執行呢?

例子: 尋找兩個城市是否連接 給一些城市, 及所有道路(每條道路連接兩個城市) for each city C MAKESET(C) for each road (x,y) if FIND(x)!=FIND(y) UNION(x,y) 如何知道兩個城市是否連接? Boolean CITY_CONNECTED(x,y) { if FIND(x)==FIND(y) return TRUE; else return FALSE; }

例子: 尋找兩個城市是否連接

要怎麼表示集合呢? 方法一 方法一: Array法 – Find很快, Union很慢 上面的例子共有四個SET: 𝑆 1 = 3 , 𝑆 2 = 4,5,6 , 𝑆 3 = 0,2 , 𝑆 4 ={1} FINDSET(x)? 直接看array的值 時間複雜度? UNION(x,y)? 要把所有跟x同set的element都改set ID成跟y的set ID一樣 Index代表的是每個element的號碼 [0] [1] [2] [3] [4] [5] [6] 3 4 1 2 Array裡面的值紀錄的是該element所屬的set ID 𝑂(1) 𝑂(𝑛)

要怎麼表示集合呢? 方法二 方法二: tree法 – Union很快, Find有點慢 Index代表的是每個element的號碼 [0] [1] [2] [3] [4] [5] [6] 2 4 5 Array裡面的值紀錄的是該element的”parent” 反正我們並不是那麼重視set ID or name, 只要可以做FINDSET(x)==FINDSET(y) 的比較! 用每個set的root來代表那個set即可! 4 5 1 2 6 3

要怎麼表示集合呢? 方法二 FIND(x)? 時間複雜度? 跟樹的高度有關! Worst case: skew tree (一條龍) 必須找到該”tree”的root 時間複雜度? 跟樹的高度有關! Worst case: skew tree (一條龍) UNION(x,y)? 把element x的set的root的 parent (array的值)設成y (或反過來) 例如UNION(2,4) 如果不計算找root的部分 (通常需要先用FIND 檢查兩個是否為同set) 4 5 1 2 6 𝑂(𝑛) 3 𝑂(1)

方法二: 改良版 Weighted Union 之前的問題在於, FIND的時候如果碰到skew tree就會變成worst case, O(n) 如果從一開始(每一個set只有一個element)的時候,每次UNION的時候仔細選擇誰要當新的tree的root, 則可以避免這個問題! Weighted Union: Union的時候用某種”weight”來決定誰當root Union by size: 每個set (tree)紀錄裡面有幾個node (element). Size大的set的root當合併之後的tree的root. Union by height:每個set (tree)紀錄裡面tree的高度. 比較高的set的root當合併之後的tree的root. 使用兩者的執行時間相似, 下面使用Union by height舉例

Union by Height 考慮某個element x, 一開始它所屬的set只有1個element 跟別人union的時候, 如果加入別人(別人當root)就是比較小的 第一次union的時候, 如果是加入別人, 產生的set最少有兩個element 第二次union的時候,如果是加入別人, 產生的set最少有四個element … 每次加入別人(高度增加)的時候, tree的size最少會變兩倍大 每個FIND最多只會花 UNION的部分不變! 𝑂( log 𝑛 ) 𝑂(1)

方法二: 開外掛加強版 Path Compression FIND還是太慢了 有沒有什麼方法可以加快? 從某一個node往上走的路上, 每一個parent都改指到root 時間複雜度還是一樣, constant變大而已 下一次FIND就快得多 此方法叫做path compression x

Amortized Analysis (多個operation一起考慮) 假設有m個 UNION 或 FIND operation, n個element 方法 FIND(x) UNION(x,y) m個UNION+FIND 方法一: array法 O(1) O(n) O(mn) 方法二: tree法 方法二: tree法+Weighted Union O(log n) O(m log n) 方法二: tree法+Weighted Union+Path Compression O(𝑚 𝛼(𝑛))≈𝑂 𝑚 𝛼(𝑛)是一個長得很慢的function Ackermann’s function的反函式 , 大部分情形𝛼 𝑛 ≤4 (Cormen 21.4)

Today’s Reading Assignment Karumanchi chapter 8 (可參考Cormen chapter 21)