Anda di halaman 1dari 16

Design, and Analysis Algorithm

Module01: Algorithms

Teddy Mantoro
teddy.mantoro@sampoernauniversity.ac.id

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,” 3rd 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
Answers Exercise - 1
1. Al-Khwarizmi (9th century C.E.) was a great Arabic
scholar, most famous for his algebra textbook. In fact,
the word “algebra” is derived from the Arabic title of
this book while the word “algorithm” is derived from a
translation of Al-Khwarizmi’s last name (see, e.g.,
[Knu96, pp. 88-92, 114]).

15
Answers Exercise - 1
2. gcd(31415,14142) = gcd(14142,3131) = gcd(3131,1618) =
gcd(1618,1513) = gcd(1513,105) = gcd(1513,105) = gcd(105,43)
= gcd(43,19) = gcd(19,5) = gcd(5,4) = gcd(4,1) = gcd(1,0) = 1.

To answer the question, we need to compare the number of


divisions the algorithms make on the input given. The number of
divisions made by Euclid’s algorithm is 11 (see above).

The number of divisions made by the consecutive integer


checking algorithm on each of its 14142 iterations is either 1 and
2; hence the total number of multiplications is between 1·14142
and 2·14142. Therefore, Euclid’s algorithm will be between
1·14142/11 ≈ 1300 and 2·14142/11 ≈ 2600 times faster.
16

Anda mungkin juga menyukai