Algorithm II
1. Introduction
WU Xiaokun 吴晓堃
xkun.wu [at] gmail
Simply put, algorithm is the instruction sequence for solving problem.
We can view an algorithm as a tool for solving a well-specified computational problem.
But before talking about algorithm, we need to think about the problem.
One can do nothing based on a vague description.
Proper formulation of an algorithmic problem is the first step.
Or, how to solve the problem?
Sufficient knowledge of design patterns makes the task easier.
Think problem-solving as an iterative procedure:
Quantitative analysis requires an uniform measure.
Rigorous mathematical proof can often be harder than the design itself.
Computational problems, and Solving techniques.
This course is supposed to be taken fun
… in a painful way.
Any problem-solving task can be benefited from this study.
Understand: when would we say a computational problem is hard (to solve on a computer)?
Be able to:
Basically, this is also the structure of this course.
Primary textbook:
Not mandatory but recommended:
Introduction & basic concepts recap:
Major algorithm design techniques:
\mathcal{NP} and PSPACE:
Dealing with intractability:
Invited talk:
Computational Tractability
Asymptotic Order of Growth
Graphs
Optimality
Shortest Paths
Minimum Spanning Tree
Problems:
Recurrence relations
Approaches to Solving Recurrences
Problems:
Principles
Problems:
Max-Flow Equals Min-Cut
Problem:
Application:
Reducibility
\mathcal{P} \ne \mathcal{NP}?
Important NP-Complete Problems
\mathcal{NP} \ne \text{co-}\mathcal{NP}?
\mathcal{P} \ne PSPACE?
PSPACE-complete
Tree Decompositions of Graphs
Greedy Algorithms
Pricing method (Primal-dual method)
Linear Programming and Rounding
Dynamic programming with Rounding
The Landscape of an Optimization Problem
Applications
Random Variables and Their Expectations
Randomized Approximation Algorithm
Randomized Divide and Conquer
Week | Date | Lecture |
---|---|---|
1 | 2022/10/11 | Introduction |
2 | 2022/ | Algorithm Analysis & Graphs |
3 | 2022/ | Greedy Algorithm I |
4 | 2022/ | Greedy Algorithm II |
5 | 2022/ | Divide and Conquer I |
6 | 2022/ | Divide and Conquer II |
7 | 2022/ | Dynamic Programming I |
8 | 2022/ | Dynamic Programming II |
9 | 2022/ | Network Flow I |
10 | 2022/ | Network Flow II |
Week | Date | Lecture |
---|---|---|
11 | 2022/ | Intractability |
12 | 2022/ | PSPACE |
13 | 2022/ | Extending Tractability |
14 | 2022/ | Approximation Algorithms |
15 | 2022/ | Local Search |
16 | 2022/ | Randomized Algorithms |
What motivates you to learn algorithm design & analysis?
What are you expecting to learn from this course?
Have you ever thought of choosing your career in algorithm related positions? If so, in which specific area?