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
1
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
A. Levitin “Introduction to the Design & Analysis of Algorithms,” 3rd ed., Ch. 1 ©2012
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved. 2
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
A. Levitin “Introduction to the Design & Analysis of Algorithms,” 3rd ed., Ch. 1 ©2012
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved. 3
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
A. Levitin “Introduction to the Design & Analysis of Algorithms,” 3rd ed., Ch. 1 ©2012
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved. 4
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?
A. Levitin “Introduction to the Design & Analysis of Algorithms,” 3rd ed., Ch. 1 ©2012
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved. 5
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
A. Levitin “Introduction to the Design & Analysis of Algorithms,” 3rd ed., Ch. 1 ©2012
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved. 6
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
A. Levitin “Introduction to the Design & Analysis of Algorithms,” 3rd ed., Ch. 1 ©2012
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved. 7
Two main issues related to algorithms
How to design algorithms
How to analyze algorithm efficiency
A. Levitin “Introduction to the Design & Analysis of Algorithms,” 3rd ed., Ch. 1 ©2012
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved. 8
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
A. Levitin “Introduction to the Design & Analysis of Algorithms,” 3rd ed., Ch. 1 ©2012
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved. 9
Analysis of algorithms
How good is the algorithm?
• time efficiency
• space efficiency
Does there exist a better algorithm?
• lower bounds
• optimality
A. Levitin “Introduction to the Design & Analysis of Algorithms,” 3rd ed., Ch. 1 ©2012
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved. 10
Important problem types
sorting
searching
string processing
graph problems
combinatorial problems
geometric problems
numerical problems
A. Levitin “Introduction to the Design & Analysis of Algorithms,” 3rd ed., Ch. 1 ©2012
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved. 11
Fundamental data structures
graph
list
• array tree
• linked list set and dictionary
• string
stack
queue
priority queue
A. Levitin “Introduction to the Design & Analysis of Algorithms,” 3rd ed., Ch. 1 ©2012
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved. 12