the design and analysis of algorithms
DESCRIPTION
The Design and Analysis of Algorithms. by Anany Levitin Lecture notes prepared by Lydia Sinapova, Simpson College. CHAPTER 1: INTRODUCTION. What is an Algorithm Steps in Designing and Implementing an Algorithm Important Problem Types Fundamental Data Structures. ALGORITHM. - PowerPoint PPT PresentationTRANSCRIPT
The Design and Analysis of Algorithms
by Anany Levitin
Lecture notes prepared by Lydia Sinapova, Simpson College
2
CHAPTER 1: INTRODUCTIONCHAPTER 1: INTRODUCTION
What is an Algorithm
Steps in Designing and Implementing an Algorithm
Important Problem Types
Fundamental Data Structures
3
ALGORITHM
A sequence of unambiguous
instructions for solving a
problem, i.e. for obtaining the
required output for any
legitimate input in
a finite amount of time
4
Important points
Non-ambiguityNon-ambiguity
Range of inputsRange of inputs
The same algorithm can be The same algorithm can be represented in different waysrepresented in different ways
Several algorithms for solving Several algorithms for solving the same problemthe same problem
5
gcd(m,n)
while n ≠0 dor ← m mod
n m ← n
n ← rreturn m
1. t ← min (m ,n)
2. if m % t = 0 goto 3,
else goto 4
3. if n % t = 0 return t,
else goto 4
4. t ← t - 15. goto 2
6
Understand the problem
Decide on computational meansExact vs approximate solution
Data structuresAlgorithm design technique
Design an algorithm
Prove correctness
Analyze the algorithm
Code the algorithm
7
What does it mean to understand the problem? What are the problem objects? What are the operations applied to the objects?
Deciding on computational means How the objects would be represented? How the operations would be implemented?
8
Design an algorithm
• Build a computational model of the solving process
Prove correctness
• Correct output for every legitimate input in finite time
• Based on correct math formula
• By induction
9
Analyze the algorithm
Efficiency: time and space
Simplicity
Generality: range of inputs, special cases
Optimality:no other algorithm can do
betterCodingHow the objects and operations in the algorithm are represented in the chosen programming language?
10
Important problem types
Sorting Searching String processing Graph problems Combinatorial problems Geometric problems Numerical problems
11
Fundamental data structures
Linear data structures Array Linked list Stack Queue
Operations: search, delete, insert
Implementation: static, dynamic
12
Non-linear data structures Graphs Trees : connected graph without
cyclesRooted trees
Ordered treesBinary trees
Graph representation: adjacency lists, adjacency matrix Tree representation: as graphs; binary nodes
Fundamental data structures
13
Fundamental data structures
Sets, Bags, Dictionaries Set: unordered collection of distinct
elements
Operations: membership, union, intersection
Representation: bit string; linear structure
Bag: unordered collection, elements may be repeated
Dictionary: a bag with operations search, add, delete
14
Conclusion
Algorithm classificationBy types of problemsBy design technique
Design techniquesa general approach to solving problems