Course 10 削減與搜尋 Prune and Search

Slides:



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

办公室保健指南. 减少辐射篇 ❤显示器散发出的辐射多数不是来自它的正面,而是侧面和后面。因此,不要 把自己显示器的后面对着同事的后脑或者身体的侧面。 ❤常喝绿茶。茶叶中含有的茶多酚等活性物质,有助吸收放射性物质。 ❤尽量使用液晶显示器。
創新快速化妝法 組員:施伊倩 4A1F0904 劉欣怡 4A1C0060 賴永哲 4A1F0901 陳佩君 4A1F0907.
親 ( 四 ) 親近神的路. 一、親的三字訣、七字訣: 親近神,親愛人; 與主交通親近神,同情關心親愛人。 甚麼是親? 1. 親有親近、親愛,更有關心、同情、親切的 意思。 2. 親的人與人沒有間隔,拉近人與人之間的距 離,並且樂意幫助人,與人相調建造在一起。
魏 饴. 处级干部培训班讲座 一、卓越干部的德行素质  常修为政之德、常思贪欲之害、常怀律己之心!  孔老夫子有个观点 “ 为政以德,譬如北辰居其所而众星拱之。 ”  司马光《资治通鉴》 “ 才者,德之资也;德者,才之帅也。 ” “ 德 ” 胜 “ 才 ” 谓之 “ 君子 ” , “ 才 ”
一、真愛密碼 二、尋求真愛 三、有自尊的愛. 。如果雙方對愛情產生 質疑、困惑時,則表示 彼此之間的愛情關係仍 有 待加強或釐清,千萬別 急著為自己的人生大事 下決定。 我是一個 16 歲的未婚媽媽,發現自 己懷孕時,已經五個月大了,我知 道自己沒能力照顧孩子,在驚訝之 於,大人們只好坦然接受,幫我找.
大地遊戲王 課程實錄.
差勤.
Course 1 演算法: 效率、分析與量級 Algorithms: Efficiency, Analysis, and Order
報告書名:父母會傷人 班級:二技幼四甲 姓名:吳婉如 學號:1A2I0034 指導老師:高家斌
加強水銀體溫計稽查管制及回收 回收作業須知及緊急應變措施
第4章 分錄及日記簿 4-1 借貸法則 4-2 日記簿的格式及記錄方法 4-3 分錄的意義及記錄方法 4-4 常見分錄題型分析
會計資訊系統 專章A.
第三章 調整與編表.
Introduction 基本概念 授課老師:蕭志明
媽,我們真的不一樣 青少年期與中年期 老師: 趙品淳老師 組員: 胡珮玟4A1I0006 馬菀謙4A1I0040
中五級中史科及通識科跨科研習 研習大澳的「宗教文化」─ 廟宇的研習 指導老師:周婉儀老師 組員: 陳偉欽 5a (15)
引導者的角色 組別:第5組 4A1I0003 劉芷媛 4A1I0004 陳安琪 4A1I0014 陳佳瑩 4A1I0046 葉倢茹
第十三屆 Step.1 我們的目標 Step.2 我們的角色 Step.4 權利與義務 義務 權利 年繳會費五百元整
(4)理论体系与实训模块 必须衔接、融合 本课程把理论教学体系与实训模块结构连接成一个完整的高职课程体系。
最有利標及評選優勝廠商 講師 劉金龍 經歷:臺中市政府發包科科長.
分治演算法 與 刪尋演算法 各個擊破與化整為零.
班級:二幼三甲 姓名:郭小瑄 、 詹淑評 學號:1A2I0029 、1A2I0025
财务管理.
您買美元了嗎? 退休規劃 全球外幣保單.
青春期 要長大囉! 男女有別 生命的誕生~兩性結合才有下一代的新生命 為什麼會有月經? 經痛怎麼辦 ? 渡過快樂青春喜歡自己
数据结构(C语言版) Data Structure
指導老師:陳韻如 姓名:吳宜珊 學號:4A0I0911 班級:幼保二乙
Performance Evaluation
植物保护 课程整体设计 汇报 申报省级精品资源共享课建设 植物保护课程组.
学生培养的过程性评价.
最有利標及評選優勝廠商 講師 劉金龍 經歷:臺中市政府發包科科長.
傳統童玩遊戲創新 組別:第八組 班級:幼保二甲 組員: 4A0I0005柯舒涵 4A0I0011謝孟真
政府扶持资金通览 技术改造篇.
國語文好點子趴辣客教學食譜 甜點:〈焦糖鳥布蕾〉
IV. Implementation IV-A Method 1: Direct Implementation 以 STFT 為例
本科生医保资料的提交.
分治演算法 各個擊破獲得最後勝利 國立中央大學 資工系 江振瑞 教授.
主讲人: 吕敏 { } Spring 2012 ,USTC 算法基础 主讲人: 吕敏 { } Spring 2012 ,USTC.
樹狀結構 陳怡芬 2018/11/16 北一女中資訊專題研究.
大綱 Labview 環境介紹 數值(Numeric) 布林值(Boolean)與比較(Comparison) 結構(Structure)
Course 4 搜尋 Search.
演算法方式總覽 The Divide-and-Conquer Strategy (個各擊破)(binary Searching、Quick Sort…. ) The Greedy Method(貪婪演算法) (Prim MST、Kruskal MST、Djikstra's algorithm) Dynamic.
統計圖表的製作.
Course 9 NP Theory序論 An Introduction to the Theory of NP
主讲人: 吕敏 } Spring 2012 ,USTC 算法基础 主讲人: 吕敏 } Spring 2012 ,USTC.
CHAP13 演算法概論 高中資訊科技概論 松崗圖書公司.
东北林业大学 陈宇 ACM程序设计 东北林业大学 陈宇
感謝同學們在加分題建議. 我會好好研讀+反省~
Sorting in Linear Time Michael Tsai 2013/5/21.
共有六個運算性質 包括它的證明以及相關題型
《结构力学认知实验》(授课形式)的上课时间改为: 5月5日(周二)晚上18:00~19:30和19:30~21:00,
《结构力学认知实验》(授课形式)的上课时间改为: 5月7日(周四)晚上18:30~20:00和20:00~21:30,
第8章 資料排序 資料結構設計與C++程式應用
计算机问题求解 – 论题 算法方法 2016年11月28日.
畢業資格審查系統 操作步驟說明.
講師:郭育倫 第2章 效能分析 講師:郭育倫
新制退休實務計算說明- 現職人員退休範例說明
Multi-threaded Algorithm 3
106 學年度新生入學說明會 國立臺灣海洋大學 教務處簡介
學士學位畢業論文說明 逢 學 大 甲 土 理 管 地 2009/10/05.
1753: Need for Speed ★★☆☆☆ 題組:Problem Set Archive with Online Judge
高雄市97年度國民小學閱讀計畫創新教學-教案達人創新教學方案
智慧財產權管理講次36 積體電路電路布局保護法(1) 主講:吳銘圳
本教學投影片係屬教科書著作之延伸,亦受著作權法之保護。
資料結構 老師:李崇明 助教:楊斯竣.
Data Structure.
10107: What is the Median? ★★☆☆☆
第四章 買賣業會計.
Presentation transcript:

Course 10 削減與搜尋 Prune and Search

▓ Outlines 本章重點 Prune and Search概念 A Simple Example: 二分搜尋法 挑選第k小的元素 (kth Selection) 問題

▓ Prune and Search概念 可視為切割與征服 (Divide and Conquer) 策略的特例。 在一個資料集合當中,依照目前問題的特性,事先去除掉一些答案不可能存在的資料子集,再由目前剩下的資料子集繼續嘗試搜尋答案。 包含多次的處理,每次的處理都會將資料集合刪除固定的百分比,並運用同樣的方法遞迴地以刪除後的資料當作輸入資料重新解問題。經過若干次處理後,資料量將可縮小到能用固定常數的時間解得答案。 它的精神所在便是如何有效地刪減資料集合,就像切割與征服 (Divide and Conquer) 策略強調的如何有效的合併。不過由於利用削減搜尋法得出來的演算法,有時會和分割解決法所得的結果相同,因此這兩種方法時常被混淆。

▓ A simple example: 二分搜尋法 有一排序後之序列如下 : (Search 9) 1 4 5 7 9 10 12 15 step 1  step 2  step 3  在每一次比較以後,總是會有一群資料被削減掉 (pruned away). Binary search 可視為特殊的切割與征服策略!!這是因為: 切割與征服策略強調將母問題切割成較小的問題 (Divide),再使用相同的解決程序對所有小問題加以分別處理 (Conquer)。所有小問題的解可以成為母問題的最後解; 若有必要,則再將每個小問題的處理結果加以合併。 但二分搜尋法將問題切割及經過一次比較後,會直接將答案不存在之一方的所有資料削減掉 (Prune),再使用相同的程序去搜尋另一方 (Search)。

▓挑選第k小的元素問題 (kth Selection) 問題定義: 已知有n個元素的集合S。求一個Algorithm可找出S中第k小的數。 特別要求:在O(n)內找出解答。 此問題的直觀解法: 先對n個元素排序 再由小到大依序找出第k個數值即為解答 直觀解法的時間複雜度:O(n log2n) 採Prune and Search解法的時間複雜度:O(n)

令集合S={a1, a2, …, an},挑出一個元素 pS,利用 p 將 S分成三部份 S1 , S2 , S3: S1={ ai | ai < p , 1  i  n} //其內元素皆小於p S2={ ai | ai = p , 1  i  n} //其內元素皆等於p S3={ ai | ai > p , 1  i  n} //其內元素皆大於p 有三個判斷條件以找出第k小的元素: If |S1|  k , then 第k小的元素存在於 S1,prune away S2 and S3。 else, if |S1| + |S2|  k, then p即為第k小的元素。 else,第k小的元素存在於S3中,prune away S2 and S3。令k’ = (k - |S1| - |S2|),在 S3中找第k’個元素即為解答. 說明圖示: S1 S2 S3 k’ k k k

如何挑選p? 將n個元素區分成5個一組,分行存放。若最後一組元素不足5個,則以補足 把每一組由小到大排序,每組第三大元素即是組中位數M 選p為所有組中位數 (有 個) 的中位數 (by recursive call) At least 1/4 of S known to be less than or equal to P. Each 5-element subset is sorted in non-decreasing sequence. P M At least 1/4 of S known to be greater than or equal to P.

演算法 Input: A set S of n elements. Output: The kth smallest element of S. Step 1: 將 S 分成 n/5 組資料集合,每一組有5個資料,不足5個資料以  補足。 Step 2: 排序每一組資料 Step 3: 找出所有組中位數的中位數 Step 4: 將S區分成三部份S1, S2 and S3, which contain the elements less than, equal to, and greater than p, respectively. Step 5: 利用三個判斷條件以找出第k小的元素: If |S1|  k , then 第k小的元素存在於 S1,prune away S2 and S3。 else, if |S1| + |S2|  k, then p即為第k小的元素。 else,第k小的元素存在於S3中,prune away S1 and S2。令k’ = (k - |S1| - |S2|),在 S3中找第k’個元素即為解答.

範例 S = {1, 25, 2, 24, 3, 23, 4, 22, 5, 21, 6, 20, 7, 19, 8, 18, 9, 17, 10, 16, 11, 15, 12, 14, 13},找第k小的元素。 Ans [Step 1] [Step 2] 1 25 2 24 3 23 4 22 5 21 6 20 7 19 8 18 9 17 10 16 11 15 12 14 13 1 2 3 24 25 4 5 21 22 23 6 7 8 19 20 9 10 16 17 18 11 12 13 14 15

[Step 5] 利用三個判斷條件以找出第k小的元素 若 k = 11 (搜尋範圍 |S1|) 若 k = 13 (搜尋範圍 |S1|+ |S2|) 若 k = 22 (搜尋範圍 |S3|) 1 2 3 24 25 4 5 21 22 23 6 7 8 19 20 9 10 16 17 18 11 12 13 14 15 1 2 3 24 25 4 5 21 22 23 6 7 8 19 20 9 10 16 17 18 11 12 13 14 15 1 2 3 24 25 4 5 21 22 23 6 7 8 19 20 9 10 16 17 18 11 12 13 14 15 : S1 : S2 : S3

Time complexity At least n/4 elements are pruned away. The problem remaining in step 5 contains at most 3n/4 elements. Time complexity: T(n) = O(n) step 1: O(n) //掃一輪即可得知 step 2: O(n) //有 n/5 組資料,每組資料排序需固定常數時間O(1) step 3: T(n/5) //採遞迴方式找尋,共有 n/5 組 step 4: O(n) //掃一輪即可得知 step 5: T(3n/4) //每次Prune掉至少n/4資料量後,尚有3n/4左右的剩餘資料需遞迴執行 遞迴方程式為T(n) = T(3n/4) + T(n/5) + O(n),採遞迴樹法分析,可得知此演算法的時間複雜度為 O(n)