課程介紹
演算法準備方法
(以下科目介紹由林立宇老師提供)
學生須對於課堂上所提及的所有觀念,有充分的理解。
不斷地反覆思考,以熟悉各種演算法設計的策略與分析方式。
演算法一科十分注重學生的獨立思考能力。
在理解了上課內容之後,學生將對於各類演算法的分析與策略,有基本的理解。
然而,光是上課聽講將不足以達到學以致用的境界。
如果想利用所學的觀念,來創造出新的演算法並用以解決問題,則必須透過大量的解題訓練。
在做題目的過程中,培養自身的思考能力,如此一來才能真正通透所學內容,徹底掌握演算法的精妙之處。
學生可透過練習課程講義中,列於各個章節末的習題,以達成解題思維訓練的目標。
演算法趨勢分析
在研究所考試中,演算法為全臺所有知名資工系所的重點考試科目之一。
例如以下大學:
- 臺灣大學(資料結構與演算法)
- 交通大學(資料結構與演算法)
- 清華大學(基礎計算機科學)
- 中央大學(資料結構與演算法)
- 成功大學(程式設計)
其中,著名的演算法策略像是 Divide-and-conquer(CH2)與 dynamic programming
(CH3)。
與一些經典的圖形演算法(CH4)皆為各校的考試重點範圍。
另外,演算法時間複雜度分析,亦為所有資工系學生必備的基礎知識(CH1)。
近幾年,各校也越來越重視,學生對於計算理論基礎知識的觀念理解(CH6)。
計算幾何(CH5)的部分,因為相對於其他主題而言,較為獨立並具有其獨特性。
且其涵蓋範圍極廣,使得一般學校在課程安排上,難以有充分的時間介紹其內容。
因此出現在考題中的比例偏低。
除此之外,本課程所提及的章節,皆為各個名校的考試重點。
演算法章節重點
章節名稱 |
重要度 |
Asymptotic notation |
★★★ |
Recurrence relation |
★★★ |
Amortized analysis |
★ |
章節名稱 |
重要度 |
Introduction |
★★★ |
The maximum subarray problem |
★★★ |
Matrix multiplication |
★★★ |
The selection problem |
★★★ |
The closest pair problem |
★ |
章節名稱 |
重要度 |
Introduction |
★★★★ |
The rod cutting problem |
★★★★ |
The knapsack problem |
★★★★★ |
Matrix-chain multiplication |
★★★★★ |
Optimal binary search tree |
★★★★★ |
Longest common subsequences |
★★★★★ |
The KMP algorithm |
★★ |
章節名稱 |
重要度 |
Breadth-first search |
★★★ |
Depth-first search |
★★★★ |
Single-source shortest paths |
★★★★★ |
All-pairs shortest paths |
★★★★★ |
Minimum spanning trees |
★★★★ |
Maximum flow |
★★★★★ |
章節名稱 |
重要度 |
Line segment intersection |
★ |
Convex hull |
★★ |
章節名稱 |
重要度 |
Complexity class |
★★★★★ |
NP-complete problems |
★★★★ |
Approximation algorithms |
★★ |
林立宇老師教學特色
-
以簡潔易懂的例子說明各種演算設計方法的關鍵思維。
-
掌握困難演算法的重點精神,以清晰且簡單的敘述使學生能夠理解各個著名演算法策略背後的核心思想。
-
講學細心,能夠清楚了解學生在學習時容易產生困惑之處,並在課堂上加以提點。
演算法參考用書
- 林立宇編,歷年演算法上課講義
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms.
程逸推薦試聽章節
基礎篇: