Recurrences 給定T(n)=T(n/2) + O(n) 我們該如何得到 T(n) = O(nlogn)?

Slides:



Advertisements
Similar presentations
高考数学专题之概率 高考数学冲刺 主讲人 : 北京大学光华管理学院 何洋. 北京师范大学京师大厦 9810 室 电话 : 传真 : 写在前面的话 概率是高中数学新教材中新增的内容, 在 实际生活中应用非常广泛, 并且由于概率 论是统计学的基础,
Advertisements

第四章 衛生保健及急救 組員: 4990U002 何易芳 4990U021 張書涵 4990U035 沈采柔 4990U036 王孜瑜 4990U039 許佳靜 4990U043 黃懿華 4991U002 柳瑋翎 4991U008 陳禹伶 第五組.
课程目标: 知识:了解湄公河平原的自然环境及当地人们的 生产生活特色。 能力:阅读地图能说出湄公河平原在世界的位置 ;在地形图、气温曲线图和降水量柱状图中获 取有用信息,综合分析湄公河平原环境特点。 情感态度:理解区域特色是自然条件和社会条件 共同作用的结果,树立因地制宜的观念。 课程重点:湄公河平原的自然环境,稻作区人们.
1.2 应用举例 ( 一 ). 复习引入 B C A 1. 什么是正弦定理? 复习引入 B C A 1. 什么是正弦定理? 在一个三角形中,各边和它所对 角的正弦的比相等,即.
認識食品標示 東吳大學衛生保健組製作.
104年 志願選填試探後輔導 彰化縣學生輔導諮商中心 適性輔導組.
Course 1 演算法: 效率、分析與量級 Algorithms: Efficiency, Analysis, and Order
第八章 互换的运用.
无效宣告请求书与 意见陈述书代理实务 国家知识产权局专利复审委员会
基本概論 Basic concepts.
颞下颌关节常见病.
致理科技大學保險金融管理系 實習月開幕暨頒獎典禮
11010: Tic-Tac-Tough ★★★★☆ 題組: Problem Set Archive with Online Judge
2011年10月31日是一个令人警醒的日子,世界在10月31日迎来第70亿人口。当日凌晨,成为象征性的全球第70亿名成员之一的婴儿在菲律宾降生。 ?
結腸直腸腫瘤的認知.
經歷復活的愛 約翰福音廿一1-23.
初级会计实务 第八章 产品成本核算 主讲人:杨菠.
社会保险计划 私人经营社会保障的可能性 联邦健康保险制度系统的资金融通仍是一个亟待解决的问题 医疗费用的风险是一个基本风险吗?
意想不到的作用 第十章 压强与浮力 一、压 强.
郭詩韻老師 (浸信會呂明才小學音樂科科主任)
中考阅读 复习备考交流 西安铁一中分校 向连吾.
交通事故處置 當事人責任與損害賠償 屏東縣政府警察局交通隊.
§1.5 一些简单实例 例1 某人平时下班总是按预定时间到达某处,然 然后他妻子开车接他回家。有一天,他比平时提早
中央广播电视大学开放教育 成本会计(补修)期末复习
人教版义务教育课程标准实验教科书 小学数学四年级上册第七单元《数学广角》 合理安排时间 248.
第三节 细胞外被与细胞外基质 1、胶原 细胞外被(糖萼)指细胞外覆盖的一层粘多糖(糖蛋白或糖脂)
2. 戰後的經濟重建與復興 A. 經濟重建的步驟與措施 1.
崇拜即將開始,請大家安靜片刻, 預備心靈敬拜上帝。
高考专项复习 之 ——病句辨析与修改.
好好學習 標點符號 (一) 保良局朱正賢小學上午校.
“08高考化学学业水平(必修科目)测试的命题和教学对策研究”
中考语文积累 永宁县教研室 步正军 2015.9.
小学数学知识讲座 应用题.
第4章 种群和群落 第3节 群落的结构 自主学习案   合作探究案 课后练习案. 第4章 种群和群落 第3节 群落的结构 自主学习案   合作探究案 课后练习案.
倒装句之其他句式.
第四章 计算科学教学计划与课程体系 4.1 计算科学(专业)的培养规格和目标
4. 聯合國在解決國際衝突中扮演的角色 C. 聯合國解決國際衝突的個案研究.
新陸書局股份有限公司 發行 第十九章 稅捐稽徵法 稅務法規-理論與應用 楊葉承、宋秀玲編著 稅捐稽徵程序.
第 22 课 孙中山的民主追求 1 .近代变法救国主张的失败教训: “师夷之长技以制 夷”“中体西用”、兴办洋务、变法维新等的失败,使孙中山
民法第四章:權利主體 法人 楊智傑.
Lecture 4 Recurrences 給定T(n)=T(n/2) + O(n) 我們該如何得到 T(n) = O(nlogn)?
到定点的距离等于定长的所有点都在这个圆上!
第 12 章 交流電源 …………………………………………………………… 12-1 單相電源 12-2 單相三線式 ※ 12-3 三相電源.
主讲人: 吕敏 { } Spring 2016,USTC 算法基础 主讲人: 吕敏 { } Spring 2016,USTC.
第八章 欧氏空间 8.1 向量的内积 8.2 正交基 8.3 正交变换 8.4 对称变换和对称矩阵.
四年級 中 文 科.
引例 问题1 从甲、乙、丙3名同学中选出2名参加某天的一项活动,其中1名同学参加上午的活动,1名同学参加下午的活动,有多少种不同的方法?
10.2 排列 2006年4月6日.
练习: 由三个不同的英文字母和三个不同的阿拉伯数字组成一个六位号码(每位不能重复),并且3个英文字母必须合成一组出现,3个阿拉伯数字必须合成一组出现,一共有多少种方法?
Week 2: 程式設計概念與 演算法的效能評估
Lecture 6 Quicksort 本章的重點在介紹Quicksort的作法 然後給予時間複雜度的分析。
聖誕禮物 歌羅西書 2:6-7.
认识三角形(2) 我自信,我出色;我拼搏,我成功!.
新高中通識教育科教案設計分享會 現代中國: 中國文化與現代生活 朱秀玲老師.
講師:郭育倫 第2章 效能分析 講師:郭育倫
§ 5-1 電流的磁效應 磁學發展的歷史: 1820年 7月,厄司特發現,一載有電流的直導線,可使周圍的磁針產生偏轉。
大綱:整數的加法 整數的減法 蘇奕君 台灣數位學習科技股份有限公司
資料結構簡介 綠園.
演算法的效率分析.
演算法分析 (Analyzing Algorithms)
Open topic2: 大O( Θ ,Ω)和小o( θ ,ω)有什么区别? 3/19/18 黄秉焜
依撒意亞先知書 第一依撒意亞 公元前 740 – 700 (1 – 39 章) 天主是宇宙主宰,揀選以民立約,可惜他們犯罪遭
7.2 正弦公式 附加例題 1 附加例題 2.
106學年度中區工作坊PART1 素養導向教學示例 -分享與實作- 分享人:周雅釧.
10.3 水平面上的方位角.
Quicksort 本章的重點在介紹Quicksort的作法 然後給予時間複雜度的分析。.
畢氏定理(百牛大祭)的故事 張美玲 製作 資料來源:探索數學的故事(凡異出版社).
12439: February 29 ★☆☆☆☆ 題組:Problem Set Archive with Online Judge
經文 : 創世紀一章1~2,26~28 創世紀二章7,三章6~9 主講 : 周淑慧牧師
102年人事預算編列說明 邁向頂尖大學辦公室製作.
Presentation transcript:

Recurrences 給定T(n)=T(n/2) + O(n) 我們該如何得到 T(n) = O(nlogn)? 本章的重點教導如何解上述的遞迴式。

4.1 The substitution method (ii)用歸納法證明 (for both upper and lower bounds) 猜的時候必須根據經驗, 當猜測的結果不對時,必須加以修正再重新證明一次。 Recurrences

範例: 找到 T(n) = 2T(n/2) + n 的 upper bound (T(1) = 1) 猜測 T(n) = O(nlg n) 試著證明存在著常數 c 和 n0 使得 T(n)  cn lg n 對於所有的 n  n0 都成立。 注意歸納法有兩個重要的步驟: Basis Induction Recurrences

在 n=1 時,沒有常數 c 能夠滿足 T(1)  cn lg n=0。 Basis: (n=n0) 在 n=1 時,沒有常數 c 能夠滿足 T(1)  cn lg n=0。 在 n=2 時,任何大於等於 T(n)/(n lg n) 的常數 c 都會滿足 T(n)  cn lg n。所以我們可以選擇 n0  2 且 c  T(n0)/(n0 lg n0) ………(1) Basis要說明的是當n小的時候成立 (n = n0) Recurrences

假設 T(n)  cn lg n 這個式子對於所有介在 n0 和 n-1 之間的 n 都成立。我們可以得到 Induction: (n>n0) 假設 T(n)  cn lg n 這個式子對於所有介在 n0 和 n-1 之間的 n 都成立。我們可以得到 T(n)  2(cn/2 lg n/2) + n (Substitution)  cn lg (n/2) + n = cn lg n – cn lg 2 + n = cn lg n – cn + n cn lg n, 其中最後一步在 c  1 的時候成立………(2) 根據(1)(2),我們可以選擇 n0 = 2 以及 c = max{1, T(2)/(2 lg 2)} = 2 讓 basis 及 induction 都成立。 Induction則是要證明當n > n0的情況下成立 假設我們先前的假設在n0到n之間都成立,然後證明 T(n) 也符合先前的假設。 Recurrences

Substitution Method 步驟 1. 猜測 T(n) = O(g(n))  證明存在 c 和 n0 使得 T(n)  cg(n) 對於全部的 nn0 都成立……(1) Recurrences

 如果我們已知 c 和 n0,那麼我們就可以用歸 納法證明(1) (a) Basis step: (1) 在 n = n0 時成立 (b) Induction step: (1) 在 n > n0 時成立  如何找到 c 和 n0 符合歸納法中的證明? (i) 找到符合 basis step 的 c 和 n0 的條件 (ii) 找到符合 induction step 的 c 和 n0 的條件 (iii) 綜合 (i) 和 (ii) 的條件 Recurrences

Subtleties: (修改假設:減一個低次方項) 範例: T(n) = T(n/2)+T(n/2)+1 (T(1) = 1) 猜測 T(n) = O(n) 當我們沒辦法根據先前的技巧順利得證的話,必要時得修改假設 subtleties就是修改假設的一個方法。 Recurrences

Induction: T(n) = T(n/2) + T(n/2) + 1  c(n/2 + n/2) + 1 Basis: ok! Induction: T(n) = T(n/2) + T(n/2) + 1  c(n/2 + n/2) + 1 = cn + 1 無法證明 T(n)cn !!!! 試著證明 T(n)  cn – b Induction: T(n)  (cn/2-b) + (cn/2-b) + 1 = cn – 2b + 1  cn – b, 最後一步對於任意大於等於 1 的常數 b 都成立 若無法證明 T(n) <= cn, 但是很接近了,要想想是否能證明 T(n) <= cn – b. Recurrences

Avoiding pitfalls: T(n) = 2T(n/2) + n 猜測 T(n) = O(n)。 試著證明 T(n)cn。 Induction: T(n)  2cn/2 + n  cn + n = O(n)  錯 !! 假設我們正在證明 T(n) <= cn, 對於 induction 來說,最後 T(n) 也必須要小於等於 cn 本頁中的式子只能導到 T(n) <= (c+1)n, 代表假設不成立。 Recurrences

Changing variable: T(n) = 2T( ) + lg n 為了簡單起見,假設 n=2m。變成 T(2m) = 2T(2m/2) +m 令 S(m) = T(2m),我們可以得到   S(m) = 2S(m/2) + m (把 m 換成 lg n) 因為我們知道 S(m) = O(m lg m),所以可以推得T(n) = O(lg n lglg n) 有時候遞迴式子直接分析不容易 透過變換變數,式子有可能會變得比較容易分析。 Recurrences

4.2 The iteration(recursion-tree) method 範例: T(n)=3T(n/4) + n T(n) = n + 3(n/4 + 3T(n/16)) = n + 3n/4 + 9(n/16 + 3T(n/64)) . . (note that n/( 1)  n + 3n/4 + 9n/16 + 27n/64 + ... + (1) = 4n+o(n) = O(n) 一直不斷地將遞迴式子帶入,最後就會得到一長串式子 分析該式子即可得到最後的結果。 Recurrences

Recursion trees: (for visualizing the iteration) T(n)=2T(n/2) + n2 Recurrences

n2 n2 lg n 畫成樹狀表示 然後將每一層所花的時間加起來就是全部所需要的時間。 … … Total: Recurrences

範例: T(n) = T(n/3) + T(2n/3) + n … … Total: Recurrences

4.3 The master method Theorem 4.1 (Master theorem) 令 a  1 及 b > 1 為常數,令 f(n) 為一函數,且定義 T(n) 為非負的整數,且其遞迴式為 T(n) = aT(n/b) + f(n),在此 n/b 表示 n/b 或 n/b。則依不同的情況,T(n) 的大小範圍如下: 1. 若存在常數  > 0 使得 f(n) = O(nlogb a),則 T(n) = (nlogb a) 2. 若 f(n) = (nlogb a),則 T(n) = (nlogb a lg n) 3. 若存在常數  > 0 使得 f(n) = (nlogb a+),且存在常數 c < 1 使得對所有夠大的 n,af(n/b)  cf(n),則 T(n) = (f(n))。 在某些情況下,我們不需要大費周章的分析遞迴式 本小節提供了一些公式,只要符合提到的條件,就可以用公式直接求解。 要注意的是,Master Theorem所提供的這些公式仍有不能解決的遞迴式子。 Recurrences

範例: T(n) = 9T(n/3) + n, a=9, b=3, nlogb a= n2 套用 case 1,可得 T(n)=(n2) 範例: T(n) = T(2n/3) + 1, a=1, b=3/2, nlogb a= n0 套用 case 2,可得 T(n)=(lg n) 範例: T(n) = 3T(n/4) + n, a=3, b=4, nlogb a= nlog4 3 套用 case 3,可得 T(n)=(n) T(n) = 9T(n/3) + n => a = 9, b = 3 T(n) = T(2n/3) + n => a = 1, b = 3/2 T(n) = 3T(n/4) + n => a = 3, b = 4 Recurrences

註: 這三個 case 並沒有包含所有 f(n) 的可能性。 Case 1 與 2 之間有 gap, case 2 與 3 之間也有。 範例: T(n) = 2T(n/2) + n lg n 在這個例子中,第二個 case 以及第三個 case 都不能被套用。 Recurrences

Exercises Problem 1: 在德國的樂透中你必須從 1 到 49 號之中選出六個數字。玩樂透有一個很普遍的策略(雖然不會增加你贏的機會),就是選擇一個子集合 S 包含 49 個數字裡面的 k (k>6) 個數字,然後只從 S 裡面選擇 6 個數字,重複玩很多次。 例如,k=8 且 S={1,2,3,5,8,13,21,34},總共有 28 種組合: [1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2,3,5,13,21], ..., [3,5,8,13,21,34]。 你的工作就是寫一個程式,讀入 k 以及 S,然後印出所有可能的組合。 Recurrences

Exercises 輸入:有好幾組測資。每一組測資會先給一個整數 k (6 < k < 13),接著之後的 k 個整數就是集合 S (數字由小排到大)。k=0 代表輸入結束。 輸出:對於每組測資,印出所有可能的組合(一行印一種組合)。每一種組合的數字要從小到大印出,每個數字之間要用一個空白隔開。所有的組合必須要根據字典順序印出,也就是先從最小的數字當作排序的依據,相等的時候再根據第二小的數字,依此類推。每一組測資的輸出要用一個空行隔開。不要在最後一組測資的輸出之後多印一個空行。 Recurrences

以下是一個輸出入的實例: Sample Input Sample Output 7 1 2 3 4 5 6 7 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 7 1 2 3 4 6 7 1 2 3 5 6 7 1 2 4 5 6 7 1 3 4 5 6 7 2 3 4 5 6 7 Recurrences

Exercises Problem 2: 產生排列組合在資訊科學方面一直是個重要的問題。這一題要求你把一段字串的所有排列組合依照字典順序由前到後排好。請記住你的演算法必須要有效率。 輸入:第一行包含一個整數 n, 接下來的 n 行包含了 n 個字串。字串只會由英文字母或數字所構成,而且不會有空白字元在裡頭。字串最大的長度為 10。 輸出:對於每組測資,依照先後順序把所有的排列組合印出來。字母的大小視為不同,而且要注意印出來的排列組合不能重複。在每組輸出後面要多印一個空行。 Recurrences

以下是一個輸出入的實例: Sample Input Sample Output 3 ab abc bca ab ba abc acb bac bca cab cba abc acb bac bca cab cba Recurrences