Professional Documents
Culture Documents
Introduction
Topics
What is an Algorithm?
Algorithm definition.
Historical Perspective.
Euclid’s Algorithm.
Two descriptions of Euclid’s algorithm.
Other methods for computing gcd(m,n).
Sieve of Eratosthenes.
Important Problem Types.
Fundamentals of Algorithmic Problem Solving.
Assignment.
Why study algorithms?
Two main issues related to algorithms
Algorithm design techniques/strategies
Analysis of algorithms
Important problem types
Fundamental data structures
What is an algorithm?
Recipe, process, method, technique, procedure,
routine,… with following requirements:
1. Finiteness
terminates after a finite number of steps
2. Definiteness
rigorously and unambiguously specified
3. Input
valid inputs are clearly specified
4. Output
can be proved to produce the correct output given a valid input
5. Effectiveness
steps are sufficiently simple and basic
Definition:
algorithm
solve.
To group algorithms according to underlying design
1-7
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
1-8
Other methods for computing gcd(m,n)
1-9
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
1-10
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)
1-11
Fundamentals of Algorithmic Problem Solving
1-12
Slide 1- 13
Understanding the Problem
1-14
Ascertaining the Capabilities of a Computational Device
Approximation Algorithm
1-15
Deciding on Appropriate Data Structures
1-16
Methods of Specifying an Algorithm
Pseudocode
Flowchart
Analyzing an Algorithm
Time efficiency: It indicates how fast the algorithm runs.
1-17
Important problem types
sorting
searching
string processing
A string is a sequence of characters from an alphabet.
graph problems
A graph is a collection of points called vertices, which are connected by
line segments called edges.
combinatorial problems:
Permutations and Combination problems.
geometric problems:
It deals with geometric objects like points, lines, polygons.
numerical problems:
It involves mathematical problems like solving equations, integrals,
functions, etc.
1-18
Fundamental data structures
Linear Data Structures
Arrays
Linked list
Singly Linked List
Doubly Linked List
string
Stack
queue
1-19
Graphs
Graph Representation
Weighted Graphs
Trees
Rooted Trees
Ordered Trees
Binary Trees
Universal Set
Dictionary
1-20
Why study algorithms?
Assignment
1-21