SlideShare a Scribd company logo
Unit 2
Algorithm
Things To Be Discussed In This Unit
• Program Design
• Concept and Definition
• Design of algorithm
• Characteristic of algorithm
• Big O notation
Ashim Lamichhane 2
Learning Objectives
• Understand the type of problem that will be covered in this class
• Recognize some problems for which sophisticated algorithms might not be
necessary.
• Question if your solution technique is an efficient one? Any room for
optimization?
Ashim Lamichhane 3
Program Design
• Involves taking the specification and designing solutions, the designer needs to
adopt a design strategy.
• Solution Strategy should work correctly in all conditions
• A large program should be divided into small modules and sub modules.
• Other important criteria by which a program can be judged are execution time and
storage requirement
Ashim Lamichhane 4
Algorithms
• The term ’algorithm’ refers to the sequence of instructions that must be followed
to solve a problem.
• Logical representation of the instructions which should be executed to perform a
meaningful task.
• Algorithms are generally created independent of underlying languages, i.e. an
algorithm can be implemented in more than one programming language.
Ashim Lamichhane 5
An algorithm has certain characteristics
• Each instruction should be unique and concise.
• Each instruction should be relative in nature and should not be repeated infinitely
• Repetition of same task(s) should be avoided.
• The result should be available to the user after algorithm terminates.
Ashim Lamichhane 6
NOTE:
• After an algorithm has been designed, its efficiency must be analyzed. i.e CPU time
and memory
• Memory space and running time should be taken care of.
• The importance of efficiency of an algorithm is in the correctness, i.e does it
always produce the correct result, and program complexity which considers
both the difficulty of implementing an algorithm along with its efficiency
Ashim Lamichhane 7
Properties of an Algorithm
• Input: A number of quantities are provided to an algorithm initially before the algorithm
begins. These quantities are inputs which are processed by the algorithm.
• Definiteness: Each step must be clear and unambiguous.
• Effectiveness: Each step must be carried out in finite time.
• Finiteness: Algorithms must terminate after finite time or step
• Output: An algorithm must have output.
• Correctness: Correct set of output values must be produced from the each set of inputs.
Ashim Lamichhane 8
Write an algorithm to find the greatest number among three numbers
Step 1: Read three numbers and store them in X, Y and Z
Step 2: Compare X and Y. if X is greater than Y then go to step 5 else go to step 3
Step 3: Compare Y and Z. if Y is greater than Z then print “Y is greatest” and go to step 7
otherwise go to step 4
Step 4: Print “Z is greatest” and go to step 7
Step 5: Compare X and Z. if X is greater than Z then print “X is greatest” and go to step 7
otherwise go to step 6
Step 6: Print “Z is greatest” and go to step 7
Step 7: Stop
Ashim Lamichhane 9
Different Approaches To Designing An Algorithm
• A complex system may be divided into smaller units called modules.
• The advantage of modularity is that it focuses on specific module.
• Modularity enhances design clarity, which in turn eases implementation,
debugging, testing, documenting and maintenance of the project.
• To design a hierarchy of a system there are two possible approaches
• Top-down approach
• Bottom-up approach
Ashim Lamichhane 10
Top-Down Approach
• How it is done?
• Identify the major components of the system,
• decompose them into their lower-level components and
• Iterate until the desired level of module complexity is achieved.
• It basically starts with the big picture. It breaks down from there into smaller
segments.
• Top-down design method takes the form of stepwise refinement.
Ashim Lamichhane 11
Bottom-Up Approach
• A bottom-up approach is the piecing together of systems to give rise to more
complex systems
• Bottom-up method works with layers of abstraction.
• Elements are then linked together to form larger subsystems, which then in turn
are linked, sometimes in many levels, until a complete top-level system is formed.
• This strategy often resembles a "seed" model, by which the beginnings are small
but eventually grow in complexity and completeness.
Ashim Lamichhane 12
Top-Down versus Bottom-Up Approach
• The top-down approach, however, is often useful way to better document a
design.
• The design activity should not be constrained to proceed according to a fixed
pattern but should be a blend of top-down and bottom-up approaches
Ashim Lamichhane 13
Complexity
• When we talk of complexity in context of computers, we call it computational
complexity.
• Computational complexity is a characterization of the time or space requirements
for solving a problem by a particular algorithm.
• Lesser the complexity better an algorithm.
Ashim Lamichhane 14
Complexity
• Given a particular problem, let ’n’ denote its size. The time required of a specific
algorithm for solving this problem is expressed by a function:
f : R->R
• Such that, f(n) is the largest amount of time needed by the algorithm to solve the
problem of size n.
• Function ‘f’ is usually called the time complexity function.
• Thus we conclude that the analysis of the program requires two main
considerations:
• Time Complexity (time required for completion)
• Space Complexity (memory required for completion)
Ashim Lamichhane 15
Time Complexity
• While measuring the time complexity of an algorithm, we concentrate on
developing only the frequency count for all key statements
(statements that are important and are the basic instructions of an algorithm)
• This is because, it is often difficult to get reliable timing figure because of clock
limitations and the multiprogramming or the sharing environment.
Ashim Lamichhane 16
Algorithm A
• In an algorithm A we may find that the statement a=a+1 is
independent and is not contained within any loop.
• Therefore, the number of times this shall be executed is 1.
• We say that the frequency count of an algorithm A is 1.
Ashim Lamichhane 17
Algorithm B
• In this algorithm, i.e. B, the key statement is the assignment operation a=a+1.
• Because this statement is contained within a loop, the number of times it is
executed is n, as the loop runs for n times.
• The frequency count for this algorithm is n.
Ashim Lamichhane 18
Algorithm C
• The frequency count for the statement a=a+1 is n2 as the inner loop runs n times,
each time the outer loop runs, the inner loop also runs for n times.
• If an algorithm perform f(n) basic operations when the size of its input is n, then its
total running time will be cf(n), where c is a constant that depends upon the
algorithm, on the way it is programmed, and on the way the
computer is used, but c does not depend on the size of the input
Ashim Lamichhane 19
Space Complexity
• Space complexity is essentially the number of memory cells which an algorithm needs.
• A good algorithm keeps this number as small as possible, too.
• There is often a time-space-tradeoff involved in a problem, that is, it cannot be solved with few
computing time and low memory consumption.
• Space complexity is measured with respect to the input size for a given instance of a problem.
Ashim Lamichhane 20
Naïve Algorithm Vs Efficient Algorithm
Ashim Lamichhane 21
Ex 1: Greatest Common Divisor
• DEFINITION:
• For integers, a and b, their greatest common divisor or gcd(a,b) is the largest integer d so
that d divides both a and b
• Compute GCD
• Input: Integers a,b ≥0
• Output: gcd(a,b)
• Ex: Run on large numbers like
gcd(3198848,1653264)
Ashim Lamichhane 22
Function NaiveGCD(a,b)
• PROBLEMS:
• Takes too much time to complete
• Not an optimal solution
Ashim Lamichhane 23
Best=0
For d from 1 to a+b:
if d/a and d/b:
best=d
return best
Function efficientGCD(a,b)
• Lemma
• Let a’ be the remainder when a is divided by b, then
gcd(a,b)=gcd(a’,b)=gcd(b,a’)
• So what is gcd(357,234)?
Ashim Lamichhane 24
If b=0:
return a
a’ = the remainder when a is divided by b
return efficientGCD(b,a’)
Example
Summary of naïve vs efficient algorithms
• Naïve algorithm is too slow
• The correct algorithm is much better
• Finding the correct algorithm requires knowing something interesting about the
problem
Ashim Lamichhane 25
Big O notation
• To be continued on next slide…
Ashim Lamichhane 26

More Related Content

What's hot (20)

Data structure and algorithm using java
Data structure and algorithm using java
Narayan Sau
 
Python Exception Handling
Python Exception Handling
Megha V
 
Algorithms Lecture 1: Introduction to Algorithms
Algorithms Lecture 1: Introduction to Algorithms
Mohamed Loey
 
Variables in C Programming
Variables in C Programming
programming9
 
What is an algorithm?
What is an algorithm?
Angela DeHart
 
Complexity of Algorithm
Complexity of Algorithm
Muhammad Muzammal
 
Python programming : Classes objects
Python programming : Classes objects
Emertxe Information Technologies Pvt Ltd
 
Algorithm and flowchart
Algorithm and flowchart
Rabin BK
 
Data structure ppt
Data structure ppt
Prof. Dr. K. Adisesha
 
Performance analysis(Time & Space Complexity)
Performance analysis(Time & Space Complexity)
swapnac12
 
Breadth First Search & Depth First Search
Breadth First Search & Depth First Search
Kevin Jadiya
 
Phases of Compiler
Phases of Compiler
Tanzeela_Hussain
 
Greedy Algorihm
Greedy Algorihm
Muhammad Amjad Rana
 
Sorting Algorithms
Sorting Algorithms
Pranay Neema
 
Java threads
Java threads
Prabhakaran V M
 
Python programming : Standard Input and Output
Python programming : Standard Input and Output
Emertxe Information Technologies Pvt Ltd
 
Operators in python
Operators in python
Prabhakaran V M
 
Conditional and control statement
Conditional and control statement
narmadhakin
 
Algorithm and flowchart
Algorithm and flowchart
Elizabeth de Leon Aler
 
Python by Rj
Python by Rj
Shree M.L.Kakadiya MCA mahila college, Amreli
 

Viewers also liked (20)

Unit 11. Graphics
Unit 11. Graphics
Ashim Lamichhane
 
Sorting
Sorting
Ashim Lamichhane
 
Introduction to data_structure
Introduction to data_structure
Ashim Lamichhane
 
Algorithm big o
Algorithm big o
Ashim Lamichhane
 
Queues
Queues
Ashim Lamichhane
 
Unit 9. Structure and Unions
Unit 9. Structure and Unions
Ashim Lamichhane
 
Linked List
Linked List
Ashim Lamichhane
 
Searching
Searching
Ashim Lamichhane
 
The Stack And Recursion
The Stack And Recursion
Ashim Lamichhane
 
Unit 8. Pointers
Unit 8. Pointers
Ashim Lamichhane
 
Unit 6. Arrays
Unit 6. Arrays
Ashim Lamichhane
 
Friedman two way analysis of variance by
Friedman two way analysis of variance by
Iybaro Reyes
 
Recurrence relationclass 5
Recurrence relationclass 5
Kumar
 
Big o notation
Big o notation
hamza mushtaq
 
fundamental of information technology (2)
fundamental of information technology (2)
Sorath Peetamber
 
01. design & analysis of agorithm intro & complexity analysis
01. design & analysis of agorithm intro & complexity analysis
Onkar Nath Sharma
 
Unit 2. Elements of C
Unit 2. Elements of C
Ashim Lamichhane
 
Sets and disjoint sets union123
Sets and disjoint sets union123
Ankita Goyal
 
02 Notes Divide and Conquer
02 Notes Divide and Conquer
Andres Mendez-Vazquez
 
Unit 4. Operators and Expression
Unit 4. Operators and Expression
Ashim Lamichhane
 
Ad

Similar to Algorithm Introduction (20)

Algorithm and C code related to data structure
Algorithm and C code related to data structure
Self-Employed
 
Algorithm Analysis.pdf
Algorithm Analysis.pdf
NayanChandak1
 
DAA-Unit1.pptx
DAA-Unit1.pptx
NishaS88
 
Binary to hexadecimal algorithmic old.pptx
Binary to hexadecimal algorithmic old.pptx
bulbul931579
 
Chp-1 DAA (2).pptx design analysis and algoritham presentation
Chp-1 DAA (2).pptx design analysis and algoritham presentation
vaishnavbhavna17
 
Daa notes 1
Daa notes 1
smruti sarangi
 
Modile-1-PPT-1-BCAC0207-AlgorithmDesign.pptx
Modile-1-PPT-1-BCAC0207-AlgorithmDesign.pptx
ryadavrohit26
 
Introduction to Algorithms Introduction to Algorithms.pptx
Introduction to Algorithms Introduction to Algorithms.pptx
ArjayBalberan1
 
Introduction to Algorithms, Steps, Complexity
Introduction to Algorithms, Steps, Complexity
berggold2024
 
Unit 1, ADA.pptx
Unit 1, ADA.pptx
jinkhatima
 
Algorithms overview
Algorithms overview
Deborah Akuoko
 
01 CS316_Introduction.pdf5959695559655565
01 CS316_Introduction.pdf5959695559655565
yahiaf3k
 
Introduction to data structures and Algorithm
Introduction to data structures and Algorithm
Dhaval Kaneria
 
Cupdf.com introduction to-data-structures-and-algorithm
Cupdf.com introduction to-data-structures-and-algorithm
TarikuDabala1
 
Ds03 algorithms jyoti lakhani
Ds03 algorithms jyoti lakhani
jyoti_lakhani
 
Algorithm 110801105245-phpapp01-120223065724-phpapp02
Algorithm 110801105245-phpapp01-120223065724-phpapp02
dhruv patel
 
Algorithm 110801105245-phpapp01
Algorithm 110801105245-phpapp01
Jay Patel
 
Algorithm
Algorithm
eShikshak
 
Ds03 part i algorithms by jyoti lakhani
Ds03 part i algorithms by jyoti lakhani
jyoti_lakhani
 
2-Algorithms and Complexit data structurey.pdf
2-Algorithms and Complexit data structurey.pdf
ishan743441
 
Algorithm and C code related to data structure
Algorithm and C code related to data structure
Self-Employed
 
Algorithm Analysis.pdf
Algorithm Analysis.pdf
NayanChandak1
 
DAA-Unit1.pptx
DAA-Unit1.pptx
NishaS88
 
Binary to hexadecimal algorithmic old.pptx
Binary to hexadecimal algorithmic old.pptx
bulbul931579
 
Chp-1 DAA (2).pptx design analysis and algoritham presentation
Chp-1 DAA (2).pptx design analysis and algoritham presentation
vaishnavbhavna17
 
Modile-1-PPT-1-BCAC0207-AlgorithmDesign.pptx
Modile-1-PPT-1-BCAC0207-AlgorithmDesign.pptx
ryadavrohit26
 
Introduction to Algorithms Introduction to Algorithms.pptx
Introduction to Algorithms Introduction to Algorithms.pptx
ArjayBalberan1
 
Introduction to Algorithms, Steps, Complexity
Introduction to Algorithms, Steps, Complexity
berggold2024
 
Unit 1, ADA.pptx
Unit 1, ADA.pptx
jinkhatima
 
01 CS316_Introduction.pdf5959695559655565
01 CS316_Introduction.pdf5959695559655565
yahiaf3k
 
Introduction to data structures and Algorithm
Introduction to data structures and Algorithm
Dhaval Kaneria
 
Cupdf.com introduction to-data-structures-and-algorithm
Cupdf.com introduction to-data-structures-and-algorithm
TarikuDabala1
 
Ds03 algorithms jyoti lakhani
Ds03 algorithms jyoti lakhani
jyoti_lakhani
 
Algorithm 110801105245-phpapp01-120223065724-phpapp02
Algorithm 110801105245-phpapp01-120223065724-phpapp02
dhruv patel
 
Algorithm 110801105245-phpapp01
Algorithm 110801105245-phpapp01
Jay Patel
 
Ds03 part i algorithms by jyoti lakhani
Ds03 part i algorithms by jyoti lakhani
jyoti_lakhani
 
2-Algorithms and Complexit data structurey.pdf
2-Algorithms and Complexit data structurey.pdf
ishan743441
 
Ad

More from Ashim Lamichhane (6)

Tree - Data Structure
Tree - Data Structure
Ashim Lamichhane
 
UNIT 10. Files and file handling in C
UNIT 10. Files and file handling in C
Ashim Lamichhane
 
Unit 7. Functions
Unit 7. Functions
Ashim Lamichhane
 
Unit 5. Control Statement
Unit 5. Control Statement
Ashim Lamichhane
 
Unit 3. Input and Output
Unit 3. Input and Output
Ashim Lamichhane
 
Unit 1. Problem Solving with Computer
Unit 1. Problem Solving with Computer
Ashim Lamichhane
 
UNIT 10. Files and file handling in C
UNIT 10. Files and file handling in C
Ashim Lamichhane
 
Unit 1. Problem Solving with Computer
Unit 1. Problem Solving with Computer
Ashim Lamichhane
 

Recently uploaded (20)

FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Alliance
 
Down the Rabbit Hole – Solving 5 Training Roadblocks
Down the Rabbit Hole – Solving 5 Training Roadblocks
Rustici Software
 
Introduction to Typescript - GDG On Campus EUE
Introduction to Typescript - GDG On Campus EUE
Google Developer Group On Campus European Universities in Egypt
 
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance
 
“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...
“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...
Edge AI and Vision Alliance
 
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Alliance
 
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
Crypto Super 500 - 14th Report - June2025.pdf
Crypto Super 500 - 14th Report - June2025.pdf
Stephen Perrenod
 
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
Safe Software
 
Enabling BIM / GIS integrations with Other Systems with FME
Enabling BIM / GIS integrations with Other Systems with FME
Safe Software
 
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025
Safe Software
 
Data Validation and System Interoperability
Data Validation and System Interoperability
Safe Software
 
Murdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementary
JorgeSemperteguiMont
 
Your startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean account
angelo60207
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...
BookNet Canada
 
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
 
“Addressing Evolving AI Model Challenges Through Memory and Storage,” a Prese...
“Addressing Evolving AI Model Challenges Through Memory and Storage,” a Prese...
Edge AI and Vision Alliance
 
June Patch Tuesday
June Patch Tuesday
Ivanti
 
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Alliance
 
Down the Rabbit Hole – Solving 5 Training Roadblocks
Down the Rabbit Hole – Solving 5 Training Roadblocks
Rustici Software
 
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance
 
“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...
“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...
Edge AI and Vision Alliance
 
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Alliance
 
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
Crypto Super 500 - 14th Report - June2025.pdf
Crypto Super 500 - 14th Report - June2025.pdf
Stephen Perrenod
 
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
Safe Software
 
Enabling BIM / GIS integrations with Other Systems with FME
Enabling BIM / GIS integrations with Other Systems with FME
Safe Software
 
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025
Safe Software
 
Data Validation and System Interoperability
Data Validation and System Interoperability
Safe Software
 
Murdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementary
JorgeSemperteguiMont
 
Your startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean account
angelo60207
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...
BookNet Canada
 
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
 
“Addressing Evolving AI Model Challenges Through Memory and Storage,” a Prese...
“Addressing Evolving AI Model Challenges Through Memory and Storage,” a Prese...
Edge AI and Vision Alliance
 
June Patch Tuesday
June Patch Tuesday
Ivanti
 

Algorithm Introduction

  • 2. Things To Be Discussed In This Unit • Program Design • Concept and Definition • Design of algorithm • Characteristic of algorithm • Big O notation Ashim Lamichhane 2
  • 3. Learning Objectives • Understand the type of problem that will be covered in this class • Recognize some problems for which sophisticated algorithms might not be necessary. • Question if your solution technique is an efficient one? Any room for optimization? Ashim Lamichhane 3
  • 4. Program Design • Involves taking the specification and designing solutions, the designer needs to adopt a design strategy. • Solution Strategy should work correctly in all conditions • A large program should be divided into small modules and sub modules. • Other important criteria by which a program can be judged are execution time and storage requirement Ashim Lamichhane 4
  • 5. Algorithms • The term ’algorithm’ refers to the sequence of instructions that must be followed to solve a problem. • Logical representation of the instructions which should be executed to perform a meaningful task. • Algorithms are generally created independent of underlying languages, i.e. an algorithm can be implemented in more than one programming language. Ashim Lamichhane 5
  • 6. An algorithm has certain characteristics • Each instruction should be unique and concise. • Each instruction should be relative in nature and should not be repeated infinitely • Repetition of same task(s) should be avoided. • The result should be available to the user after algorithm terminates. Ashim Lamichhane 6
  • 7. NOTE: • After an algorithm has been designed, its efficiency must be analyzed. i.e CPU time and memory • Memory space and running time should be taken care of. • The importance of efficiency of an algorithm is in the correctness, i.e does it always produce the correct result, and program complexity which considers both the difficulty of implementing an algorithm along with its efficiency Ashim Lamichhane 7
  • 8. Properties of an Algorithm • Input: A number of quantities are provided to an algorithm initially before the algorithm begins. These quantities are inputs which are processed by the algorithm. • Definiteness: Each step must be clear and unambiguous. • Effectiveness: Each step must be carried out in finite time. • Finiteness: Algorithms must terminate after finite time or step • Output: An algorithm must have output. • Correctness: Correct set of output values must be produced from the each set of inputs. Ashim Lamichhane 8
  • 9. Write an algorithm to find the greatest number among three numbers Step 1: Read three numbers and store them in X, Y and Z Step 2: Compare X and Y. if X is greater than Y then go to step 5 else go to step 3 Step 3: Compare Y and Z. if Y is greater than Z then print “Y is greatest” and go to step 7 otherwise go to step 4 Step 4: Print “Z is greatest” and go to step 7 Step 5: Compare X and Z. if X is greater than Z then print “X is greatest” and go to step 7 otherwise go to step 6 Step 6: Print “Z is greatest” and go to step 7 Step 7: Stop Ashim Lamichhane 9
  • 10. Different Approaches To Designing An Algorithm • A complex system may be divided into smaller units called modules. • The advantage of modularity is that it focuses on specific module. • Modularity enhances design clarity, which in turn eases implementation, debugging, testing, documenting and maintenance of the project. • To design a hierarchy of a system there are two possible approaches • Top-down approach • Bottom-up approach Ashim Lamichhane 10
  • 11. Top-Down Approach • How it is done? • Identify the major components of the system, • decompose them into their lower-level components and • Iterate until the desired level of module complexity is achieved. • It basically starts with the big picture. It breaks down from there into smaller segments. • Top-down design method takes the form of stepwise refinement. Ashim Lamichhane 11
  • 12. Bottom-Up Approach • A bottom-up approach is the piecing together of systems to give rise to more complex systems • Bottom-up method works with layers of abstraction. • Elements are then linked together to form larger subsystems, which then in turn are linked, sometimes in many levels, until a complete top-level system is formed. • This strategy often resembles a "seed" model, by which the beginnings are small but eventually grow in complexity and completeness. Ashim Lamichhane 12
  • 13. Top-Down versus Bottom-Up Approach • The top-down approach, however, is often useful way to better document a design. • The design activity should not be constrained to proceed according to a fixed pattern but should be a blend of top-down and bottom-up approaches Ashim Lamichhane 13
  • 14. Complexity • When we talk of complexity in context of computers, we call it computational complexity. • Computational complexity is a characterization of the time or space requirements for solving a problem by a particular algorithm. • Lesser the complexity better an algorithm. Ashim Lamichhane 14
  • 15. Complexity • Given a particular problem, let ’n’ denote its size. The time required of a specific algorithm for solving this problem is expressed by a function: f : R->R • Such that, f(n) is the largest amount of time needed by the algorithm to solve the problem of size n. • Function ‘f’ is usually called the time complexity function. • Thus we conclude that the analysis of the program requires two main considerations: • Time Complexity (time required for completion) • Space Complexity (memory required for completion) Ashim Lamichhane 15
  • 16. Time Complexity • While measuring the time complexity of an algorithm, we concentrate on developing only the frequency count for all key statements (statements that are important and are the basic instructions of an algorithm) • This is because, it is often difficult to get reliable timing figure because of clock limitations and the multiprogramming or the sharing environment. Ashim Lamichhane 16
  • 17. Algorithm A • In an algorithm A we may find that the statement a=a+1 is independent and is not contained within any loop. • Therefore, the number of times this shall be executed is 1. • We say that the frequency count of an algorithm A is 1. Ashim Lamichhane 17
  • 18. Algorithm B • In this algorithm, i.e. B, the key statement is the assignment operation a=a+1. • Because this statement is contained within a loop, the number of times it is executed is n, as the loop runs for n times. • The frequency count for this algorithm is n. Ashim Lamichhane 18
  • 19. Algorithm C • The frequency count for the statement a=a+1 is n2 as the inner loop runs n times, each time the outer loop runs, the inner loop also runs for n times. • If an algorithm perform f(n) basic operations when the size of its input is n, then its total running time will be cf(n), where c is a constant that depends upon the algorithm, on the way it is programmed, and on the way the computer is used, but c does not depend on the size of the input Ashim Lamichhane 19
  • 20. Space Complexity • Space complexity is essentially the number of memory cells which an algorithm needs. • A good algorithm keeps this number as small as possible, too. • There is often a time-space-tradeoff involved in a problem, that is, it cannot be solved with few computing time and low memory consumption. • Space complexity is measured with respect to the input size for a given instance of a problem. Ashim Lamichhane 20
  • 21. Naïve Algorithm Vs Efficient Algorithm Ashim Lamichhane 21
  • 22. Ex 1: Greatest Common Divisor • DEFINITION: • For integers, a and b, their greatest common divisor or gcd(a,b) is the largest integer d so that d divides both a and b • Compute GCD • Input: Integers a,b ≥0 • Output: gcd(a,b) • Ex: Run on large numbers like gcd(3198848,1653264) Ashim Lamichhane 22
  • 23. Function NaiveGCD(a,b) • PROBLEMS: • Takes too much time to complete • Not an optimal solution Ashim Lamichhane 23 Best=0 For d from 1 to a+b: if d/a and d/b: best=d return best
  • 24. Function efficientGCD(a,b) • Lemma • Let a’ be the remainder when a is divided by b, then gcd(a,b)=gcd(a’,b)=gcd(b,a’) • So what is gcd(357,234)? Ashim Lamichhane 24 If b=0: return a a’ = the remainder when a is divided by b return efficientGCD(b,a’) Example
  • 25. Summary of naïve vs efficient algorithms • Naïve algorithm is too slow • The correct algorithm is much better • Finding the correct algorithm requires knowing something interesting about the problem Ashim Lamichhane 25
  • 26. Big O notation • To be continued on next slide… Ashim Lamichhane 26