Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
29 views36 pages

DMS 2.1algorithms

Module #5 covers algorithms as foundational procedures in computer programming, detailing their characteristics, examples, and execution methods. It introduces pseudocode for algorithm representation and discusses various algorithm types, including linear and binary search. The module emphasizes the importance of creativity in algorithm invention and provides optimization techniques for specific algorithms.

Uploaded by

Dhamodhar Reddy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views36 pages

DMS 2.1algorithms

Module #5 covers algorithms as foundational procedures in computer programming, detailing their characteristics, examples, and execution methods. It introduces pseudocode for algorithm representation and discusses various algorithm types, including linear and binary search. The module emphasizes the importance of creativity in algorithm invention and provides optimization techniques for specific algorithms.

Uploaded by

Dhamodhar Reddy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 36

Module #5 - Algorithms

University of Florida
Dept. of Computer & Information Science & Engineering

COT 3100
Applications of Discrete Structures
Dr. Michael P. Frank

Slides for a Course Based on the Text


Discrete Mathematics & Its Applications
(5th Edition)
by Kenneth H. Rosen

08/28/25 (c)2001-2003, Michael P. Frank 1


Module #5 - Algorithms

Module #5:
Algorithms

Rosen 5th ed., §2.1


~31 slides, ~1 lecture
Abu al-Khowarizmi
(ca. 780-850)

08/28/25 (c)2001-2003, Michael P. Frank 2


Module #5 - Algorithms

Chapter 2: More Fundamentals


• §2.1: Algorithms • §2.5: Integers &
– Formal procedures Algorithms
• §2.2: Orders of Growth – Alternate bases, algorithms
for basic arithmetic
• §2.3: Complexity of
• §2.6: Number theory
algorithms
– Analysis using order-of-
applications
growth notation. – Public-Key Cryptography
• §2.4: The Integers & • §2.7: Matrices
Division – Some basic linear algebra.
– Some basic number theory.

08/28/25 (c)2001-2003, Michael P. Frank 3


Module #5 - Algorithms

§2.1: Algorithms
• The foundation of computer programming.
• Most generally, an algorithm just means a definite
procedure for performing some sort of task.
• A computer program is simply a description of an
algorithm, in a language precise enough for a
computer to understand, requiring only operations
that the computer already knows how to do.
• We say that a program implements (or “is an
implementation of”) its algorithm.
08/28/25 (c)2001-2003, Michael P. Frank 4
Module #5 - Algorithms

Algorithms You Already Know


• Grade-school arithmetic algorithms:
– How to add any two natural numbers written in
decimal on paper, using carries.
– Similar: Subtraction using borrowing.
– Multiplication & long division.
• Your favorite cooking recipe.
• How to register for classes at UF.

08/28/25 (c)2001-2003, Michael P. Frank 5


Module #5 - Algorithms

Programming Languages
• Some common programming languages:
– Newer: Java, C, C++, C#, Visual Basic,
JavaScript, Perl, Tcl, Pascal, many others…
– Older: Fortran, Cobol, Lisp, Basic
– Assembly languages, for low-level coding.
• In this class we will use an informal,
Pascal-like “pseudo-code” language.
• You should know at least 1 real language!
08/28/25 (c)2001-2003, Michael P. Frank 6
Module #5 - Algorithms

Algorithm Example (English)


• Task: Given a sequence {ai}=a1,…,an,
aiN, say what its largest element is.
• One algorithm for doing this, in English:
– Set the value of a temporary variable v (largest
element seen so far) to a1’s value.
– Look at the next element ai in the sequence.
– If ai>v, then re-assign v to the number ai.
– Repeat then previous 2 steps until there are no
more elements in the sequence, & return v.
08/28/25 (c)2001-2003, Michael P. Frank 7
Module #5 - Algorithms

Executing an Algorithm
• When you start up a piece of software, we
say the program or its algorithm are being
run or executed by the computer.
• Given a description of an algorithm, you
can also execute it by hand, by working
through all of its steps with pencil & paper.
• Before ~1940, “computer” meant a person
whose job was to execute algorithms!
08/28/25 (c)2001-2003, Michael P. Frank 8
Module #5 - Algorithms

Executing the Max algorithm


• Let {ai}=7,12,3,15,8. Find its maximum…
• Set v = a1 = 7.
• Look at next element: a2 = 12.
• Is a2>v? Yes, so change v to 12.
• Look at next element: a2 = 3.
• Is 3>12? No, leave v alone….
• Is 15>12? Yes, v=15…
08/28/25 (c)2001-2003, Michael P. Frank 9
Module #5 - Algorithms

Algorithm Characteristics
Some important general features of algorithms:
• Input. Information or data that comes in.
• Output. Information or data that goes out.
• Definiteness. Algorithm is precisely defined.
• Correctness. Outputs correctly relate to inputs.
• Finiteness. Won’t take forever to describe or run.
• Effectiveness. Individual steps are all do-able.
• Generality. Works for many possible inputs.
• Efficiency. Takes little time & memory to run.
08/28/25 (c)2001-2003, Michael P. Frank 10
Module #5 - Algorithms

Our Pseudocode Language: §A2


procedure for variable := initial
name(argument: type) value to final value
variable := expression statement
informal statement while condition
begin statements end statement
{comment} procname(arguments)
if condition then Not defined in book:
statement [else return expression
statement]
08/28/25 (c)2001-2003, Michael P. Frank 11
Module #5 - Algorithms

procedure procname(arg: type)


• Declares that the following text defines a
procedure named procname that takes
inputs (arguments) named arg which are
data objects of the type type.
– Example:
procedure maximum(L: list of integers)
[statements defining maximum…]

08/28/25 (c)2001-2003, Michael P. Frank 12


Module #5 - Algorithms

variable := expression
• An assignment statement evaluates the
expression expression, then reassigns the
variable variable to the value that results.
– Example assignment statement:
v := 3x+7 (If x is 2, changes v to 13.)
• In pseudocode (but not real code), the
expression might be informally stated:
– x := the largest integer in the list L

08/28/25 (c)2001-2003, Michael P. Frank 13


Module #5 - Algorithms

Informal statement
• Sometimes we may write a statement as an
informal English imperative, if the meaning
is still clear and precise: e.g.,“swap x and y”
• Keep in mind that real programming
languages never allow this.
• When we ask for an algorithm to do so-and-
so, writing “Do so-and-so” isn’t enough!
– Break down algorithm into detailed steps.
08/28/25 (c)2001-2003, Michael P. Frank 14
Module #5 - Algorithms

begin statements end


• Groups a sequence of • Allows the sequence to
statements together: be used just like a
begin single statement.
statement 1 • Might be used:
statement 2 – After a procedure
… declaration.
statement n – In an if statement after
end then or else.
– In the body of a for or
Curly braces {} are used instead
while loop.
in many languages.
08/28/25 (c)2001-2003, Michael P. Frank 15
Module #5 - Algorithms

{comment}
• Not executed (does nothing).
• Natural-language text explaining some
aspect of the procedure to human readers.
• Also called a remark in some real
programming languages, e.g. BASIC.
• Example, might appear in a max program:
– {Note that v is the largest integer seen so far.}

08/28/25 (c)2001-2003, Michael P. Frank 16


Module #5 - Algorithms

if condition then statement


• Evaluate the propositional expression
condition.
– If the resulting truth value is True, then execute
the statement statement;
– otherwise, just skip on ahead to the next
statement after the if statement.
• Variant: if cond then stmt1 else stmt2
– Like before, but iff truth value is False,
executes stmt2.

08/28/25 (c)2001-2003, Michael P. Frank 17


Module #5 - Algorithms

while condition statement


• Evaluate the propositional (Boolean)
expression condition.
• If the resulting value is True, then execute
statement.
• Continue repeating the above two actions
over and over until finally the condition
evaluates to False; then proceed to the next
statement.
08/28/25 (c)2001-2003, Michael P. Frank 18
Module #5 - Algorithms

while condition statement


• Also equivalent to infinite nested ifs, like so:
if condition
begin
statement
if condition
begin
statement
…(continue infinite nested if’s)
end
end
08/28/25 (c)2001-2003, Michael P. Frank 19
Module #5 - Algorithms

for var := initial to final stmt


• Initial is an integer expression.
• Final is another integer expression.
• Semantics: Repeatedly execute stmt, first with
variable var := initial, then with var := initial+1,
then with var := initial+2, etc., then finally with
var := final.
• Question: What happens if stmt changes the value
of var, or the value that initial or final evaluates
to?
08/28/25 (c)2001-2003, Michael P. Frank 20
Module #5 - Algorithms

for var := initial to final stmt


• For can be exactly defined in terms of
while, like so:
begin
var := initial
while var  final
begin
stmt
var := var + 1
end
end
08/28/25 (c)2001-2003, Michael P. Frank 21
Module #5 - Algorithms

procedure(argument)
• A procedure call statement invokes the
named procedure, giving it as its input the
value of the argument expression.
• Various real programming languages refer
to procedures as functions (since the
procedure call notation works similarly to
function application f(x)), or as subroutines,
subprograms, or methods.
08/28/25 (c)2001-2003, Michael P. Frank 22
Module #5 - Algorithms

Max procedure in pseudocode


procedure max(a1, a2, …, an: integers)
v := a1 {largest element so far}
for i := 2 to n {go thru rest of elems}
if ai > v then v := ai {found bigger?}
{at this point v’s value is the same as
the largest integer in the list}
return v
08/28/25 (c)2001-2003, Michael P. Frank 23
Module #5 - Algorithms

Inventing an Algorithm
• Requires a lot of creativity and intuition
– Like writing proofs.
• Unfortunately, we can’t give you an
algorithm for inventing algorithms.
– Just look at lots of examples…
– And practice (preferably, on a computer)
– And look at more examples…
– And practice some more… etc., etc.

08/28/25 (c)2001-2003, Michael P. Frank 24


Module #5 - Algorithms

Algorithm-Inventing Example
• Suppose we ask you to write an algorithm
to compute the predicate:
IsPrime:N→{T,F}
– Computes whether a given natural number is a
prime number.
• First, start with a correct predicate-logic
definition of the desired function:
n: IsPrime(n)  ¬1<d<n: d|n
Means d divides n
evenly (without remainder)
08/28/25 (c)2001-2003, Michael P. Frank 25
Module #5 - Algorithms

IsPrime example, cont.


• Notice that the negated exponential can be
rewritten as a universal: Means d does not
divide n evenly
¬1<d<n: d|n  1<d<n: d | n (the remainder is ≠0)
 2≤ d ≤ n−1: d | n
• This universal can then be translated directly into
a corresponding for loop:
for d := 2 to n−1 { Try all potential divisors >1 & <n }
if d|n then return F { n has divisor d; not prime }
return T { no divisors were found; n must be prime}

08/28/25 (c)2001-2003, Michael P. Frank 26


Module #5 - Algorithms

Optimizing IsPrime
• The IsPrime algorithm can be further optimized:
for d := 2 to n1/2 Note smaller range of search.
if d|n then return F
return T
• This works because of this theorem: If n has any
(integer) divisors, it must have one less than n1/2.
Proof: Suppose n’s smallest divisor >1 is a, and let
b :≡ n/a. Then n = ab, but if a > n1/2 then b > n1/2 (since a
is n’s smallest divisor) and so n = ab > (n1/2)2 = n, an
absurdity. Further optimizations are possible:
- E.g., only try divisors that
are primes less than n1/2.
08/28/25 (c)2001-2003, Michael P. Frank 27
Module #5 - Algorithms

Another example task


• Problem of searching an ordered list.
– Given a list L of n elements that are sorted into
a definite order (e.g., numeric, alphabetical),
– And given a particular element x,
– Determine whether x appears in the list,
– and if so, return its index (position) in the list.
• Problem occurs often in many contexts.
• Let’s find an efficient algorithm!
08/28/25 (c)2001-2003, Michael P. Frank 28
Module #5 - Algorithms

Search alg. #1: Linear Search


procedure linear search
(x: integer, a1, a2, …, an: distinct integers)
i := 1 {start at beginning of list}
while (i  n  x  ai) {not done, not found}
i := i + 1 {go to the next position}
if i  n then location := i {it was found}
else location := 0 {it wasn’t found}
return location {index or 0 if not found}
08/28/25 (c)2001-2003, Michael P. Frank 29
Module #5 - Algorithms

Search alg. #2: Binary Search


• Basic idea: On each step, look at the middle
element of the remaining list to eliminate
half of it, and quickly zero in on the desired
element.

<x <x <x >x

08/28/25 (c)2001-2003, Michael P. Frank 30


Module #5 - Algorithms

Search alg. #2: Binary Search


procedure binary search
(x:integer, a1, a2, …, an: distinct integers)
i := 1 {left endpoint of search interval}
j := n {right endpoint of search interval}
while i<j begin {while interval has >1 item}
m := (i+j)/2 {midpoint}
if x>am then i := m+1 else j := m
end
if x = ai then location := i else location := 0
return location
08/28/25 (c)2001-2003, Michael P. Frank 31
Module #5 - Algorithms

Practice exercises
• 2.1.3: Devise an algorithm that finds the
sum of all the integers in a list. [2 min]
• procedure sum(a1, a2, …, an: integers)
s := 0 {sum of elems so far}
for i := 1 to n {go thru all elems}
s := s + ai {add current item}
{at this point s is the sum of all items}
return s
08/28/25 (c)2001-2003, Michael P. Frank 32
Module #5 - Algorithms

Sorting Algorithms
• Sorting is a common operation in many
applications.
– E.g. spreadsheets and databases
• It is also widely used as a subroutine in
other data-processing algorithms.
• Two sorting algorithms shown in textbook:
– Bubble sort However, these are not
very efficient, and you should
– Insertion sort not use them on large data sets!
We’ll see some more efficient algorithms later in the course.
08/28/25 (c)2001-2003, Michael P. Frank 33
Module #5 - Algorithms

Bubble Sort
• Smallest elements “float” up to the top of
the list, like bubbles in a container of liquid.
30 30 1 1 1 1
31 1 30 30 2 2
1 31 31 2 30 3
32 32 2 31 3 30
33 2 32 3 31 31
2 33 3 32 32 32
34 3 33 33 33 33
3 34 34 34 34 34
08/28/25 (c)2001-2003, Michael P. Frank 34
Module #5 - Algorithms

Insertion Sort Algorithm


• English description of algorithm:
– For each item in the input list,
• “Insert” it into the correct place in the sorted output
list generated so far. Like so:
– Use linear or binary search to find the location where the
new item should be inserted.
– Then, shift the items from that position onwards down by
one position.
– Put the new item in the hole remaining.

08/28/25 (c)2001-2003, Michael P. Frank 35


Module #5 - Algorithms

Review §2.1: Algorithms


• Characteristics of algorithms.
• Pseudocode.
• Examples: Max algorithm, primality-testing, linear
search & binary search algorithms. Sorting.
• Intuitively we see that binary search is much faster
than linear search, but how do we analyze the
efficiency of algorithms formally?
• Use methods of algorithmic complexity, which
utilize the order-of-growth concepts from §1.8.
08/28/25 (c)2001-2003, Michael P. Frank 36

You might also like