Computer programming, Discrete mathematics, and Data structures
課程概述:
Study design, analysis, correctness proof, and implementation of algorithms for solving problems by computers. Learn strategies for solving problems, techniques for designing and analyzing algorithms, and details for efficient implementations of algorithms in computers.
學習目標:
1. Formulate applications as problems solvable by computers.
2. Design efficient algorithms for solving problems.
3. Prove the correctness of an algorithm.
4. Analyze the time and space complexity of an algorithms.
5. Efficient implementations of algorithms as programs in computers.
教科書:
自編教材 Introduction to Algorithms, Cormen, Thomas H., Leiserson, Charles E., Rivest, Ronald L., https://www.tenlong.com.tw/products/9780262046305?list_name=srh ISBN : 026204630X
課程大綱
分配時數
核心能力
備註
單元主題
內容綱要
講授
示範
隨堂作業
其他
Lecture 1
Course Introduction
3
1.11.21.32.12.23.13.24.14.24.34.4
Lecture 2
Introduction to basic data structures
3
1.11.21.32.12.23.13.24.14.24.34.4
Lecture 3
Complexity Analysis:
1. Model of computation
2. Worst-case and average-case analysis
3. Big-O Notation
3
1.11.21.32.12.23.13.24.14.24.34.4
Lecture 4
Complexity Analysis:
4. Running time calculation
5. Iteration and Integration
6. Recursion and recurrence equations
3
1.11.21.32.12.23.13.24.14.24.34.4
Lecture 5
To demonstrate how divide-and-conquer is used to solve problems, and how to analyze the time and stack complexity of recursive programs:
1. Mergesort, Quicksort, divide and conquer, and recursion
2. Developing recurrence equations for recursive programs
3
1.11.21.32.12.23.13.24.14.24.34.4
Lecture 6
To demonstrate how divide-and-conquer is used to solve problems, and how to analyze the time and stack complexity of recursive programs:
3. Techniques for solving recurrence equations
4. Divide-and-conquer for computational geometry
3
1.11.21.32.12.23.13.24.14.24.34.4
Lecture 7
To demonstrate how incremental insertion is used to solve problems, and counting techniques for analyzing incremental insertion.
1. Introduction Incremental Insertion
2. Incremental insertion for sorting and computational geometry
3. Counting techniques for analyzing increment insertion
3
1.11.21.32.12.23.13.24.14.24.34.4
Lecture 8
To demonstrate how to prove nontrivial lower bounds for comparison sort and geometric problems.
1. Decision tree and lower bound for comparison sort
2. Countsort and Radixsort
Greedy algorithms, amortized analysis :
5. Knapsack problem
6. Task scheduling
7. Greedy used as a heuristic for finding “good” solutions
3
1.11.21.32.12.23.13.24.14.24.34.4
Lecture 12
Graph Search and Connectivity :
1. Representations and Basics of Graphs
2. Graph search: DFS, BFS, and PFS
3. DFS and Topological Sort
4. DFS for computing strongly connected components
5. DFS for computing biconnected components, bipartite matching
3
1.11.21.32.12.23.13.24.14.24.34.4
Lecture 13
Minimum Spanning Trees:
1. Greedy Choice Theorem
2. Kruskal’s Algorithm
3. Data structures for disjoint sets
4. Prim’s Algorithm
3
1.11.21.32.12.23.13.24.14.24.34.4
Lecture 14
Single-Source shortest paths :
i. Single-source shortest paths in weighted graphs
ii. Shortest-Path Problems
iii. Properties of Shortest Paths, Relaxation
iv. Dijkstra’s Algorithm
v. Bellman-Ford Algorithm
vi. Shortest-Paths in DAGs
3
1.11.21.32.12.23.13.24.14.24.34.4
Lecture 15
All-Pair Shortest Paths
i. Recursive formulation of all-pairs shortest paths
ii. Shortest paths and matrix multiplication
iii. Floyd-Warshall Algorithm
Johnson’s Algorithm for Sparse Graphs
3
1.11.21.32.12.23.13.24.14.24.34.4
Lecture 16
P, NP, and NP-Complete :
1. Class P and NP
2. NP algorithms
3
1.11.21.32.12.23.13.24.14.24.34.4
Lecture 17
P, NP, and NP-Complete :
3. NP-Complete
4. Approximation Algorithms
This course will introduce several classical problems and well-known algorithms. Also, algorithms are the core to many sub-fields in Information Engineering.