320 likes | 461 Vues
This course, offered by the Department of Computer Engineering at Chulalongkorn University, focuses on algorithm design principles and analysis. It includes midterm and final exams, quizzes, and lab assignments, emphasizing online participation. Key topics covered are asymptotic notation, NP-Completeness, divide and conquer, dynamic programming, and greedy algorithms. The curriculum is supported by required and supplemental textbooks. Students will gain hands-on experience through labs focusing on coding in C and solving complex problems efficiently.
E N D
Algorithm Design NatteeNiparnan Dept. of Computer Engineering, Chulalongkorn University
The Course • Midterm 40% • Final 40% • Something else 20% • Quiz 10% • Lab 10%
Yes, we have labs • This year, we introduce lab • You will be required to participate in “online” activities • Writing code (in C language) • Teacher and TA will help you
Topics • Analysis • Asymptotic notation • Big O analysis • NP-Complete • Design • Divide and Conquer • Dynamic Programming • Graph Algorithm • Greedy Algorithm • Search There will be labs for each of these topics
Books : Required • Algorithms, S. Dasgupta, C. Papadimitriou and U. Vazirani, McGraw-Hill, 2008
Books : Supplemental • การวิเคราะห์และออกแบบอัลกอริทึม, สมชาย ประสิทธิ์จูตระกูล, NECTEC, 2544 • Data Structure & Algorithm Analysis, Mark Allen Weiss. • Introduction to Algorithms 2nd edition, T. Cormen, C. Leiserson, R. Rivest, C. Stein, MIT Press & McGraw-Hill, 2001. • Introduction to Algorithms: A Creative Approach, UdiManber.
Web • Webboard • http://www.cp.eng.chula.ac.th/webboard/viewforum.php?f=18 • Lab • http://www.nattee.net/teaching/ • You can also find my slides there
Introduction Chapter 0
What is an algorithm? • A precise instruction based on elementary operation • Which takes something as an input and process it to some output • Usually to solve some problems
What is Problem? • A task with precise description of admissible input • and the “property” of the desired output • E.g., GCD • Given two positive integers (input) • Determine GCD of the given integers • (express the property of the desired output) • GCD is well defined
Problem Instance • Determining GCD is a problem • How many actual problems? • GCD of 1,2 ? • GCD of 234,42? • ??? • Problem instance • A problem with a specific input • E.g., find a GCD of 42 and 14
Purpose of this class • “how to design an algorithm for given problems” • Analysis • Synthesis emphasized…. • Correctness • For any instances, it must produce appropriate output • Efficient!!
Calculating Fibonacci Sequence • Fibonacci sequence • 1,1,2,3,5,7,8,13,21,34,55,89,144,233,377,610,987,1597,2584
The Problem • Input: • a positive number N • Output: • Fn (the nth Fibonacci Number) • Example instances • Ex. 1: N = 10 • Ex. 2: N = 15 • Ex. 3: N = 0 N = -4 is not an instances of this problem!!!
Approach 1 • Array based • DP (linear)
Approach 2 F(9) • Recursive (exponential) F(8) F(7) F(7) F(6) F(6) F(5) … … … …
Approach 3 • Divide and Conquer (logarithmic)
Approach 3 • Find exponential • Divide and Conquer (logarithmic)
Approach 4 • Closed form solution (constant) Golden Ratio
Conclusion • Difference Design Difference Performance • This class emphasizes on designing “efficient algorithm”
Algorithm Again • It is the essence of the computation
Side Note on Algorithm • Named after a Persian mathematician “Muhammad ibn Musa Khwarizmi” • Wrote book on linear equation • Introduce number 0
Topics Overview Analysis part
Asymptotic Notation • Measurement of “efficiency” of algorithms • How to compare two algorithms • How to predict behavior of the algorithm
Big O analysis • How to determine Big O of some code • Recurrent Relation
NP-Complete • What computer could solve • Efficiently • Inefficiently • The difference between “Efficiency” and “Inefficiency”
Topics Overview Synthesis part
Divide and Conquer • Solve a problem instance by dividing into smaller instance • Based on induction
Dynamic Programming • Reduce redundancy computation • For the case when there are several overlapping subproblem
Greedy Algorithm • Solve the problem by doing the best for the current step • Proof of correctness
Graph Algorithm • Algorithm related to graph structure • Shortest Path • Minimal Spanning Tree
Search • Solve the problem by enumeration • Systematical enumeration • Performance improvement