ADA 1.1
Introduction
算力不是免費的。
本課程作業速度不到標準,也會被退件。
會有明確的Input與Output
在問題中的其中一個例子
可以類比為,問題的規則(rule)
Each problem must have its rule (遊戲規則)
Computation model(計算模型) = rule(遊戲規則)
The problems with different rules have different hardness levels.
同一個問題可以有不同的規則(rule),而得到不同的難度。
How difficule to solve a problem.
要解決這個問題有多難
To understand how difficult to solve a problem, after understanding how to solve a problem.
這是一個抽象的答案,因為你又該如何定義解決。
怎樣算是“解決”一個問題?
就是給他一個 演算法 ,讓任何 個例(instance) 都輸出正確的結果。
corner case (困難的,特別的,個例)
解決問題的 方法,並且把指令一步一步地寫下來
- 只要能夠清楚的表達出一步一步的指令,都可以叫演算法,Ex. 食譜
- 並不限於code or pseudo code or word
- 步驟要詳細,不是概略的敘述
- 用什麼語言是不用在意的
- 作業因為要比較執行速度,所以助教才會規定要用C/C++
If an algorithm produces a correct output for any instance of the priblem
-> this algotithm "solves" the problem.
How much effort the best algorithm needs to solve any problem instance.
把難度想像成防禦力,把演算法想像成攻擊力。
Alvin Tseng The study group starts here.
Design Step
1. Formulate a problem 提出一個問題
2. Develop an algorithm 開發一個演算法
Analysis Step (IMPORTANT!!!!)
3. Prove the correctness 證明他是正確的
4. Analyze running time/space requirement 分析運算需要的時間空間
要非常詳細的定義,Input and Output
如同前面提到的,難度與規則(comparison-based)有關,所以在設計時必須確立規則
Prove by contradiction (反證法)
反證法最快的方式就是直接假定演算法是錯誤的
關於反證法,記得去看上課影片,老師講解得很好
投影片 page 16
Effort: 定義成花多少次數去做 比較 ,當作評估方式
ex. 冠軍問題
使用擂台法,會比較 n-1 次比較
所以使用擂台法,會有n-1次的比較,但是否存在另外一種演算法,可以有 n-2次的比較呢?
A:答案是不可能的。
原因是什麼呢?
因為有n個人,但只比較 n-2次,等於永遠還是有兩個人是沒有比過輸贏的。
假設有五個數字
1️⃣ 3️⃣ 2️⃣ 4️⃣ 6️⃣
比較 n-2 次是什麼意思? n-2(5-2 = 3)
總共有五個數字,所以我比較3次,有可能找到答案嗎?
first time:
1️⃣ vs 3️⃣,3️⃣比較大, 留下3️⃣
second time:
2️⃣ vs 3️⃣, 3️⃣比較大,留下3️⃣
third time:
3️⃣ vs 4️⃣, 4️⃣ 比較大,留下4️⃣
Answer: 這五個數字中,4️⃣ 是最大的,但事實上最大的數字是6️⃣。所以 n-2 是不可能的。
所以最理想的演算法效率是 n-1
找到一個演算法的最優次數,稱為 Upper bound
證明一個問題的最優次數,稱為 Lower bound
當兩個數值吻合的時候,該數值就可以稱作是問題的難度。
但Lower bound是很難證明的,所以演算法的研究者,主要的工作就是,找到這個問題的難度。
hardness of the problem <~ 研究者一生追尋的目標
所以找不到Lower bound 是很正常的。
但一切的目標為,找到最低的Upper bound和最高的Lower bound。
time vs space
時間 跟 空間 的對抗
THE END
Andy心得:
找尋最高的Lower bound,就像是我們以為沒有問題的程式,
在進入市場後,永遠存在Bug,總是有我們沒有想過的情境存在。
是一生追逐的目標。
Algorithm 演算法
Computation Model 計算模型