進階資料結構(2) Disjoint Sets

Slides:



Advertisements
Similar presentations
课前寄语 1 、保持纪律 2 、相互配合. 第三节 公民的投资 —— 公民的存款储蓄 课堂导入.
Advertisements

旅遊實務Ⅰ 授課教師:李健民 上課班級: 320. 課程大綱 旅遊業之設立程序 旅行業組織結構 旅行業之分類 旅行業之管理.
如何學好數學? 黃駿耀老師
親 ( 四 ) 親近神的路. 一、親的三字訣、七字訣: 親近神,親愛人; 與主交通親近神,同情關心親愛人。 甚麼是親? 1. 親有親近、親愛,更有關心、同情、親切的 意思。 2. 親的人與人沒有間隔,拉近人與人之間的距 離,並且樂意幫助人,與人相調建造在一起。
第二班群教師團隊 105 張心平 107 鐘于寧 106 黃意評 108 鄭婉茹. 第二班群之班親會說明 學校規定事項說明 教學活動說明 班群活動介紹.
第五章 幼儿园的教学 第一节 幼儿园教学思想的发展 第二节 幼儿园教学的基本含义 第三节 幼儿园教学的组织与评价 第四节 幼儿园的教学方法.
差勤.
申論題要拿高分並不容易,因為他是 有一定的技巧的,如果你遵照下列技 巧來作答申論題,相信高分並不難拿, 其技巧如下:
中國歷史 明代之患禍及民變.
云南外事外语职业学院 入党积极分子培训 赵田甜.
第四章 清代臺灣的社會文化變遷 第一節 移墾社會的形成
認識食品中毒 一、什麼是食品中毒? 二人或二人以上攝取相同的食品而發生相似的症狀,並且自可疑的食餘檢體及患者糞便、嘔吐物、血液等人體檢體,或者其它有關環境檢體(如空氣、水、土壤等)中分離出相同類型(如血清型、噬菌 體型)的致病原因,則稱為一件“食品中毒”。 但如因攝食肉毒桿菌毒素或急性化學性中毒而引起死亡,即使只有一人,也視為一件“食品中毒”。
食 物 中 毒.
“公平”是最热的关键词 1、胡锦涛首次进行“总动员”,提出“在促进发展的同时,把维护社会公平放到更加突出的位置” 。
贵州省公务员面试 备考指导 中公教育 面试讲师 刘运龙.
第4节 人体对食物的消化吸收.
故事会 盘古开天劈地 在很久很久以前,天地可不象我们现在看到的这样————天高高的在上面,地在我们的脚下,中间隔着几千几万米远。那个时候的天地就象是一个包在大黑壳里的鸡蛋,混混沌沌的,什么也看不清。人们走路都得弯着腰,耕田打猎都很不方便,因为一不小心抬个头,就会碰到天,惹它生气,接着就会招来狂风暴雨。因此所有的植物也都长不高,所以结的粮食和果实都很少,根本就不够大家吃。还经常会发生饿死人的事情。
创业数字图书馆.
中国管理科学发展探索 成思危 2006年8月18日于上海复旦大学.
103年度高職優質化輔助方案計畫申辦及輔導訪視說明會
“十二五”科技发展思路 与科技计划管理 科技部发展计划司 刘敏 2012年9月.
胎教.
主考官眼中的面试 ——面试主考官教你备战2016年国考面试 主讲老师:李海鹏.
財務報表分析 授課教師:陳依婷.
雨季的情人节.
做最好的自己 李開復 著 聯經出版社.
浙江省《幼儿园课程指导》(第2版)使用及备课要点
压力管理 山东院新生力项目系列培训课程 现在开始上课,今天上午进行的是压力管理,属于新生力项目课程的自我管理系列。
耕莘健康管理專科學校 妝管科服務學習成果發表
大学语文 诗词部分 散文部分 小说部分 戏剧部分 行政公文写作 申论.
[英] 罗伦·乔尔德  文/图.
“形神理美”成佳句 —— 仿用句式.
第15课 交通工具和通讯工具 的进步.
复习回顾: 中国一步步沦为半殖民地半封建社会 阶段 程度 第一次鸦片战争 《南京条约》 中国开始沦为半殖 民地半封建社会 第二次鸦片战争
102大學甄選入學 個人申請、繁星推薦說明 主講人:簡慧嫻.
第六冊第三課 背景介紹 作者介紹 蘭亭集序 內容注釋 品評鑑賞 問題討論 結構圖表 王羲之 字詞辨正 修辭小舖 國學常識 仿作練習.
威海——我的家乡 园林1303班 孙婷婷.
新進教師研習 教務處報告 報告人:教務處 林永仁 2011 年 8 月31日.
「明清時期台灣古典散文」 教師:田啟文.
新頒解釋函令 ● 所得稅扣(免)繳相關法令、 ● 所得稅扣(免)繳申報實務 ● 扣繳常見稅務違章類型 財政部南區國稅局屏東分局
鼻炎 症狀: 鼻(眼睛)內發癢或不舒服、 打噴嚏、 流鼻涕(水)、 鼻塞………等 。 鼻子內的任何發炎。
校园信息管理系统 河北科技大学网络中心 2000/4/10.
模块七 房地产营销渠道策略 主要内容 房地产营销渠道类型 房地产营销渠道选择方法 开发商与代理商的合作模式.
遣詞造句知多少? 中文系 王偉勇教授 兼通識教育中心中心主任.
(4)理论体系与实训模块 必须衔接、融合 本课程把理论教学体系与实训模块结构连接成一个完整的高职课程体系。
最有利標及評選優勝廠商 講師 劉金龍 經歷:臺中市政府發包科科長.
三、市场营销学研究的基本方法 (1)产品研究法。是以物为中心的研究方法,即在产品分类的基础上,对各类产品市场分别进行研究。 (2)机构研究法。是以研究市场营销制度为出发点,体现以人为中心的研究方法,即集中对整个市场营销系统中的各特定机构的性质和功能进行研究。 (3)职能研究法。是以研究产品从生产者到消费者手中所进行的各种营销活动过程中,市场营销组织所发挥的功能的方法。
徵收苗栗市福全段147、1588及文心段10、11地號等4筆土地之
青春期 要長大囉! 男女有別 生命的誕生~兩性結合才有下一代的新生命 為什麼會有月經? 經痛怎麼辦 ? 渡過快樂青春喜歡自己
讲 义 大家好!根据局领导的指示,在局会计科和各业务科室的安排下,我给各位简要介绍支付中心的工作职能和集中支付的业务流程。这样使我们之间沟通更融洽,便于我们为预算单位提供更优质的服务。 下面我主要从三方面介绍集中支付业务,一是网上支付系统,二是集中支付业务流程及规定等,
親愛的吉姆舅舅:   今天吃完晚餐後,奶奶說,在家裡情況變好以前,您要我搬到城裡跟您住。奶奶有沒有跟您說,爸爸已經好久沒有工作,也好久沒有人請媽媽做衣服了?   我們聽完都哭了,連爸爸也哭了,但是媽媽說了一個故事讓我們又笑了。她說:您們小的時候,她曾經被您追得爬到樹上去,真的嗎?   雖然我個子小,但是我很強壯,只要我會做的我都可以幫忙,但是,奶奶說,做其他事情以前,要先把功課做完。
网络的利与弊 2017/3/19 该课件由【语文公社】
中国人民公安大学经费管理办法(试行) 第一章总则 第四条:“一支笔” “一支笔”--仅指单位主要负责人。负责对本 单位的经费进行审核审批。
最有利標及評選優勝廠商 講師 劉金龍 經歷:臺中市政府發包科科長.
當 家 新 鮮 事.
兒童及少年福利服務 講師:張智昇.
中國美術史報告-我最喜歡的一幅畫 班級:2年2班 姓名:郭馥甄 座號:23.
Chap4 Tree.
高鐵炫風 製作人林淑蘭老師.
行政院勞工委員會勞工保險局 勞退舊制與新制分析說明 高雄市政府人事處 99年2月1日.
2007/5/23初訪螢光蕈 (等了兩年).
开始 结束.
樹狀結構 Tree Structure chapter 7 德明科技大學資訊科技系.
感謝同學們在加分題建議. 我會好好研讀+反省~
微信商城系统操作说明 色卡会智能门店.
Disjoint Sets Michael Tsai 2013/05/14.
高雄區12年國教入學方式 報告人:高雄市政府教育局 局長 鄭新輝.
大綱 一.受試者之禮券/禮品所得稅規範 二.範例介紹 三.自主管理 四.財務室提醒.
Advanced Competitive Programming
算法基础习题课2 助教:刘倩玉.
Presentation transcript:

進階資料結構(2) Disjoint Sets 101北一女中 資訊選手培訓營 進階資料結構(2) Disjoint Sets 2012.08. 05 Nan

集合 Set

Disjoint Sets

儲存資料的方式 (1) Linked-list (2) Tree 用array模擬—記自己的parent!

支援的操作 建立一個Set 得到一個Set的root(代表) [Find] 問兩個元素是不是在同一個Set 合併兩個Sets [Union]

建立一個Set 把該Set的所有元素的parent都設成同一個元素A,把A的parent設成-1 通常Disjoint Set都是從所有元素 2 4 3 Id 1 2 3 4 parent -1 int set_r[N]; void init(){ for ( i = 0 ; i < N ; i++ ) set_r[i] = -1; } 通常Disjoint Set都是從所有元素 都是獨立的開始的都設成-1

得到一個Set的root(代表) 利用遞迴的方式不斷地向上詢問parent是誰 最後找到-1那個就是這個Set的root(代表)了 5 6 2 4 3 Id 1 2 3 4 5 6 parent -1

實作—遞迴 int set_r[N]; // 記錄每個元素的parent int findRoot(int idx){ if ( set_r[idx] == -1 ) // 如果parent已經是-1,代表該元素就是root return idx; return findRoot(set_r[idx]); // 如果不是的話就直接往上找自己parent }

Path壓縮技 因為每次都要遞迴上去,會花上一些時間,所以可以在遞迴時就順便把所有點的parent改成回傳的那個root(就等於是把樹壓平) 1 2 4 3 1 2 4 3 Id 1 2 3 4 parent -1 Id 1 2 3 4 parent -1

實作 int set_r[N]; // 記錄每個元素的parent int findRoot(int idx){ if ( set_r[idx] == -1 ) // 如果parent已經是-1,代表該元素就是root return idx; return (set_r[idx] = findRoot(set_r[idx])); // 回傳順便設給自己 p.s.指派時整個式子的值就是最後set_r[idx]的值 }

問兩個元素是不是在同一個Set 看他們的root是不是同一個,如果是就代表兩個元素在同一個Set,不是就是不是。 int set_r[N]; // 記錄每個元素的parent int inSameSet(int idxA, int idxB){ if ( findRoot(idxA) == findRoot(idxB) ) return 1; // 如果兩個root相同回傳1 (代表True) return 0; // 反之回傳0,代表False }

合併兩個Sets 把兩個set的其中一個root的parent 設成另外一個set的root

把6的root的parent設成2的root 1 2 4 3 5 6 Id 1 2 3 4 5 6 parent -1 合併2 & 6 找到2的root  1 (同時有做path壓縮) 找到6的root  5 把6的root的parent設成2的root 5 6 1 2 4 3 Id 1 2 3 4 5 6 parent -1

實作—遞迴 int set_r[N]; // 記錄每個元素的parent void unionSets(int idxA, int idxB){ if ( inSameSet(idxA, idxB) ) // 如果在同個Set就不需要合併 return; int rootA = findRoot(idxA); // 找到元素A的Root int rootB = findRoot(idxB); // 找到元素B的Root set_r[rootB] = rootA; // 把元素B的Root的parent改成元素A的Root }

看完影片你該知道的是… Disjoint Sets是什麼 Disjoint Sets如何使用陣列模擬樹狀結構 Disjoint Sets如何找到樹狀結構的Root Disjoint Sets如何在找Root時壓縮Path Disjoint Sets如何知道兩個元素是否屬於同個Set Disjoint Sets如何Union兩個Sets