You are on page 1of 21

Chapter 1

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:

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


 Algorithms can be specified in a natural language or a pseudo
code, they can also be implemented as computer programs.
 Among several ways to classify algorithms, the two principal
alternatives are:
 To group algorithms according to types of problem they

solve.
 To group algorithms according to underlying design

techniques they are based upon.


Historical Perspective

 Muhammad ibn Musa al-Khwarizmi – 9th


century mathematician
www.lib.virginia.edu/science/parshall/khwariz
.html
Euclid’s Algorithm : to find the GCD of two numbers
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

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)

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

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

 Understanding the Problem


 Ascertaining the Capabilities of a Computational Device
 Choosing between Exact and Approximate Problem Solving.
 Deciding on Appropriate Data Structures
 Algorithm Design Techniques
 Methods of Specifying an Algorithm
 Proving an Algorithm’s Correctness
 Analyzing an Algorithm
 Coding an Algorithm

1-12
Slide 1- 13
Understanding the Problem

 Understand completely the problem.


 Read the problem’s description.
 An input to an algorithm specifies an instance of the problem the
algorithm solves.
 Range of instances to be specific.

1-14
Ascertaining the Capabilities of a Computational Device

 The vast majority of algorithms in use today are destined to be


programmed for a computer closely resembling the von-
Neumann machine.
 The essence of this architecture is captured by random-access
machine (RAM).

Choosing between Exact and Approximate Problem Solving.


 Exact Algorithm

 Approximation Algorithm

1-15
Deciding on Appropriate Data Structures

 Algorithms + Data Structures= Programs

Algorithm Design Techniques

 An Algorithm Design Technique is a general approach to


solving problems algorithmically that is applicable to a
variety of problems from different solutions.

1-16
Methods of Specifying an Algorithm
 Pseudocode

 Flowchart

Proving an Algorithm’s Correctness


 Mathematical induction method (common technique)

Analyzing an Algorithm
 Time efficiency: It indicates how fast the algorithm runs.

 Space efficiency: It indicates how much extra memory an


algorithm needs.
 Simplicity: Simpler algorithms are easier to understand,
program and use.
 Generality

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

 Paths and Cycles

 Trees
 Rooted Trees

 Ordered Trees

 Binary Trees

 Set and Dictionaries


 Set

 Universal Set

 Dictionary

 Abstract Data Types

1-20
Why study algorithms?
 Assignment

1-21

You might also like