1 / 32

Algorithm Design

Algorithm Design. Nattee Niparnan 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

Download Presentation

Algorithm Design

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Algorithm Design NatteeNiparnan Dept. of Computer Engineering, Chulalongkorn University

  2. The Course • Midterm 40% • Final 40% • Something else 20% • Quiz 10% • Lab 10%

  3. 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

  4. 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

  5. Books : Required • Algorithms, S. Dasgupta, C. Papadimitriou and U. Vazirani, McGraw-Hill, 2008

  6. 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.

  7. 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

  8. Introduction Chapter 0

  9. 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

  10. 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

  11. 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

  12. 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!!

  13. Calculating Fibonacci Sequence • Fibonacci sequence • 1,1,2,3,5,7,8,13,21,34,55,89,144,233,377,610,987,1597,2584

  14. 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!!!

  15. Approach 1 • Array based • DP (linear)

  16. Approach 2 F(9) • Recursive (exponential) F(8) F(7) F(7) F(6) F(6) F(5) … … … …

  17. Approach 3 • Divide and Conquer (logarithmic)

  18. Approach 3 • Find exponential • Divide and Conquer (logarithmic)

  19. Approach 4 • Closed form solution (constant) Golden Ratio

  20. Conclusion • Difference Design  Difference Performance • This class emphasizes on designing “efficient algorithm”

  21. Algorithm Again • It is the essence of the computation

  22. Side Note on Algorithm • Named after a Persian mathematician “Muhammad ibn Musa Khwarizmi” • Wrote book on linear equation • Introduce number 0

  23. Topics Overview Analysis part

  24. Asymptotic Notation • Measurement of “efficiency” of algorithms • How to compare two algorithms • How to predict behavior of the algorithm

  25. Big O analysis • How to determine Big O of some code • Recurrent Relation

  26. NP-Complete • What computer could solve • Efficiently • Inefficiently • The difference between “Efficiency” and “Inefficiency”

  27. Topics Overview Synthesis part

  28. Divide and Conquer • Solve a problem instance by dividing into smaller instance • Based on induction

  29. Dynamic Programming • Reduce redundancy computation • For the case when there are several overlapping subproblem

  30. Greedy Algorithm • Solve the problem by doing the best for the current step • Proof of correctness

  31. Graph Algorithm • Algorithm related to graph structure • Shortest Path • Minimal Spanning Tree

  32. Search • Solve the problem by enumeration • Systematical enumeration • Performance improvement

More Related