# Design and Analysis of Algorithms - PowerPoint PPT Presentation

PPT – Design and Analysis of Algorithms PowerPoint presentation | free to download - id: 74d9c5-NDUwZ

The Adobe Flash plugin is needed to view this content

Get the plugin now

View by Category
Title:

## Design and Analysis of Algorithms

Description:

### Title: Mathematical Induction. Using Induction to Prove Correctness of Algorithms Author: Ioana Last modified by: Ioana Created Date: 1/18/2014 4:51:01 PM – PowerPoint PPT presentation

Number of Views:18
Avg rating:3.0/5.0
Slides: 18
Provided by: Ioa91
Category:
Tags:
Transcript and Presenter's Notes

Title: Design and Analysis of Algorithms

1
Design and Analysis of Algorithms
• 4th Semester
• Computer Engineering
• Spring 2015
• Conf.dr.ing. Ioana Sora
• ioana.sora_at_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
• Aarray1..n of integer
• for i1 to n-1 do
• if AigtAi1
• swap(Ai, Ai1)
• The tests

5, 1, 2, 7, 6
15, 2, 4, 17,16
But it does not work for 3, 2, 1, 5, 4 !
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
• Aarray1..n of integer
• for ln downto 1
• for i1 to l-1 do
• if AigtAi1
• swap(Ai, Ai1)
• How can we know for sure that the algorithm is
correct ? (Other than simply believing the
programming textbooks -))

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

8
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 ?

9
How to learn algorithms ?
http//www.neatorama.com/twaggies/2010/11/07/no-11
2-robcorddry/
10
Kruskals algorithm
Prims algorithm
• Design methods
• Greedy
• Design by Induction
• Divide and Conquer
• Dynamic Programming

Floyds algorithm
Dijkstras algorithm
Tarjans algorithm
11
• 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

12
Course Goals
• Learn to design algorithms that are correct and
efficient
• How do we know that
• an algorithm is correct ? -gt correctness proofs
• an algorithm is efficient ? -gt 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 !

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

14
Textbooks
15
Course Webpage
• All official information related to the Algorithm
Design and Analysis classes
• http//bigfoot.cs.upt.ro/ioana/algo/

16
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

17
• 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