Design, and Analysis Algorithm
Module01: Algorithms
Teddy Mantoro
[email protected]
Source: Levitin “Introduction to the Design & Analysis of Algorithms,” 3 rd ed., Ch. 1 ©2012 Pearson Education, Inc. Upper Saddle River, NJ.
What is an algorithm?
An algorithm is a sequence of unambiguous instructions for
solving a problem, i.e., for obtaining a required output for
any legitimate input in a finite amount of time.
problem
algorithm
input “computer” output
Levitin “Introduction to the Design & Analysis of Algorithms,” 3 rd ed., Ch. 1 ©2012 Pearson Education, Inc. Upper Saddle River, NJ.
Euclid’s Algorithm
Problem: Find gcd(m,n), the greatest common divisor of two
nonnegative, not both zero integers m and n
Examples: gcd(60,24) = 12, gcd(60,0) = 60, gcd(0,0) = ?
Euclid’s algorithm is based on repeated application of equality
gcd(m,n) = gcd(n, m mod n)
until the second number becomes 0, which makes the
problem
trivial.
Example: gcd(60,24) = gcd(24,12) = gcd(12,0) = 12
3
Two descriptions of Euclid’s algorithm
Step 1 If n = 0, return m and stop; otherwise go to Step 2
Step 2 Divide m by n and assign the value fo the remainder to r
Step 3 Assign the value of n to m and the value of r to n. Go to
Step 1.
while n ≠ 0 do
r ← m mod n
m← n
n←r
return m
4
Other methods for computing gcd(m,n)
Consecutive integer checking algorithm
Step 1 Assign the value of min{m,n} to t
Step 2 Divide m by t. If the remainder is 0, go to Step 3;
otherwise, go to Step 4
Step 3 Divide n by t. If the remainder is 0, return t and stop;
otherwise, go to Step 4
Step 4 Decrease t by 1 and go to Step 2
5
Other methods for gcd(m,n) [cont.]
Middle-school procedure
Step 1 Find the prime factorization of m
Step 2 Find the prime factorization of n
Step 3 Find all the common prime factors
Step 4 Compute the product of all the common prime
factors
and return it as gcd(m,n)
Is this an algorithm?
6
Sieve of Eratosthenes
Input: Integer n ≥ 2
Output: List of primes less than or equal to n
for p ← 2 to n do A[p] ← p
for p ← 2 to n do
if A[p] 0 //p hasn’t been previously eliminated from the
list
j ← p* p
while j ≤ n do
A[j] ← 0 //mark element as eliminated
j←j+p
Example: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
7
Why study algorithms?
Theoretical importance
the core of computer science
Practical importance
A practitioner’s toolkit of known algorithms
Framework for designing and analyzing algorithms for new
problems
8
Two main issues related to algorithms
How to design algorithms
How to analyze algorithm efficiency
9
Algorithm design techniques/strategies
Brute force Greedy approach
Divide and conquer Dynamic programming
Decrease and conquer Iterative improvement
Transform and conquer Backtracking
Space and time tradeoffs Branch and bound
10
Analysis of algorithms
How good is the algorithm?
time efficiency
space efficiency
Does there exist a better algorithm?
lower bounds
optimality
11
Important problem types
sorting
searching
string processing
graph problems
combinatorial problems
geometric problems
numerical problems
12
Fundamental data structures
(From Data Structure Class)
list graph
array tree
linked list set and dictionary
string
stack
queue
priority queue
13
Exercise - 1
1. Design an algorithm to find gcd(31415, 14142) by
applying Euclid’s algorithm. Estimate how many times
faster it will be to find gcd(31415, 14142) by Euclid’s
algorithm compared with the algorithm based on
checking consecutive integers from min{m,n} down to
gcd(m,n).
2. Design an algorithm to find all the common elements in
two sorted lists of numbers. For example, for the lists 2,
5, 5, 5 and 2, 2, 3, 5, 5, 7, the output should be 2, 5, 5.
What is the maximum number of comparisons your
algorithm makes if the lengths of the two given lists are
m and n respectively?
14