Lecture 1 The role of Algorithms in Computing. Introduction2 1.1 Algorithms Algorithm: 對一個 computational problem 而言,將 輸入轉換為輸出的一連串計算過程,稱為 Algorithm 。 例如,給你一堆數字<

Slides:



Advertisements
Similar presentations
1 生物計算期末作業 暨南大學資訊工程系 2003/05/13. 2 compare f1 f2  只比較兩個檔案 f1 與 f2 ,比完後將結果輸出。 compare directory  以兩兩比對的方式,比對一個目錄下所有檔案的相 似程度。  將相似度很高的檔案做成報表輸出,報表中至少要.
Advertisements

Divide-and-Conquer. 什麼是 divide-and-conquer ? Divide 就是把問題分割 Conquer 則是把答案結合起來.
第 七 章 開放式問句與探究.
布林代數的應用--- 全及項(最小項)和全或項(最大項)展開式
第七章 抽樣與抽樣分配 蒐集統計資料最常見的方式是抽查。這 牽涉到兩個問題: 抽出的樣本是否具有代表性?是否能反應出母體的特徵?
: A-Sequence 星級 : ★★☆☆☆ 題組: Online-judge.uva.es PROBLEM SET Volume CIX 題號: Problem D : A-Sequence 解題者:薛祖淵 解題日期: 2006 年 2 月 21 日 題意:一開始先輸入一個.
:Word Morphing ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10508:word morphing 解題者:楊家豪 解題日期: 2006 年 5 月 21 日 題意: 第一行給你兩個正整數, 第一個代表下面會出現幾個字串,
1 Q10276: Hanoi Tower Troubles Again! 星級 : ★★★ 題組: Online-judge.uva.es PROBLEM SET Volume CII 題號: Q10276: Hanoi Tower Troubles Again! 解題者:薛祖淵 解題日期: 2006.
Section 1.2 Describing Distributions with Numbers 用數字描述分配.
3Com Switch 4500 切VLAN教學.
期末專題 - 吊人頭遊戲 第 35 組 組員 : 電機系 49841XXXX XXX 電機系 49841OOOO OOO.
What is static?. Static? 靜態 ? class Test { static int staticX; int instanceX; public Test(int var1, int var2) { this.staticX = var1; this.instanceX =
指導教授:陳淑媛 學生:李宗叡 李卿輔.  利用下列三種方法 (Edge Detection 、 Local Binary Pattern 、 Structured Local Edge Pattern) 來判斷是否為場景變換,以方便使用者來 找出所要的片段。
: Boxes ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11003: Boxes 解題者:蔡欣燁 解題日期: 2007 年 3 月 19 日.
亂數產生器安全性評估 之統計測試 SEC HW7 姓名:翁玉芬 學號:
Graph V(G 1 )={0, 1, 2, 3, 4, 5, 6, 7, 8, 9} E(G 1 )={(0, 2), (0, 3), (1, 4), (2, 3), (2, 5), (2, 6), (3, 6), (3, 7), (4, 7), (5, 6), (5,
:New Land ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11871: New Land 解題者:施博修 解題日期: 2011 年 6 月 8 日 題意:國王有一個懶兒子,為了勞動兒子,他想了一個 辦法,令他在某天早上開始走路,直到太陽下山前,靠.
: OPENING DOORS ? 題組: Problem Set Archive with Online Judge 題號: 10606: OPENING DOORS 解題者:侯沛彣 解題日期: 2006 年 6 月 11 日 題意: - 某間學校有 N 個學生,每個學生都有自己的衣物櫃.
: ShellSort ★★☆☆☆ 題組: Problem D 題號: 10152: ShellSort 解題者:林一帆 解題日期: 2006 年 4 月 10 日 題意:烏龜王國的烏龜總是一隻一隻疊在一起。唯一改變烏龜位置 的方法為:一隻烏龜爬出他原來的位置,然後往上爬到最上方。給 你一堆烏龜原來排列的順序,以及我們想要的烏龜的排列順序,你.
Chapter 2 聯立線性方程式與矩陣 緒言 線性方程式組 (systems of linear equations) 出現 在多數線性模式 (linear model) 中。根據以往解 題的經驗,讀者們也許已發現方程式的解僅與 該方程式的係數有關,求解的過程也僅與係數 的運算有關,只要係數間的相關位置不改變,
: Problem E - Beverages ★★★☆☆ 題組: Contest Archive with Online Judge 題號: 11060: Problem E - Beverages 解題者:李重儀 解題日期: 2008 年 3 月 4 日 題意: Dilbert 大學剛畢業,他決定要和朋友出去。他有奇怪的嗜好,
Chapter 3 Growth of Functions Asymptotic notation Θ-notation: f(n) = Θ(g(n)) , g(n) is an asymptotically tight bound for f(n) 。 Θ(g(n)) = {f(n)|
STAT0_sampling Random Sampling  母體: Finite population & Infinity population  由一大小為 N 的有限母體中抽出一樣本數為 n 的樣 本,若每一樣本被抽出的機率是一樣的,這樣本稱 為隨機樣本 (random sample)
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
Monte Carlo Simulation Part.2 Metropolis Algorithm Dept. Phys. Tunghai Univ. Numerical Methods C. T. Shih.
第一章 演算法:效率、分析與量級 1.1演算法 1.2發展有效率演算法的重要性 1.3演算法的分析 1.4量級(Order)
Chapter 13 塑模靜態觀點:物件圖 Static View : Object Diagram.
Introduction to Java Programming Lecture 17 Abstract Classes & Interfaces.
:Problem D: Bit-wise Sequence ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10232: Problem D: Bit-wise Sequence 解題者:李濟宇 解題日期: 2006 年 4 月 16.
: The largest Clique ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11324: The largest Clique 解題者:李重儀 解題日期: 2008 年 11 月 24 日 題意: 簡單來說,給你一個 directed.
3-3 使用幾何繪圖工具 Flash 的幾何繪圖工具包括線段工具 (Line Tool) 、橢圓形工具 (Oval Tool) 、多邊星形 工具 (Rectangle Tool) 3 種。這些工具畫出 來的幾何圖形包括了筆畫線條和填色區域, 將它們適當地組合加上有技巧地變形與配 色, 不但比鉛筆工具簡單,
Matlab Assignment Due Assignment 兩個 matlab 程式 : Eigenface : Eigenvector 和 eigenvalue 的應用. Fractal : Affine transform( rotation, translation,
: Happy Number ★ ? 題組: Problem Set Archive with Online Judge 題號: 10591: Happy Number 解題者:陳瀅文 解題日期: 2006 年 6 月 6 日 題意:判斷一個正整數 N 是否為 Happy Number.
: Fast and Easy Data Compressor ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10043: Fast and Easy Data Compressor 解題者:葉貫中 解題日期: 2007 年 3.
: Little Red Riding Hood ★★★☆☆ 題組: Contest Volumes Archive with Online Judge 題號: 11067: Little Red Riding Hood 解題者:陳明凱 解題日期: 2008 年 3 月 14 日 題意:
Chapter 2 Getting Started Insertion Sort: 能有效率地排序小數字的演算法 範例 :
: Problem A : MiniMice ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11411: Problem A : MiniMice 解題者:李重儀 解題日期: 2008 年 9 月 3 日 題意:簡單的說,題目中每一隻老鼠有一個編號.
: Ahoy, Pirates! ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11402: Ahoy, Pirates! 解題者:李重儀 解題日期: 2008 年 8 月 26 日 題意:有一個海盜島有 N 個海盜,他們的編號 (id)
: Count DePrimes ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11408: Count DePrimes 解題者:李育賢 解題日期: 2008 年 9 月 2 日 題意: 題目會給你二個數字 a,b( 2 ≦ a ≦ 5,000,000,a.
短缺,盈餘與均衡. 遊戲規則  老師想出售一些學生喜歡的小食。  老師首先講出價錢,有興趣買的請舉手。
: Multisets and Sequences ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11023: Multisets and Sequences 解題者:葉貫中 解題日期: 2007 年 4 月 24 日 題意:在這個題目中,我們要定義.
公司加入市場的決定. 定義  平均成本 = 總成本 ÷ 生產數量 = 每一單位產量所耗的成本  平均固定成本 = 總固定成本 ÷ 生產數量  平均變動成本 = 總變動成本 ÷ 生產數量.
:Nuts for nuts..Nuts for nuts.. ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 10944:Nuts for nuts.. 解題者:楊家豪 解題日期: 2006 年 2 月 題意: 給定兩個正整數 x,y.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2008.
公用品.  該物品的數量不會因一人的消費而受到 影響,它可以同時地被多人享用。 角色分配  兩位同學當我的助手,負責:  其餘各人是投資者,每人擁有 $100 , 可以投資在兩種資產上。  記錄  計算  協助同學討論.
: Problem G e-Coins ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10306: Problem G e-Coins 解題者:陳瀅文 解題日期: 2006 年 5 月 2 日 題意:給定一個正整數 S (0
: Beautiful Numbers ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11472: Beautiful Numbers 解題者:邱經達 解題日期: 2011 年 5 月 5 日 題意: 若一個 N 進位的數用到該.
Section 4.2 Probability Models 機率模式. 由實驗看機率 實驗前先列出所有可能的實驗結果。 – 擲銅板:正面或反面。 – 擲骰子: 1~6 點。 – 擲骰子兩顆: (1,1),(1,2),(1,3),… 等 36 種。 決定每一個可能的實驗結果發生機率。 – 實驗後所有的實驗結果整理得到。
JAVA 程式設計與資料結構 第二十章 Searching. Sequential Searching Sequential Searching 是最簡單的一種搜尋法,此演 算法可應用在 Array 或是 Linked List 此等資料結構。 Sequential Searching 的 worst-case.
資料結構實習-二.
演算法 8-1 最大數及最小數找法 8-2 排序 8-3 二元搜尋法.
: Expect the Expected ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11427: Expect the Expected 解題者:李重儀 解題日期: 2008 年 9 月 21 日 題意:玩一種遊戲 (a game.
845: Gas Station Numbers ★★★ 題組: Problem Set Archive with Online Judge 題號: 845: Gas Station Numbers. 解題者:張維珊 解題日期: 2006 年 2 月 題意: 將輸入的數字,經過重新排列組合或旋轉數字,得到比原先的數字大,
Chapter 10 m-way 搜尋樹與B-Tree
: Help My Brother ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11033: Help My Brother 解題者: 呂明璁 解題日期: 2007 年 5 月 14 日.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2009.
Teacher : Ing-Jer Huang TA : Chien-Hung Chen 2015/6/30 Course Embedded Systems : Principles and Implementations Weekly Preview Question CH7.1~CH /12/26.
: Wine trading in Gergovia ★★☆☆☆ 題組: Contest Volumes with Online Judge 題號: 11054: Wine trading in Gergovia 解題者:劉洙愷 解題日期: 2008 年 2 月 29 日 題意:在 Gergovia.
:Commandos ★★★☆☆ 題組: Contest Archive with Online Judge 題號: 11463: Commandos 解題者:李重儀 解題日期: 2008 年 8 月 11 日 題意: 題目會給你一個敵營區內總共的建築物數,以及建築物 之間可以互通的路有哪些,並給你起點的建築物和終點.
1 Introduction to Java Programming Lecture 3 Mathematical Operators Spring 2008.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2010.
: SAM I AM ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11419: SAM I AM 解題者:李重儀 解題日期: 2008 年 9 月 11 日 題意: 簡單的說,就是一個長方形的廟裡面有敵人,然 後可以橫的方向開砲或縱向開砲,每次開砲可以.
: Finding Paths in Grid ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11486: Finding Paths in Grid 解題者:李重儀 解題日期: 2008 年 10 月 14 日 題意:給一個 7 個 column.
:Problem E.Stone Game ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10165: Problem E.Stone Game 解題者:李濟宇 解題日期: 2006 年 3 月 26 日 題意: Jack 與 Jim.
:Rings and Glue ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10301: Rings and Glue 解題者:施博修 解題日期: 2011 年 5 月 18 日 題意:小約翰有了個大麻煩,他不小心將 rings.
幼兒行為觀察與記錄 第八章 事件取樣法.
: How many 0's? ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11038: How many 0’s? 解題者:楊鵬宇 解題日期: 2007 年 5 月 15 日 題意:寫下題目給的 m 與 n(m
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
第七章 計算複雜度概論:排序問題 7.1計算複雜度 7.2插入排序與選擇排序 7.3每次比較至多移除一個導致之演算法的下限
Presentation transcript:

Lecture 1 The role of Algorithms in Computing

Introduction2 1.1 Algorithms Algorithm: 對一個 computational problem 而言,將 輸入轉換為輸出的一連串計算過程,稱為 Algorithm 。 例如,給你一堆數字< 31 , 41 , 59 , 26 , 41 , 58 >, 一個排序的演算法可以把這些數字由小到大輸出 成< 26 , 31 , 41 , 41 , 58 , 59 >。

Introduction3 有什麼問題需要演算法? 給定 n 個矩陣 < A 1 , A 2 , … , A n >,要求出他們 的乘積 A 1 A 2 …A n 。由於矩陣乘法具有結合律的特 性,所以有各種合法的相乘順序。例如當 n=4 時, 以下的順序都是合法的: (A 1 (A 2 (A 3 A 4 ))) , (A 1 ((A 2 A 3 )A 4 )) , ((A 1 A 2 )(A 3 A 4 )) , ((A 1 (A 2 A 3 ))A 4 ) ,或 (((A 1 A 2 )A 3 )A 4 ) 。如果這些矩陣都是方形的,那麼 相乘的順序不會影響到計算答案的時間;反之, 則相乘的順序對於時間的影響就會非常大。要嘗 試所有的會花費非常長的時間,在之後會介紹一 個有效率的演算法來解決這個問題。

Introduction4 1.2 Algorithms as a technology 效率:不同的演算法在解決相同問題時在效率上可 能會有相當的差異。這個差異可能遠比硬體或軟 體所造成的影響還要巨大。 例如,在第二章會介紹 insertion sort ,要排序 n 個數 字所花費的時間約為 c 1 n 2 ,其中 c 1 是一個常數。 Merge sort 則要花費約 c 2 nlg n (c 2 為常數 ) 。一般而 言 c 1 會小於 c 2 ,但是常數的影響會遠比 n 還要小。

Introduction5 1.2 Algorithms as a technology 例如: c 1 =2 , c 2 =50 ,電腦 A 每秒鐘可跑 10 9 個指令, 電腦 B 較慢,每秒鐘只能跑 10 7 個指令。 假設 n=10 6 : 在電腦 A 上跑 insertion sort 的時間為 2 · (10 6 ) 2 個指令 10 9 指令 / 秒 在電腦 B 上跑 merge sort 的時間為 50 · 10 6 lg 10 6 個指令 10 7 指令 / 秒 = 2000 秒 ≒ 100 秒

Introduction6 註:當排序的數字個數到達 10 7 時,使用 insertion sort 需要花約 2.3 天的時間,但 merge sort 只需要 20 分鐘。所以當輸入的大小越大時, merge sort 的 優勢就越明顯。

Introduction7 Exercises Problem 1: 你構想了一個新的編碼方式,編碼方式是用一個很聰明的方 式把一段訊息中的任何地方插入亂數產生的字串。基於專利 的關係我們不會在這邊討論字串如何亂數產生以及插入。然 而,為了要驗證,我們必須要寫一個程式來檢查是否編碼過 後的字串真的包含了原始的字串。 給定兩個字串 s 和 t ,你要檢查 s 是否為 t 的 subsequence , 換句話說,就是你要檢查是否可以刪去一些 t 的字元,再把 剩下的字元合併在一起,而得到 s 。

Introduction8 Exercises 輸入:總共有好幾組測資。每一組測資都包含了由數字或英 文字母構成的兩個字串 s 與 t ,中間用一個空白隔開。遇到檔 案結尾 EOF 代表結束。 輸出:對於每一組測資,輸出是否 s 為 t 的 subsequence 。

Introduction9 以下是一個輸出入的實例 : Sample InputSample Output sequence subsequence person compression VERDI vivaVittorioEmanueleReDiItalia caseDoesMatter CaseDoesMatter Yes No Yes No

Introduction10 Exercises Problem 2: 小鮑伯喜歡玩積木。他可以把積木疊成許多不同高度的積木 堆。小鮑伯很開心的告訴他姊姊愛麗絲 : 「你看,我把牆蓋起 來了!」。姊姊反駁說:「才沒有呢,真正的牆應該要有一 樣的高度,你應該讓每堆積木疊得一樣高才行 」。在經過一 番思考後,小鮑伯覺得姊姊是對的,於是他決定要重新堆那 些積木。但是小鮑伯太懶惰了,他想要在移動最少積木的情 況下完成一樣高的目的,你能幫助他嗎?

Introduction11 Exercises 輸入:有好幾組測資。每組測資的一開始是一個整數 n ,代 表小鮑伯疊的積木堆數。接著下一行會包含 n 個整數,分別 代表不同積木堆的高度。你可以假設 1  n  50 以及 1  高度  100 。積木的總數可以被堆數整除,所以我們一定可以堆成 高度一樣的積木堆。當 n=0 時代表輸入結束。 輸出:對於每組測資,先印出測資的編號,如同輸出實例所 示。接著印 ”The minimum number of moves is k.” ,其中 k 代表的是最少需要移動多少積木才能讓所有的積木堆有相同 的高度。在每組測資的輸出之後多印一個空行。

Introduction12 以下是一個輸出入的實例 : Sample InputSample Output Set #1 The minimum number of moves is 5.

Introduction13 Exercises Problem 3: 某個銀行根據可靠線報指出, 在最後一批進來銀行的 N 個 硬幣之中,有一個是假的, 而且重量與其他硬幣不同。 ( 其他真硬幣的重量都相同 ) 。 目前銀行只有一個簡單的天 秤可以用,只能測出左邊或 是右邊的物品誰比較重。

Introduction14 Exercises 為了要檢查假硬幣,銀行員把所有的硬幣從 1 到 N 編號,每 個硬幣都有自己的號碼,跟別的硬幣不重複。之後他們就會 開始量重量,量的時候是把相同數量的硬幣放在兩邊的秤盤 上。每一次的測量都會把硬幣的編號以及結果紀錄下來。請 你寫一個程式來幫助銀行員判斷假硬幣的編號是多少。 輸入:第一行會給一個整數 M ,在一個空行之後會接著 M 組 測資,每組測資都會用一個空行隔開。接下來的每一組測試 資料,一開始會先給兩個整數 N 和 K (中間用空白隔開), N 代表的是硬幣數目 (1  N  100) , K 代表銀行員量了幾次重 量 (1  K  100) 。以下的 2K 行是測量的結果。每兩行是一次的 測量紀錄,其中的第一行會先給一個整數 P i (1  P i  N/2) ,代 表那次測量放在左邊及右邊的硬幣數,接著會有 P i 個整數表 示放在左秤盤的硬幣編號,然後是 P i 個整數表示放在右秤盤 的硬幣編號。所有的數字都用空白隔開。

Introduction15 Exercises 其中測試紀錄的第二行會有三種情況: ’ ’, 或是 ’ = ’ ,代表 測量的結果: –‘<‘ 表示左邊秤盤的硬幣比右邊秤盤的硬幣還輕 –‘>‘ 表示左邊秤盤的硬幣比右邊秤盤的硬幣還重 –‘=‘ 表示左邊秤盤的硬幣跟右邊秤盤的硬幣一樣重 輸出:對於每組測資,如果不能判斷哪個硬幣是假的,就輸 出 0 ,否則就輸出假硬幣的編號。在每組測資的輸出中間用 一個空行隔開。

Introduction16 以下是一個輸出入的實例 : Sample InputSample Output < = = 3