KEMBAR78
Problem solving | PPT
Algorithms and
Problem Solving
• Learn about problem solving skills
• Explore the algorithmic approach for
problem solving
• Learn about algorithm development
• Become aware of problem solving process
Lecture Objectives
Problem Solving
• Programming is a process of problem
solving
• Problem solving techniques
 Analyze the problem
 Outline the problem requirements
 Design steps (algorithm) to solve the problem
• Algorithm:
 Step-by-step problem-solving process
 Solution achieved in finite amount of time
Problem Solving Process
• Step 1 - Analyze the problem
 Outline the problem and its requirements
 Design steps (algorithm) to solve the problem
• Step 2 - Implement the algorithm
 Implement the algorithm in code
 Verify that the algorithm works
• Step 3 - Maintenance
 Use and modify the program if the problem
domain changes
Analyze the Problem
• Thoroughly understand the problem
• Understand problem requirements
 Does program require user interaction?
 Does program manipulate data?
 What is the output?
• If the problem is complex, divide it into
subproblems
 Analyze each subproblem as above
What is an algorithm?
• The idea behind the computer program
• Stays the same independent of
 Which kind of hardware it is running on
 Which programming language it is written in
• Solves a well-specified problem in a general
way
• Is specified by
 Describing the set of instances (input) it must work on
 Describing the desired properties of the output
• Before a computer can perform a task, it must
have an algorithm that tells it what to do.
• Informally: “An algorithm is a set of steps that
define how a task is performed.”
• Formally: “An algorithm is an ordered set of
unambiguous executable steps, defining a
terminating process.”
 Ordered set of steps: structure!
 Executable steps: doable!
 Unambiguous steps: follow the directions!
 Terminating: must have an end!
What is an algorithm? (Cont’d)
What is an algorithm? (Cont’d)
Important Properties of Algorithms
• Correct
 always returns the desired output for all legal
instances of the problem.
• Unambiguous
• Precise
• Efficient
 Can be measured in terms of
• Time
• Space
 Time tends to be more important
Representation of Algorithms
• A single algorithm can be represented in
many ways:
 Formulas: F = (9/5)C + 32
 Words: Multiply the Celsius by 9/5 and add 32.
 Flow Charts.
 Pseudo-code.
• In each case, the algorithm stays the same;
the implementation differs!
 A program is a representation of an algorithm
designed for computer applications.
 Process: Activity of executing a program, or execute
the algorithm represented by the program
  Process: Activity of executing an algorithm.
Representation of Algorithms (Cont’d)
Expressing Algorithms
• English description
• Pseudo-code
• High-level
programming
language
More
precise
More easily
expressed
• Pseudocode is like a programming language
but its rules are less stringent.
• Written as a combination of English and
programming constructs
 Based on selection (if, switch) and iteration (while,
repeat) constructs in high-level programming
languages
• Design using these high level primitives
 Independent of actual programming language
Pseudocode
Example: The sequential search algorithm in
pseudocode
Pseudocode (Cont’d)
Algorithm Discovery
• The Two Steps of Program Development:
 1. Discover the algorithm.
 2. Represent the algorithm as a program.
• Step 2 is the easy step!
• Step 1 can be very difficult!
• To discover an algorithm is to solve the
problem!
Problem Solving: A creative process
• Problem solving techniques are not unique
to Computer Science.
• The CS field has joined with other fields to
try to solve problems better.
• Ideally, there should be an algorithm to
find/develop algorithms.
• However, this is not the case as some
problems do not have algorithmic solutions.
• Problem solving remains an art!
Problem Solving Strategies
• Working backwards
 Reverse-engineer
 Once you know it can be done, it is much easier to do
 What are some examples?
• Look for a related problem that has been solved before
 Java design patterns
 Sort a particular list such as: David, Alice, Carol and Bob
to find a general sorting algorithm
• Stepwise Refinement
 Break the problem into several sub-problems
 Solve each subproblem separately
 Produces a modular structure
• K.I.S.S. = Keep It Simple Stupid!
Stepwise Refinement
• Stepwise refinement is a top-down methodology
in that it progresses from the general to the
specific.
• Bottom-up methodologies progress from the
specific to the general.
 These approaches complement each other
• Solutions produced by stepwise refinement
posses a natural modular structure - hence its
popularity in algorithmic design.
Object-Oriented Design Methodology
• Four stages to the decomposition process
 Brainstorming
 Filtering
 Scenarios
 Responsibility algorithms
Class-Responsibility-Collaboration (CRC) Cards
Brainstorming
• A group problem-solving technique that
involves the spontaneous contribution of
ideas from all members of the group
 All ideas are potential good ideas
 Think fast and furiously first, and ponder later
 A little humor can be a powerful force
• Brainstorming is designed to produce a list
of candidate classes
Filtering
• Determine which are the core classes in the
problem solution
• There may be two classes in the list that
have many common attributes and behaviors
• There may be classes that really don’t belong
in the problem solution
Scenarios
• Assign responsibilities to each class
• There are two types of responsibilities
 What a class must know about itself (knowledge)
 What a class must be able to do (behavior)
• Encapsulation is the bundling of data and
actions in such a way that the logical
properties of the data and actions are
separated from the implementation details
Responsibility Algorithms
• The algorithms must be written for the
responsibilities
 Knowledge responsibilities usually just return the
contents of one of an object’s variables
 Action responsibilities are a little more complicated,
often involving calculations
Computer Example
• Let’s repeat the problem-solving process for
creating an address list
• Brainstorming and filtering
 Circling the nouns and underlining the verbs
• First pass at a list of classes
Computer Example (Cont’d)
• Filtered list
Computer Example (Cont’d)
CRC Cards
Responsibility Algorithms

Problem solving

  • 1.
  • 2.
    • Learn aboutproblem solving skills • Explore the algorithmic approach for problem solving • Learn about algorithm development • Become aware of problem solving process Lecture Objectives
  • 3.
    Problem Solving • Programmingis a process of problem solving • Problem solving techniques  Analyze the problem  Outline the problem requirements  Design steps (algorithm) to solve the problem • Algorithm:  Step-by-step problem-solving process  Solution achieved in finite amount of time
  • 4.
    Problem Solving Process •Step 1 - Analyze the problem  Outline the problem and its requirements  Design steps (algorithm) to solve the problem • Step 2 - Implement the algorithm  Implement the algorithm in code  Verify that the algorithm works • Step 3 - Maintenance  Use and modify the program if the problem domain changes
  • 5.
    Analyze the Problem •Thoroughly understand the problem • Understand problem requirements  Does program require user interaction?  Does program manipulate data?  What is the output? • If the problem is complex, divide it into subproblems  Analyze each subproblem as above
  • 6.
    What is analgorithm? • The idea behind the computer program • Stays the same independent of  Which kind of hardware it is running on  Which programming language it is written in • Solves a well-specified problem in a general way • Is specified by  Describing the set of instances (input) it must work on  Describing the desired properties of the output
  • 7.
    • Before acomputer can perform a task, it must have an algorithm that tells it what to do. • Informally: “An algorithm is a set of steps that define how a task is performed.” • Formally: “An algorithm is an ordered set of unambiguous executable steps, defining a terminating process.”  Ordered set of steps: structure!  Executable steps: doable!  Unambiguous steps: follow the directions!  Terminating: must have an end! What is an algorithm? (Cont’d)
  • 8.
    What is analgorithm? (Cont’d)
  • 9.
    Important Properties ofAlgorithms • Correct  always returns the desired output for all legal instances of the problem. • Unambiguous • Precise • Efficient  Can be measured in terms of • Time • Space  Time tends to be more important
  • 10.
    Representation of Algorithms •A single algorithm can be represented in many ways:  Formulas: F = (9/5)C + 32  Words: Multiply the Celsius by 9/5 and add 32.  Flow Charts.  Pseudo-code. • In each case, the algorithm stays the same; the implementation differs!
  • 11.
     A programis a representation of an algorithm designed for computer applications.  Process: Activity of executing a program, or execute the algorithm represented by the program   Process: Activity of executing an algorithm. Representation of Algorithms (Cont’d)
  • 12.
    Expressing Algorithms • Englishdescription • Pseudo-code • High-level programming language More precise More easily expressed
  • 13.
    • Pseudocode islike a programming language but its rules are less stringent. • Written as a combination of English and programming constructs  Based on selection (if, switch) and iteration (while, repeat) constructs in high-level programming languages • Design using these high level primitives  Independent of actual programming language Pseudocode
  • 14.
    Example: The sequentialsearch algorithm in pseudocode Pseudocode (Cont’d)
  • 15.
    Algorithm Discovery • TheTwo Steps of Program Development:  1. Discover the algorithm.  2. Represent the algorithm as a program. • Step 2 is the easy step! • Step 1 can be very difficult! • To discover an algorithm is to solve the problem!
  • 16.
    Problem Solving: Acreative process • Problem solving techniques are not unique to Computer Science. • The CS field has joined with other fields to try to solve problems better. • Ideally, there should be an algorithm to find/develop algorithms. • However, this is not the case as some problems do not have algorithmic solutions. • Problem solving remains an art!
  • 17.
    Problem Solving Strategies •Working backwards  Reverse-engineer  Once you know it can be done, it is much easier to do  What are some examples? • Look for a related problem that has been solved before  Java design patterns  Sort a particular list such as: David, Alice, Carol and Bob to find a general sorting algorithm • Stepwise Refinement  Break the problem into several sub-problems  Solve each subproblem separately  Produces a modular structure • K.I.S.S. = Keep It Simple Stupid!
  • 18.
    Stepwise Refinement • Stepwiserefinement is a top-down methodology in that it progresses from the general to the specific. • Bottom-up methodologies progress from the specific to the general.  These approaches complement each other • Solutions produced by stepwise refinement posses a natural modular structure - hence its popularity in algorithmic design.
  • 19.
    Object-Oriented Design Methodology •Four stages to the decomposition process  Brainstorming  Filtering  Scenarios  Responsibility algorithms
  • 20.
  • 21.
    Brainstorming • A groupproblem-solving technique that involves the spontaneous contribution of ideas from all members of the group  All ideas are potential good ideas  Think fast and furiously first, and ponder later  A little humor can be a powerful force • Brainstorming is designed to produce a list of candidate classes
  • 22.
    Filtering • Determine whichare the core classes in the problem solution • There may be two classes in the list that have many common attributes and behaviors • There may be classes that really don’t belong in the problem solution
  • 23.
    Scenarios • Assign responsibilitiesto each class • There are two types of responsibilities  What a class must know about itself (knowledge)  What a class must be able to do (behavior) • Encapsulation is the bundling of data and actions in such a way that the logical properties of the data and actions are separated from the implementation details
  • 24.
    Responsibility Algorithms • Thealgorithms must be written for the responsibilities  Knowledge responsibilities usually just return the contents of one of an object’s variables  Action responsibilities are a little more complicated, often involving calculations
  • 25.
    Computer Example • Let’srepeat the problem-solving process for creating an address list • Brainstorming and filtering  Circling the nouns and underlining the verbs
  • 26.
    • First passat a list of classes Computer Example (Cont’d)
  • 27.
    • Filtered list ComputerExample (Cont’d)
  • 28.
  • 29.