演算法時間複雜度 (The Complexity of Algorithms)

Slides:



Advertisements
Similar presentations
夯实教师教育 办好非师范教育 ---- 以外语专业为例 河北师范大学 李正栓. 1. 坚定不移地实施教师教育 A. 关键词:师范院校 师范院校是以培育师资为目的的教育机构,多属于高等教育 层级。 含 “ 师范大学 ” 或 “ 师范学院 ” 。另外,由师专升为本科的院校 多数更名为 “XX 学院 ”
Advertisements

中医内科 陈良金. 目的要求: 熟悉虚劳的证候特征。 了解虚劳的发病与气血阴阳及五脏的关系。 掌握虚劳和肺痨及一般虚证的区别与联系。 掌握虚劳的治疗要点。 熟悉虚劳各个证型的辨证论治。 了解虚劳的预后及调摄护理。
1 語音下單代表號 請輸入分公司代碼 2 位結束請按#字鍵 統一證券您好 ﹗ 請輸入分公司代碼結束請按#字鍵,如不知分公司代碼請按*號。 請輸入您的帳號後 7 位 結束請按#字鍵 請在聽到干擾音時輸入您的密碼結束請按#字鍵 主選單一覽表 委託下單請按 1 ; 取消下單請按 2 成交回報請按.
人權教育融入教學與 法治教育 彭巧綾 蔡永棠 閱讀理解 六頂思考帽 以概念圖整理閱讀理解 指導學生運用關鍵詞,繪製概 念圖,並分享修正。
义务教育课程标准实验教材 四年级下册 语文园地六 词语盘点 习作 口语交际 我的发现 日积月累 展示台.
被 江 泽 民 残 酷 迫 害 致 死 的 法 轮 功 学 员 李竟春,女,1954年3月16日出生,江西省九江市人。于2000年12月18日到北京证实大法,关押在北京市门头沟看守所遭受非人的迫害。在狱中李竟春绝食抗争被管教骗喝一瓶“可疑的豆浆”后一直咳嗽不断,发烧呕吐,吐出白色有强烈异味液体,于2000年1月4日死亡。
目录 如何职位分析调查表 职位分析的目的与意义 职位调查表内容与要点说明 职位分析注意事项 职位分析调查工作计划.
个人简历 制作 天津民族中专 刘冬.
做 荷 包 的 主 人 第 一 桶 金 督導 張宏仁 財團法人「張老師」基金會 桃園分事務所 督導 張宏仁
第八编 清代文学 清代文学绪论 第一章 清代诗词文 第二章 《长生殿》与《桃花扇》 第三章 《聊斋志异》 第四章 《儒林外史》
Course 1 演算法: 效率、分析與量級 Algorithms: Efficiency, Analysis, and Order
事业单位法人年度报告制度改革 业 务 培 训.
視力不良學(幼)童 篩檢與矯治常見問題 長庚醫院 兒童眼科 楊孟玲 醫師.
轻松应对百变题型——说明文阅读 五年级 语文 赵老师.
基本概論 Basic concepts.
问卷调查法.
二次函数图象特点的应用 结题报告 K-11 班研究性学习小组 李浚滨制作.
第三章 企业主要经济业务核算 学习目的和要求:通过对工业企业的主要经济业务的了解,要求学生掌握、巩固帐户与借贷记帐法的相关知识及其运用,并进一步了解和熟悉会计核算方法。 本章重点与难点问题是:企业在各阶段的业务核算 内容提要:本章首先介绍企业在各不同阶段(企业创立阶段、企业供应阶段、企业生产阶段、企业销售阶段等)的业务内容;然后介绍了各阶段业务核算所需设置的帐户及其帐户的功能与结构;最后举例说明各阶段业务的核算。
明城 微课程研究运用 姓 名:严静华 单 位:佛山市高明区东洲中学 作品名称:《排比的理解与运用》
校本培训 常州市新北区新桥实验小学 金文英 团体活动助人成长 校本培训 常州市新北区新桥实验小学 金文英
2014年造价员资格考试 建设工程造价管理基础知识 徐建元.
教師權益─ 退撫制度變革修法 吳忠泰 退撫制度變革修法電子檔可在全教總網站下載分享
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
Introduction 基本概念 授課老師:蕭志明
第一章 資料結構導論 1-1 資料結構簡介 1-2 認識程式設計 1-3 演算法效能分析 1-4 物件導向程式設計與Java.
【 准 备 上 课 啦 】 心 境 —— 快 乐 源 泉 学习 — 悦于心 聚于魂 化于行.
第七章 无形资产.
《幼儿园模拟教学》(第一章 第二章) 呼伦贝尔学院 教育科学学院 学前教育教研室.
公文及公文处理 学校办公室 姚利民.
广州事业单位面试专项练习 主讲:蔡厚佳 微博:腰果公考菜菜爱做梦 2016年04月29日-05月05日.
(某同学作文选段) 这就是我 大家好,我的名字叫XX,我家在XX,但是小学的时候我在XX学校读书,我现在读书在永固中学,我现在说学校变化,但是我回校读书坐单车,还有学校很大,初中学习练几课,老师有很多,学校学生有很多,但是现在很重要学习,但是我家有很多工叫做,没有那么多时间学习。
資料結構與演算法 課程教學投影片.
第 九 章 搜尋(Search) 課程名稱:資料結構 授課老師:_____________.
Chapter 3 The Fundamentals : Algorithms, the Integers, and Matrices
第1章第3节 量化研究与质化研究 案例1:关于中学思想政治教师专业发展现状和需求的调查研究
布林线及五日均线.
数据结构(C语言版) Data Structure
第十一章 真理与价值 主讲人:阎华荣.
Performance Evaluation
学生培养的过程性评价.
计算机硕士专业基础—C语言 赵海英
第七章 固 定 资 产.
行政院國軍退除役官兵輔導委員會 嘉義榮民醫院.
Course 4 搜尋 Search.
第 1 章 演算法分析.
搜尋資料結構 Search Structures.
计算复杂性和算法分析 计算机科学导论第六讲
C语言 程序设计基础与试验 刘新国、2012年秋.
公立學校教職員退休資遣撫卹條例重點說明 苗栗縣政府人事處編製 主講人:陳處長坤榮 107年5月2日.
Sorting in Linear Time Michael Tsai 2013/5/21.
鄧姚文 資料結構 第一章:基本概念 鄧姚文
鄧姚文 資料結構 第五章:遞迴 鄧姚文
Week 2: 程式設計概念與 演算法的效能評估
資料結構與C++程式設計進階 排序與搜尋 講師:林業峻 CSIE, NTU 6/ 14, 2010.
第1章 绪论 2019/4/16.
資料結構與演算法 第一章 基本概念 徐熊健 資料結構與演算法 徐熊健.
C++语言程序设计 C++语言程序设计 第三章 控制语句 第十一组 C++语言程序设计.
第1章 绪论(二) 教学目标 理解算法的特性及评价标准 掌握算法时间复杂度和空间复杂度的分析方法 1/
資料結構與C++程式設計進階 遞迴(Recursion) 講師:林業峻 CSIE, NTU 6/ 17, 2010.
資料結構簡介 綠園.
演算法的效率分析.
演算法分析 (Analyzing Algorithms)
红利、年金、满期金自动转入聚宝盆,收益有保底,升值空间更大
复杂度和测试数据 吴章昊.
挑戰C++程式語言 ──第9章 函數.
马克思思考题 来自可爱又迷人的26班第3个女生寝室
3.4实际问题与一元一次方程 第七课时 存款问题、数字问题.
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2009年10月1日
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日
105-1 Data Structure Homework 4
Presentation transcript:

演算法時間複雜度 (The Complexity of Algorithms)

演算法效率分析 影響程式執行時間的因素,最簡單的有 演算法(algorithm)是一解決問題的有限步驟 之程序。 機器的速度 演算法的好壞 演算法(algorithm)是一解決問題的有限步驟 之程序。 演算法的好壞,必須做複雜度的分析 (complexity analysis)。 分析演算法的複雜度,必須先求出程式中每 一敘述的執行次數,並加總起來,然後求出 其Big-O。

程式執行時間 例如: 執行時間 = 執行次數 * 每次執行所需的時間。 由於每一敘述所需的時間必須考慮到機器 和編譯器的功能,因此通常只考慮執行的 次數而已。 例如: x=x+1; for (i=1; i <= n; i++) for(i=1; i<=n; i++) x=x+1; for(j=1; j<=n; j++) x=x+1; 1次 n次 n2次

陣列 int sum(int arr[ ], int n) { int i, total=0; for (i=0; i < n; i++) total += arr[i]; return total; } 執行次數 1 n+1 n ________ 2n+3

矩陣相加 假設兩矩陣a, b皆為n*n。 執行次數 void add(int a[ ][ ], int b[ ][ ], int c[ ][ ], int n) { int i, j; for(i=0; i<n; i++) for (j=0; j<n; j++) c[i][j] =a[i][j]+b[i][j]; } 執行次數 1 n+1 n(n+1) n2 ________ 2n2+2n+2

矩陣相乘 void mul(int a[ ][ ], int b[ ][ ], int c[ ][ ], int n) { int i, j, k, sum; for (i=0; i < n; i++) for (j=0; j < n; j++) sum = 0; for (k=0; k < n; k++) sum = sum+a[i][k]*b[k][j]; c[i][j] = sum; } 執行次數 1 n+1 n(n+1) n2 n2(n+1) n3 ___________ 2n3+4n2+2n+2

Big-O 算完程式敘述的執行次數後,通常 利用Big-O來表示此演算法的執行時 間,表示如O(n),亦稱為該程式的 「時間複雜度(time complexity)」。 Big-O取執行次數中最高次方或最大 指數部份的項目即可。 如: 陣列元素相加為2n+3 = O(n) 矩陣相加為2n2+2n+1 = O(n2) 矩陣相乘為2n3+4n2+2n+2 = O(n3) 運用時間複雜度的觀念,我們可以 判斷該程式的執行效率是否良好。 衡量程式效率的方法還有與。

複雜度等級 O(1):常數時間(constant time) O(log n):次線性時間(sub-linear) O(n):線性時間(linear) O(n log n) O(n2):平方時間(quadratic) O(n3):立方時間(cubic) O(2n):指數時間(exponential) O(n!):階乘時間(factorial) 如果n很大時 → 1< log n < n < n log n < n2 < n3 < 2n < n!

複雜度之效率

Example 若ㄧ個程式執行時間是1000n^2+nlogn,求其big-O

複雜度分析 以循序搜尋為例: int search (int data[ ], int target, int n) { int i; for (i=0; i < n; i++) if ( target == data[i]) return[i]; } 最佳次數:當資料在第一筆時,第一次就找 到。 最差次數:當資料不存在或資料在最後一筆時,需要N次。 平均次數: O(n) 通常比較最差次數。

二元搜尋— O(?) binsrch(int A[], int n, int x, int j) { lower = 1; upper = n; while (lower <= upper) mid = (lower + upper) / 2; if (x > A[mid]) lower = mid + 1; else if (x < A[mid]) upper = mid – 1; else { j = mid; return; }

二元搜尋— O(?) Answer ==> O(log n)