Presentation is loading. Please wait.

Presentation is loading. Please wait.

Design and Analysis of Algorithms 4 th Semester Computer Engineering Spring 2016 Conf.dr.ing. Ioana Ṣ ora

Similar presentations


Presentation on theme: "Design and Analysis of Algorithms 4 th Semester Computer Engineering Spring 2016 Conf.dr.ing. Ioana Ṣ ora"— Presentation transcript:

1 Design and Analysis of Algorithms 4 th Semester Computer Engineering Spring 2016 Conf.dr.ing. Ioana Ṣ ora ioana.sora@cs.upt.ro

2 design algorithms that are correct and efficient Our goal:

3 The Need for Correctness Much too often, algorithms are designed in an ad-hoc manner and “validated” through testing on a few particular data sets …

4 Example of a “sorting algorithm” The algorithm: A:array[1..n] of integer for i=1 to n-1 do if A[i]>A[i+1] swap(A[i], A[i+1]) The “tests”: But it does not work for 3, 2, 1, 5, 4 ! 5, 1, 2, 7, 6 15, 2, 4, 17,16

5 The Need for Correctness Much too often, algorithms are designed in an ad-hoc manner and “validated” through testing on a few particular data sets … The fact that an algorithm passed a number of tests on certain data sets DOES NOT guarantee that the algorithm is correct The fact that an algorithm fails a test on ONE data set proves that it is NOT correct

6 The Bubblesort Algorithm A:array[1..n] of integer for lim:=n downto 2 for i:=1 to lim-1 do if A[i]>A[i+1] swap(A[i], A[i+1]) How can we know for sure that the algorithm is correct ? (Other than simply believing the programming textbooks ;-)) –….we will learn this later in this course !

7 Now that we have a correct algorithm … Implement it Run the program and extensively test it with arrays of 10 numbers Be happy that everything is fine But: Run the program on an array of 10000 numbers … Is it necessary to implement an algorithm to see that it takes too long for big sizes or can we predict this ?

8 Analyzing Algorithms We need methods and metrics to analyze algorithms for: –Correctness Methods for proving correctness –Efficiency Time complexity, Asymptotic analysis

9 Designing Algorithms Ok, so you will know (will learn) how to analyze a given algorithm. But where do these algorithms come from ? –Clever people already designed a plethora of solutions (algorithms) for different problems and we find them in textbooks, internet, etc. –But how will you design solutions for new problems ?

10 How to learn algorithms ? http://www.neatorama.com/twaggies/2010/11/07/no-112-robcorddry/

11 Prim’s algorithm Dijkstra’s algorithm Tarjan’s algorithm Floyd’s algorithm Kruskal’s algorithm Design methods: Greedy Design by Induction Divide and Conquer Dynamic Programming

12 What about data structures ? Fundamental data structures: –Model fundamental data lists, queues, graphs Special data structures: –Created to optimize a specific (set of) operation(s) for a specific context Search trees, balanced trees Optimal trees Disjoint sets

13 Course Goals Learn to design algorithms that are correct and efficient –How do we know that: an algorithm is correct ? -> correctness proofs an algorithm is efficient ? -> analysis of algorithms (time complexity) –How to design solutions for new problems ? Learning general techniques for design Studying a set of well-known algorithms, to serve as examples of success stories for applying general design techniques Become aware that good algorithms are key parts of software engineering practice !

14 Course Schedule Review: Analysis Data structures: Search Trees, Balanced trees, Augmented data structures, Graphs Proving Correctness of Algorithms. Induction Design of Algorithms by Induction Dynamic Programming Great algorithms in real life problems: –Data compression –Search engines

15 Textbooks [CLRS] [Unlocked] [Manber] [McCormick]

16 Course Webpage All official information related to the Algorithm Design and Analysis classes: http://staff.cs.upt.ro/~ioana/algo/

17 Lab Assignments Comprise different types of exercises: –Questions - to be solved with pen on paper –Simple implementation problems - implement something that was described in the course –Algorithm design problems This kind of assignments require to: –Describe the proposed algorithm –Analyze your algorithm (prove correctness and efficiency) –Implement the algorithm –Tool projects Complex projects containing also a part of algorithm design and implementation They are optional, but: in order to get a 10 for the lab activity, you have to do at least one tool project

18 Examination and Grading Final grade = 2/3 final written exam + 1/3 work during the semester Written exam: – Questions and Algorithm design problems (such as these the lab description above) Work during the semester: –Lab assignments –Lab quizzes –Tool project (for 10) Optional bonus points: for exceptional activity = doing more than one optional tool project during the semester, you can gain extra-points to the grade of your final written exam


Download ppt "Design and Analysis of Algorithms 4 th Semester Computer Engineering Spring 2016 Conf.dr.ing. Ioana Ṣ ora"

Similar presentations


Ads by Google