演算法的效率分析.

Slides:



Advertisements
Similar presentations
陳旺全醫師主講 健康養生茶飲 明目菊花茶 明目菊花茶 成分:菊花五錢、 500c.c 熱水沖泡 成分:菊花五錢、 500c.c 熱水沖泡 功效:可治療急慢性結膜炎、頭暈 功效:可治療急慢性結膜炎、頭暈 頭痛、口苦、口乾、高血壓 頭痛、口苦、口乾、高血壓.
Advertisements

六大類食物 五穀根莖類 六大類食物 油脂類 蛋魚肉豆類 奶類 蔬菜類 水果類. 五穀根莖類 : 提供熱量 : 部份蛋白質,維生素,礦物質,及膳食纖維 包含麵 ( 及麵包饅頭 ) ,飯類,蕃薯等食物 也就是一般所稱的 " 主食 " ( 蘿蔔不是這一類,是屬於蔬菜類喔! ) 飲食建議吃三到六碗 並推薦攝取全穀類食品.
正確睡午睡精神更好 正確睡午睡 精神更好 可降血壓 增加思考能力 懶懶的冬天加 上星期一又是假日後上班,如果能夠在 中午補個眠,稍微休息一下,對於精神 的提振及下午工作效率都有幫助。但冬 天睡午覺要注意保暖以及水分的補充, 避免受涼或是血液循環不好,造成手或 腿麻痛,注意這些小地方可以讓睡午睡 更健康!
揮別電腦族疲勞症候群 主講人 : 陳潮宗 中醫師. 常有症狀一 起因&症狀: 起因&症狀: 坐姿不正最易引起腰酸背痛、 過度看螢幕則眼睛疲勞酸痛。 治療重點: 治療重點:補固腰腎、明目保睛。
引言 高血壓自我健康管理包含飲食、 運動、 及健康生活型態三大方向。 飲食 是改善高血壓的重要部分, 並提 供飲食方式來改善高血壓。
人事室專題計畫業務報告 人事室 謝明峯 轉 一、專任助理注意事項 計畫案如有聘任專任助理者, 請依據「南 華大學專案助理報到程序單」內容, 將資 料繳交至人事室 ( 請於聘任到職日前繳交, 以免影響到本身權利 ) 。 離職儲金或勞工退休金 依勞工退休金條例相關規定,
山伯與英台在健康書院修業完 成後,一行人逗陣開開心心的 回自己的家鄉 …… 於是開啟了另一段 ~ 新梁祝的故事 ~ 在下 梁山伯 小女子 祝英台 我是 阿成 我是 阿香.
糖尿病的饮食控制 厦门长庚医院张翼翔. 糖尿病 糖尿病的发病率逐年增高 糖尿病的发病率逐年增高 糖尿病对健康和生命的危害 糖尿病对健康和生命的危害 心、脑、肾、神经等 心、脑、肾、神经等 糖尿病的表现和诊断 糖尿病的表现和诊断 糖尿病的治疗 — 终身治疗 糖尿病的治疗 — 终身治疗.
第八章 膳食與營養 第一節 均衡營養與膳食 年 7 月公布新版「每日飲食指南」, 依食物營養特性,分為六大類: 全榖根莖類 蔬菜類水果類 低脂乳品類 油脂與堅果種子類 豆魚肉蛋類 食全十美.
中醫臨床常見養生藥膳 臺 北 市 立 聯 合 醫 院中醫院區 院長 鄭振鴻. 壹、前言 在臺灣地處亞熱帶的氣候,冬季溫暖,夏 季炎熱,雨量多的特性。吃補的概念源自 中國大陸,但生活習性與食物亦有其地域 性,因此針對臺灣常用藥膳的食物與藥物 的性能作用,解析其效用、功能,了解食 物與人的關係,利用食物特性,藥物的效.
青春期 女生可以早在八、九歲, 或晚到十三、四歲才進入 青春期。 男生早的在十、十一歲, 晚到十四、五歲,甚至更 遲才進入青春期。
高職生的早餐飲食習慣之研究 以市立士林高商為例 二年九班 李婷葦 二年九班 卓佳惠 二年九班 郭胤彣 關鍵字:早餐. 飲食習慣. 士林高商.
第八課 路 *課前預習 一 二 三 *題解 *作者介紹 *課文內容 一 、 、 、 *修辭回顧
請愛惜自己 衛生署日前公佈了去年國人的十大 死因統計,惡性腫瘤(癌症)又第 二十度蟬聯冠軍,而且是每四名死 亡人口中,就有一人「因癌而」,
E時代盛宴 健康123年菜發表會 新春新氣象,處於資訊蓬勃E時代的您,是否已構思好如何為自己及家人準備一桌健康、豐盛的年菜?隨著國人健康意識的提升,對年菜訴求也有別於傳統年菜四大特點-高油、高鹽、高糖、低纖,加上其繁瑣的製備過程,對講求速度及效率的E時代族群而言,已不符現今年菜簡單製備、健康需求性。在這距離農曆春節只剩短短二個星期,豐原醫院營養室關心您的健康、滿足您的胃蕾,推出「E時代盛宴-健康123-年菜發表會」,以「一高、二少、三低」的健康原則,利用家中減少烹調油量的鍋具,如:烤箱、電鍋、不沾鍋等,製
生活常規.
雅樂舞基本動作與身體探索 陳玉秀老師主授 【本著作除另有註明外,採取創用CC「姓名標示-非商業性-相同方式分享」台灣3.0版授權釋出】
Course 1 演算法: 效率、分析與量級 Algorithms: Efficiency, Analysis, and Order
治癒肺癌 的妙方.
嘴破怎麼辦? 嘴角或嘴唇內常常破一小傷口的人, 吃東西時真是痛苦萬分; 有的人試著補充維他命C及B群,
基本概論 Basic concepts.
举国上下抗击风雪灾害专刊 温暖行动 灾情告急年关近 万众一心齐抗灾 可歌可泣留千古 温暖行动遍人间 导读提示 阳关雨露出版社
肺臟的藥膳介紹 台中慈濟醫院 中醫部 陳建仲.
位置的表示方法.
說明完後將會有一個小測驗歐! 要認真聽歐!
合理水價之探討 台灣省自來水公司前財務處經理 王禮忠 台灣省自來水公司財務處組長 賴祐.
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
作文选刊 作文之窗
Introduction 基本概念 授課老師:蕭志明
第一章 資料結構導論 1-1 資料結構簡介 1-2 認識程式設計 1-3 演算法效能分析 1-4 物件導向程式設計與Java.
口腔衛生保健 主講者:興中國小 護理師:莊靜華.
男性生殖系統.
算法设计与分析 李清勇 教授 办公室:第九教学楼北201.
计算学科的基本问题 本章首先介绍一个对问题进行抽象的典型实例——哥尼斯堡七桥问题。然后,通过“梵天塔”问题和“停机问题”分别介绍学科中的可计算问题和不可计算问题。从“梵天塔”问题再引出算法复杂性中的难解性问题、P类问题和NP类问题,证比求易算法,P=NP是否成立的问题。
复 习 旧 课 拓 展 知 识 学 习 新 课 课 后 小 结 点击标题吧,会令你受益不浅! 课 后 练 习 自 我 评 价.
请说出牛顿第一定律的内容。.
快乐假期 2010年第6期 总第54期 贝尔芬 主编 暑期作文专刊 《快乐假期》杂志社 出版.
数据结构 第一章 绪论.
老师:如何撰写教研文章? 主讲:石修银 谨以此赠与孜孜追求的老师 谨以此赠与改变人生的老师.
武进区三河口中学欢迎您.
指導老師:楊淑娥 組別:第一組 成員:劉怡萱4a0i0066 吳珮瑜4a0i0070 林秋如4a0i0075 陳婉婷4a0i0076
数据结构(C语言版) Data Structure
依“标”据“本”,命制考题 发表于《数学教学》2006年第9期 (华东师大核心“CN”刊物)
第十一章 真理与价值 主讲人:阎华荣.
今日4版 国内统一刊号:CN01-009第5期 (代号7-2)
12星座 对于星座,你又知道多少呢? 第一刊.
学生培养的过程性评价.
第七章 固 定 资 产.
【本著作除另有註明外,採取創用CC「姓名標示-非商業性-相同方式分享」台灣2.5版授權釋出】
数学通报简介 ——如何写稿及投稿 数学通报 郑亚利 2014年8月.
【本著作除另有註明外,採取創用CC「姓名標示-非商業性-相同方式分享」台灣2.5版授權釋出】
推进《玻璃钢制品工》 国家职业资格证书制度的建设
本期导读: 1版 习 惯 2版 的 十个做人的好习惯 3版 力 4版 量 5版 6版 7版 8版
一年三班 我 愛 早 讀 102/11/11.
行政院國軍退除役官兵輔導委員會 嘉義榮民醫院.
第 1 章 演算法分析.
计算复杂性和算法分析 计算机科学导论第六讲
人生哲理 每一句話都充滿著智慧,值得和朋友們分享、共勉~ <每隔 6 秒,自動換頁 !!>
本著作除另有註明外,採取創用CC「姓名標示-非商業性-相同方式分享」台灣2.5版授權釋出
公立學校教職員退休資遣撫卹條例重點說明 苗栗縣政府人事處編製 主講人:陳處長坤榮 107年5月2日.
第 5 單元:法規的種類與位階關係(二) 1 【本著作除另有註明外,採取創用CC「姓名標示-非商業性-相同方式分享」台灣3.0版授權釋出】
鄧姚文 資料結構 第一章:基本概念 鄧姚文
Week 2: 程式設計概念與 演算法的效能評估
資料結構與演算法 第一章 基本概念 徐熊健 資料結構與演算法 徐熊健.
99高中資訊科選修課程 夥伴學習教師 專業進修研習 進階程式設計--演算法 教學示例與研討
演算法時間複雜度 (The Complexity of Algorithms)
講師:郭育倫 第2章 效能分析 講師:郭育倫
資料結構簡介 綠園.
演算法分析 (Analyzing Algorithms)
臺灣當代小說與電影 授課教師:宋千儀 老師 【本著作除另有註明外,採取創用CC「姓名標示-非商業性-相同方式分享」台灣2.5版授權釋出】
Presentation transcript:

演算法的效率分析

演算法的效率分析 什麼是有效率的演算法?電腦學家為此衡量準則提供了客觀的標準—分析演算法的執行時間和記憶體需求。以時間複雜度或空間複雜度來討論演算法的效率 解決相同的問題,演算法所用的時間複雜度和空間複雜度愈少愈好。 時間複雜度(time complexity):一個程式或演算法所需的執行時間; 空間複雜度(space complexity):一個程式或演算法所需的記憶體空間。

演算法的執行次數 程式1-4 陣列元素加總 int Sum(int data[],int n) { int summation=0; for (int i=0; i<n; i++) summation += data[i]; return summation; } 程式1-4將傳入整數陣列data 中的n個元素 (data[0]~data[n-1]),總加至整數變數summation中傳出。 程式1-5 陣列元素加總並計算所有指令執行的次數 int count = 0; // 全域變數宣告 count++; // 計算宣告 int 指令的執行 int Sum(int data[],int n) { int summation=0; for (int i=0; i<n; i++) { count++; // 計算 for 指令的執行次數 summation += data[i]; count++; // 計算 = 指令的執行次數; } count++; // 計算最後一次 for 指令的執行 count++; // 計算 return 指令的執行 return summation; 在程式1-4中加入一全域變數count,來加總所有指令執行的次數;新的程式將如程式1-5所示。

演算法的執行次數(續) 程式1-6 只保留程式1-5 的主體和加總count 的指令。 程式1-6 計算陣列元素加總所有指令執行的次數 count++; int Sum(int data[],int n) { count++; // 計算宣告 int 指令的執行 for (int i=0; i<n; i++) count += 2 count += 2; } 程式1-6 只保留程式1-5 的主體和加總count 的指令。 此程式的執行總次數為2n+4,其中 for 迴圈每執行一次,count會計數兩次;而迴圈共計有n次,所以for迴圈內即執行2n 次。

演算法複雜度的表示方法:O、Ω 和Θ 假設有兩個演算法都可解決問題P,其輸入資料量為n;演算法 A 的估算執行次數為 4n2+174,演算法 B 的估算執行次數為 n3+5n+6。(見下圖) 在 n>7 後 演算法 A 比 B 好

演算法複雜度的表示方法:O、Ω 和Θ 精確計算演算法的執行步驟或時間的工作過於繁瑣。 電腦處理的是大量的資料。 我們比較關心:資料量大的時候,演算法是否夠好。 精簡的方法分析: 演算法的複雜度:O ,「Big O」「大O」 問題的複雜度:Ω 最佳演算法: Θ

用大O表示時間複雜度 定義:f (n)=O (g (n)) 若且唯若存在兩個正整數c和n0,當nn0時,f (n)  cg (n)。 f(n)指的是演算法的執行時間(步驟),我們希望能找到g(n);只要在nn0後,cg(n)一定會大於或等於f(n),那麼就可以用O(g(n))來表示f(n)。

請注意在上圖中,當n  14 (=n0) 之後,cg(n) 一定會大於或等於f(n)(5n2  4n2+174), 所以O(n2)足以代表4n2+174 。

範例 4n+12 = O(n),因為存在c=5,n0=12,使得n12後,4n+12 5n(或c=6,n0=6,使得n6後,4n+12  6n); 10n+25 = O(n),因為存在c=12,n0=13,使得n13後,10n+25  12n; 8n2+11n+18 = O(n2),因為存在c=9,n0=13,使得n13後,8n2+11n+18  9n2; 6×2n+n2 = O(2n),因為存在c=7,n0=4,使得n4後,6×2n+n2 7×2n;

範例 326 = O(1),因為存在c=327,n0可任取,使得n n0後,326  327×1; 9n2+n+11  O(n),因為找不到適當的c和n0,使得nn0後,9n2+11  cn; 100n3 = O(n4),因為存在c=16,n0=8,使得n8後,100n3 16n4。

以大O表示法分辨演算法的優劣 O(1)稱為常數時間,即不論演法的步驟須需要多少指令,只要不像迴圈般重複執行,皆視為常數時間; O(n)稱為線性時間,取其執行步驟的增加趨勢與n的增加趨勢為線性關係之意; O(n2)為平方時間;依此類推, O(2n)則稱為指數時間。 如此一來,我們會說O(logn)的演算法比O(n)來得有效率,O(n)比O(n2)來得有效率…。

O(2n) O(n2) n≤10 ,大O函數值的變化

O(n2) 10 ≤ n ≤ 100,大O函數值的變化

大O表示函數的優劣順序為: O(1)  O(logn)  O(n)  O(nlogn)  O(n2)  O(n3)  O(2n)

用Ω表示問題的難易程度 大O的符號是為了方便討論「演算法的複雜度」而設計引用的; Ω則不然,它是為了方便討論「問題的難易程度」而設計引用的。其定義如下,假設f, g0: 定義:f (n)=Ω (g (n)) 若且唯若 存在兩個正整數c和n0,當nn0時, f (n)cg (n)。

(a) 4n+12 =(n),因為存在c=1,n0=1,使得n1後,4n+12  n; (b) 10n+25 =(n),因為存在c=10,n0=1,使得n1後,10n+25  10n; (c) 8n2+11n+18 =(n2),因為存在c=1,n0=1,使得n1後,8n2+11n+18  n2; (d) 6×2n+n2 =(2n),因為存在c=1,n0=1,使得n1後,6×2n+n2  1×2n;

範例 (e)326 =(1),因為存在c=1,n0可任取,使得nn0後,326  1×1; (f)9n2+n+11 (n3),因為找不到適當的c和n0,使得nn0後,9n2+11  cn3; (g)100n3 =(n2) =(n) =(1),因為存在c=1,n0=,使得n1後,100n3  n2 n  1。

最佳 (optimal) 演算法 定義:f (n) = θ(g (n)) 若且唯若存在 參個正整數c1、c2和n0,當nn0時, 如果既可找到演算法 A 來解決問題 P,時間複雜度為O(g(n)),且又能証明解決問題 P 的最少代價亦為Ω(g(n));則欲解決P的時間,至多要O(g(n)),至少為Ω(g(n));不可能多於O(g(n)),也不可能少於Ω(g(n))(最多或最少都只是g(n)的常數倍),則演算法A是解決問題P的最佳 (optimal) 演算法。 定義:f (n) = θ(g (n)) 若且唯若存在 參個正整數c1、c2和n0,當nn0時, c1g (n)  f (n)  c2g (n)。

範例 4n+12 = θ(n),因為存在c1=1、c2=5,n0=12,使得n12後,1n  4n+12  5n; 8n2+11n+18 = θ(n2),因為存在c1=1、c2=9,n0=13,使得n13後,1n2  8n2+11n+18  9n2。

練 習

End