課程專區

Course

演算法 Algorithms

課程大綱

  • 演算法 Algorithms

課程目標

The study of algorithms is at the heart of the computer science. This course focuses on fundamental results in this area, including the unifying principles and underlying concepts of algorithm design and analysis.
We expect everyone to be comfortable reading, even writing, proofs. Several programming assignments will be given to embody the ideas. Moreover, we hope that everyone can learn general problem-solving techniques.
Intended audience:
1. who are interested in computer science
2. who are computing something
3. who are learning problem-solving techniques 


課程綱要

主題
內容綱要
Introduction

Stable matching and some representative problems 

Basics of algorithm analysis 

Asymptotic order of growth, case study on stable matching 

Graphs 

Connectivity, traversal, bipartiteness testing, topological sorting 

Greedy algorithms 

Interval scheduling, shortest paths, minimum spanning tree, (Huffman codes) 

Divide and conquer 

Mergesort, recurrence relations, counting inversions, finding the closest pair of points, (convolutions & FFT) 

Dynamic programming 

Weighted interval scheduling, memoization/iteration, segented least squares, subset sums & Knapsacks, RNA secondary structure, sequence alignment, shortest paths 

Network flow 

Maximum-flow and min-cut, bipartite matching, airline scheduling 

NP and computational intractability 

Polynomial-time reductions, satisfiability, NP, NP-completeness, graph coloring 

PSPACE 

Optional 

Approximation algorithms 

Optional 

Local search 

 

Randomized algorithms 

Optional 

Algorithms that run forever 

Optional 


課程用書

§ Required text
J. Kleinberg and E. Tardos, Algorithm Design, Addison Wesley, 2006.
(J. Kleinberg, 20 Best Brains under 40, Discover Magazine, 2008)
§ Reference book
S. Dasgupta, C. Papadimitriou, and U. Vazirani, Algorithms, McGraw-Hill, 2007.


評分標準

項目
百分比
Homework assignments
15%
Programming assignments
10%
Projects
25%
Two open book in-class tests
25%+25%

 


上一頁
TOP