The Role of Algorithms in Computing
Read chapter 1 of
“Introduction to Algorithms” by Thomas H. Cormen, Charles E.
Leiserson, Ronald L. Rivest, and Clifford Stein.
Computational problems
• A computational problem specifies an input-
output relationship
• What does the input look like?
• What should the output be for each input?
• Example:
• Input: an integer number n
• Output: Is the number prime?
• Example:
• Input: A list of names of people
• Output: The same list sorted alphabetically
Algorithms
• A tool for solving a well-specified
computational problem
• Algorithms must be:
• Correct: For each input produce an appropriate output
• Efficient: run as quickly as possible, and use as little memory
as possible – more about this later
Algorithm
Input Output
Algorithms Cont.
• A well-defined computational procedure that takes some value, or set
of values, as input and produces some value, or set of values, as
output.
• Written in a pseudo code which can be implemented in the language of
programmer’s choice.
Correct and incorrect algorithms
• Algorithm is correct if, for every input instance, it ends with the correct
output. We say that a correct algorithm solves the given computational
problem.
• An incorrect algorithm might not end at all on some input instances, or it
might end with an answer other than the desired one.
• We shall be concerned only with correct algorithms.
Problems and Algorithms
• We need to solve a computational problem
• “Convert a weight in pounds to Kg”
• An algorithm specifies how to solve it, e.g.:
• 1. Read weight-in-pounds
• 2. Calculate weight-in-Kg = weight-in-pounds * 0.455
• 3. Print weight-in-Kg
• A computer program is a computer-executable description of an
algorithm
Recall-The Problem-solving Process
Problem
specification
Algorithm
Program
Executable
(solution)
Analysis
Design
Implementation
Compilation
From Algorithms to Programs
Problem
C++ Program
Algorithm: A sequence
of instructions describing
how to do a task (or
process)
Pseudo-code conventions
Algorithms are typically written in pseudo-code that is similar to C/C++
• Pseudo-code differs from real code with:
• It is not typically concerned with issues of software engineering.
• Issues of data abstraction, and error handling are often ignored.
• Indentation indicates block structure.
• The symbol "▹" indicates that the remainder of the line is a comment.
• A multiple assignment of the form i ← j ← e assigns to both variables i and j
the value of expression e; it should be treated as equivalent to the
assignment j ← e followed by the assignment i ← j.
Pseudo-code conventions
• Variables ( such as i, j, and key) are local to the given procedure. We
shall not us global variables without explicit indication.
• Array elements are accessed by specifying the array name followed by
the index in square brackets. For example, A[i] indicates the ith element
of the array A. The notation “…" is used to indicate a range of values
within an array. Thus, A[1…j] indicates the sub-array of A consisting of
the j elements A[1], A[2], . . . , A[j].
• A particular attributes is accessed using the attributes name followed by
the name of its object in square brackets.
• For example, we treat an array as an object with the attribute length
indicating how many elements it contains( length[A]).
Pseudo-code Example
11
Divide-and-Conquer
The most-well known algorithm design strategy:
1. Divide instance of problem into two or more smaller instances
2. Solve smaller instances recursively
3. Obtain solution to original (larger) instance by combining these
solutions
Divide-and-Conquer Technique (cont.)
subproblem 2
of size n/2
subproblem 1
of size n/2
a solution to
subproblem 1
a solution to
the original problem
a solution to
subproblem 2
a problem of size n
(instance)
It general leads to a
recursive algorithm!
Divide-and-Conquer Examples
• Sorting: mergesort and quicksort
• Binary tree traversals
• Binary search (?)
• Multiplication of large integers
• Matrix multiplication: Strassen’s algorithm
• Closest-pair and convex-hull algorithms
Divide-and-Conquer Algorithm- An example
A small example: A  B where A = 2135 and B = 4014
A = (21·102 + 35), B = (40 ·102 + 14)
So, A  B = (21 ·102 + 35)  (40 ·102 + 14)
= 21  40 ·104 + (21  14 + 35  40) ·102 + 35  14
In general, if A = A1A2 and B = B1B2 (where A and B are n-
digit,
A1, A2, B1, B2 are n/2-digit numbers),
A  B = A1  B1·10n + (A1  B2 + A2  B1) ·10n/2 + A2  B2

Algorithms and problem solving.pptx

  • 1.
    The Role ofAlgorithms in Computing Read chapter 1 of “Introduction to Algorithms” by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein.
  • 2.
    Computational problems • Acomputational problem specifies an input- output relationship • What does the input look like? • What should the output be for each input? • Example: • Input: an integer number n • Output: Is the number prime? • Example: • Input: A list of names of people • Output: The same list sorted alphabetically
  • 3.
    Algorithms • A toolfor solving a well-specified computational problem • Algorithms must be: • Correct: For each input produce an appropriate output • Efficient: run as quickly as possible, and use as little memory as possible – more about this later Algorithm Input Output
  • 4.
    Algorithms Cont. • Awell-defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values, as output. • Written in a pseudo code which can be implemented in the language of programmer’s choice.
  • 5.
    Correct and incorrectalgorithms • Algorithm is correct if, for every input instance, it ends with the correct output. We say that a correct algorithm solves the given computational problem. • An incorrect algorithm might not end at all on some input instances, or it might end with an answer other than the desired one. • We shall be concerned only with correct algorithms.
  • 6.
    Problems and Algorithms •We need to solve a computational problem • “Convert a weight in pounds to Kg” • An algorithm specifies how to solve it, e.g.: • 1. Read weight-in-pounds • 2. Calculate weight-in-Kg = weight-in-pounds * 0.455 • 3. Print weight-in-Kg • A computer program is a computer-executable description of an algorithm
  • 7.
  • 8.
    From Algorithms toPrograms Problem C++ Program Algorithm: A sequence of instructions describing how to do a task (or process)
  • 9.
    Pseudo-code conventions Algorithms aretypically written in pseudo-code that is similar to C/C++ • Pseudo-code differs from real code with: • It is not typically concerned with issues of software engineering. • Issues of data abstraction, and error handling are often ignored. • Indentation indicates block structure. • The symbol "▹" indicates that the remainder of the line is a comment. • A multiple assignment of the form i ← j ← e assigns to both variables i and j the value of expression e; it should be treated as equivalent to the assignment j ← e followed by the assignment i ← j.
  • 10.
    Pseudo-code conventions • Variables( such as i, j, and key) are local to the given procedure. We shall not us global variables without explicit indication. • Array elements are accessed by specifying the array name followed by the index in square brackets. For example, A[i] indicates the ith element of the array A. The notation “…" is used to indicate a range of values within an array. Thus, A[1…j] indicates the sub-array of A consisting of the j elements A[1], A[2], . . . , A[j]. • A particular attributes is accessed using the attributes name followed by the name of its object in square brackets. • For example, we treat an array as an object with the attribute length indicating how many elements it contains( length[A]).
  • 11.
  • 12.
    Divide-and-Conquer The most-well knownalgorithm design strategy: 1. Divide instance of problem into two or more smaller instances 2. Solve smaller instances recursively 3. Obtain solution to original (larger) instance by combining these solutions
  • 13.
    Divide-and-Conquer Technique (cont.) subproblem2 of size n/2 subproblem 1 of size n/2 a solution to subproblem 1 a solution to the original problem a solution to subproblem 2 a problem of size n (instance) It general leads to a recursive algorithm!
  • 14.
    Divide-and-Conquer Examples • Sorting:mergesort and quicksort • Binary tree traversals • Binary search (?) • Multiplication of large integers • Matrix multiplication: Strassen’s algorithm • Closest-pair and convex-hull algorithms
  • 15.
    Divide-and-Conquer Algorithm- Anexample A small example: A  B where A = 2135 and B = 4014 A = (21·102 + 35), B = (40 ·102 + 14) So, A  B = (21 ·102 + 35)  (40 ·102 + 14) = 21  40 ·104 + (21  14 + 35  40) ·102 + 35  14 In general, if A = A1A2 and B = B1B2 (where A and B are n- digit, A1, A2, B1, B2 are n/2-digit numbers), A  B = A1  B1·10n + (A1  B2 + A2  B1) ·10n/2 + A2  B2