CSC645 – ALGORITHM ANALYSIS &
DESIGN
CHAPTER 1 – INTRODUCTION
Nur Azmina Mohamad Zamani
Edited by Nursyahidah Alias
COURSE OUTCOME
 Understanding the roles of algorithms and data structures
in problem solving.
 Analyzing the fundamentals of algorithm efficiency.
 Constructing analysis on efficiency for recursive and non-
recursive algorithms.
 Understanding the Algorithm Design Techniques (ADTs):
 Brute Force
 Divide-and-Conquer
 Greedy Algorithm
 Dynamic Programming
Chapter Overview
 Introduction to algorithm and data structures.
 Characteristics of algorithms.
 Solving fundamentals problems using pseudocode and
flowchart.
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.
Notion of Algorithm
 The non-ambiguity (clear) requirement for each step of an algorithm cannot
be compromised.
 The range of inputs for which an algorithm works has to be specified
carefully.
 The same algorithm can be represented in several different ways.
 The same problem can be solved using several different algorithms and with
different speed.
Example of Algorithm (1)
ALGORITHM: Calling a friend on the telephone
 Input: The telephone number of your friend.
 Output: None
Steps:
1. Pick up the phone and listen for a dial tone
2. Press each digit of the phone number on the phone
3. If busy, hang up phone, wait 5 minutes, jump to step 2
4. If no one answers, leave a message then hang up
5. If no answering machine, hang up and wait 2 hours, then jump to step 2
6. Talk to friend
7. Hang up phone
Assumptions:
 Step 1 assumes that you live alone and no one else could be on the phone.
 The algorithm assumes the existence of a working phone and active service.
 The algorithm assumes you are not deaf or mute.
 The algorithm assumes a normal corded phone.
Example of Algorithm (2)
ALGORITHM: Going to a friend’s house
How many possible ways?
1) By taxi
 Go to the taxi stand and wait for the taxi.
 Get in the taxi
 Give the address to the driver.
2) By carpool
 Call another friend.
 Pick up the friend.
 Go to the specified address.
3) By bus
 Go to the bus stand and catch the bus number 123.
 Get off at the bus stop near the supermarket.
 Walk about 1km and the house is on the left.
Algorithm Importance
THEORETICAL PRACTICAL
The core of computer science. A practitioner’s toolkit of known
algorithm.
Framework for designing and analyzing
algorithms for new problems.
Algorithm vs Data Structures vs Program
ALGORITHM DATA STRUCTURES PROGRAM
A detailed step by step method
for solving a problem.
A technique of organizing and
storing related data items for
efficient access and
modification.
An implementation of one or
more algorithm.
Represented by pseudocodes or
flowcharts.
Eg. Array List, Linked List,
Stack, Queue, Tree
Represented by programming
languages.
PROGRAM = Algorithm + Data Structures
The way in which the data is organized will have an effect on how the algorithm
performs.
Algorithm Characteristics
FINITENESS
• Terminate
after a
finite
number of
steps
DEFINITENESS
• Precise
definition
of each
step
Input
• Valid input
Output
• Given some
valid input;
produce
correct
output
Effectiveness
• Steps are
sufficiently
simple and
basic
Steps in Solving Computational Problems
Problem definition
Development of a model
Specification of an Algorithm
Designing an Algorithm
Checking the correctness of an Algorithm
Analysis of an Algorithm
Implementation of an Algorithm
Program testing
Documentation
Problem Types in Computer Science
Searching for an element (keyword) in an array or list.
Searching
Sorting elements in an array or list following increasing or decreasing order.
Sorting
Any problem that is related to graph traversal (edges and nodes).
Graph Problem
Mathematical or geometry problem such as distance.
Geometric Problem
Any string manipulation.
String Processing
Related to mathematical combinatorial problem using combination or
permutation.
Combinatorial
Problem
Problems that involve mathematical objects of continuous nature: solving
equations and system equations, computing definite integrals, evaluating
functions, etc.
Numerical Problem
Algorithm Design
• Prove that the algorithm
yields a required result
for every legitimate input
in a finite amount of
time.
• Common technique:
mathematical induction
because algorithm’s
iterations provide a
natural sequence of steps
needed for such proofs.
Proving Algorithm
Correctness
• Pseudocode
• A mixture of a natural
language and
programming language-
like constructs.
• Flowchart
• A method of expressing
an algorithm by a
collection of geometric
shapes containing
descriptions of the
algorithm’s steps.
Specifying an
Algorithm
• A general approach to
solve problems
algorithmically that is
applicable to various
problems from different
areas of computing
Algorithm Design
Technique
Algorithm Design Techniques (ADTs)
Brute Force
Divide-and-
Conquer
Greedy
Technique
Dynamic
Programming
Decrease-
and-Conquer
Iterative
Improvement
Transform-
and-Conquer
Backtracking
Space and
Time
Tradeoffs
Branch and
Bound
Pseudocode Example: 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
Pseudocode Example: Euclid’s Algorithm
(cont.)
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.
OR
while n ≠ 0 do
r m
← mod n
m n
←
n r
←
return m
Flowchart Symbols & Meaning
Flowchart
Example
Reference
 A. Levitin “Introduction to the Design & Analysis of Algorithms,” 3rd ed., Ch.
8 ©2012 Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
EXERCISES

Chapter 1 - Algorithm Analysis & Design 2021

  • 1.
    CSC645 – ALGORITHMANALYSIS & DESIGN CHAPTER 1 – INTRODUCTION Nur Azmina Mohamad Zamani Edited by Nursyahidah Alias
  • 2.
    COURSE OUTCOME  Understandingthe roles of algorithms and data structures in problem solving.  Analyzing the fundamentals of algorithm efficiency.  Constructing analysis on efficiency for recursive and non- recursive algorithms.  Understanding the Algorithm Design Techniques (ADTs):  Brute Force  Divide-and-Conquer  Greedy Algorithm  Dynamic Programming
  • 3.
    Chapter Overview  Introductionto algorithm and data structures.  Characteristics of algorithms.  Solving fundamentals problems using pseudocode and flowchart.
  • 4.
    What is anAlgorithm?  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.
  • 5.
    Notion of Algorithm The non-ambiguity (clear) requirement for each step of an algorithm cannot be compromised.  The range of inputs for which an algorithm works has to be specified carefully.  The same algorithm can be represented in several different ways.  The same problem can be solved using several different algorithms and with different speed.
  • 6.
    Example of Algorithm(1) ALGORITHM: Calling a friend on the telephone  Input: The telephone number of your friend.  Output: None Steps: 1. Pick up the phone and listen for a dial tone 2. Press each digit of the phone number on the phone 3. If busy, hang up phone, wait 5 minutes, jump to step 2 4. If no one answers, leave a message then hang up 5. If no answering machine, hang up and wait 2 hours, then jump to step 2 6. Talk to friend 7. Hang up phone Assumptions:  Step 1 assumes that you live alone and no one else could be on the phone.  The algorithm assumes the existence of a working phone and active service.  The algorithm assumes you are not deaf or mute.  The algorithm assumes a normal corded phone.
  • 7.
    Example of Algorithm(2) ALGORITHM: Going to a friend’s house How many possible ways? 1) By taxi  Go to the taxi stand and wait for the taxi.  Get in the taxi  Give the address to the driver. 2) By carpool  Call another friend.  Pick up the friend.  Go to the specified address. 3) By bus  Go to the bus stand and catch the bus number 123.  Get off at the bus stop near the supermarket.  Walk about 1km and the house is on the left.
  • 8.
    Algorithm Importance THEORETICAL PRACTICAL Thecore of computer science. A practitioner’s toolkit of known algorithm. Framework for designing and analyzing algorithms for new problems.
  • 9.
    Algorithm vs DataStructures vs Program ALGORITHM DATA STRUCTURES PROGRAM A detailed step by step method for solving a problem. A technique of organizing and storing related data items for efficient access and modification. An implementation of one or more algorithm. Represented by pseudocodes or flowcharts. Eg. Array List, Linked List, Stack, Queue, Tree Represented by programming languages. PROGRAM = Algorithm + Data Structures The way in which the data is organized will have an effect on how the algorithm performs.
  • 10.
    Algorithm Characteristics FINITENESS • Terminate aftera finite number of steps DEFINITENESS • Precise definition of each step Input • Valid input Output • Given some valid input; produce correct output Effectiveness • Steps are sufficiently simple and basic
  • 11.
    Steps in SolvingComputational Problems Problem definition Development of a model Specification of an Algorithm Designing an Algorithm Checking the correctness of an Algorithm Analysis of an Algorithm Implementation of an Algorithm Program testing Documentation
  • 12.
    Problem Types inComputer Science Searching for an element (keyword) in an array or list. Searching Sorting elements in an array or list following increasing or decreasing order. Sorting Any problem that is related to graph traversal (edges and nodes). Graph Problem Mathematical or geometry problem such as distance. Geometric Problem Any string manipulation. String Processing Related to mathematical combinatorial problem using combination or permutation. Combinatorial Problem Problems that involve mathematical objects of continuous nature: solving equations and system equations, computing definite integrals, evaluating functions, etc. Numerical Problem
  • 13.
    Algorithm Design • Provethat the algorithm yields a required result for every legitimate input in a finite amount of time. • Common technique: mathematical induction because algorithm’s iterations provide a natural sequence of steps needed for such proofs. Proving Algorithm Correctness • Pseudocode • A mixture of a natural language and programming language- like constructs. • Flowchart • A method of expressing an algorithm by a collection of geometric shapes containing descriptions of the algorithm’s steps. Specifying an Algorithm • A general approach to solve problems algorithmically that is applicable to various problems from different areas of computing Algorithm Design Technique
  • 14.
    Algorithm Design Techniques(ADTs) Brute Force Divide-and- Conquer Greedy Technique Dynamic Programming Decrease- and-Conquer Iterative Improvement Transform- and-Conquer Backtracking Space and Time Tradeoffs Branch and Bound
  • 15.
    Pseudocode Example: Euclid’sAlgorithm 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
  • 16.
    Pseudocode Example: Euclid’sAlgorithm (cont.) 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. OR while n ≠ 0 do r m ← mod n m n ← n r ← return m
  • 17.
  • 18.
  • 19.
    Reference  A. Levitin“Introduction to the Design & Analysis of Algorithms,” 3rd ed., Ch. 8 ©2012 Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
  • 20.

Editor's Notes

  • #4 Instructions = something/someone capable of understanding and following the instructions given. Computer = a human being involved in performing numeric calculations.
  • #7 1. Each algorithm also has a different cost and a different travel time 2. Which is the fastest? Which is the most expensive? Conclusion - there are often many different algorithms to accomplish any given task. Each algorithm has advantages and disadvantages depending on different situations.