AlgorithmsinaNutshell Session1 Introduction 9:109:40 Outline - - PowerPoint PPT Presentation

algorithms in a nutshell
SMART_READER_LITE
LIVE PREVIEW

AlgorithmsinaNutshell Session1 Introduction 9:109:40 Outline - - PowerPoint PPT Presentation

AlgorithmsinaNutshell Session1 Introduction 9:109:40 Outline Whatisanalgorithm? Anexample:INSERTIONSORT Patternformatdescription Mathematicalnotations


slide-1
SLIDE 1

Algorithms
in
a
Nutshell

Session
1 Introduction 9:10
–
9:40

slide-2
SLIDE 2

Outline

  • What
is
an
algorithm?
  • An
example:
INSERTION
SORT
  • Pattern
format
description
  • Mathematical
notations

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 2

slide-3
SLIDE 3

What
is
an
Algorithm?

  • A
deterministic
sequence
of
operations
for

solving
a
problem
given
a
specific
input
set

  • Deterministic
–
this
means
it
always
works,

given
the
known
constraints
on
the
problem

– Produces
solution
for
all
possible
inputs

  • Input
Set
–
the
(often
arbitrary)
way
in
which

a
problem
instance
is
represented

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 3

slide-4
SLIDE 4

Problem:
Sort
a
collection
of
strings

  • Input

– Collection
of
String
S

  • Output

– Ordered
result

  • Assumptions

– Complete
ordering
between any
two
elements
of
S

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 4

eagle cat ant dog ball ant ball cat dog eagle

slide-5
SLIDE 5

Problem
Instance
Representations

  • Array
of
fixed
structured
content
  • Array
of
pointers
to
content
  • Compact
representation

e a g l e ¬ c a eagle ant cat t ¬ ¬ a n t e a g l e ¬ c a t ¬ a n t ¬

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 5

¬ ¬ ¬ ¬

slide-6
SLIDE 6

Common
Data
Structures

  • Array

– N
dimensional

  • Linked
List

– Doubly‐linked

  • Stack
  • Queue

– Double‐ended
queue – Priority
queue

  • Binary
Tree
  • Binary
Heap

Data
structures
provide
various ways
to
representation information Note
the
glyphs
used throughout
the
book
will
need to
be
consistent
here
as
well Key
operations
for
each
data structure
to
be
discussed
as needed

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 6

slide-7
SLIDE 7

INSERTION
SORT

  • Frame
the
problem

– Insert
each
new
element
into
proper
location

h g a f m sorted
part
of
 the
collection remaining
elements in
the
collection
to
 be
processed element
being
considered
next

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 7

Algorithm
iteratively
applies
this
key
operation

63

slide-8
SLIDE 8

INSERTION
SORT

  • Occasionally
all
elements
must
be
moved

g h a f m sorted
part
of
 the
collection remaining
elements in
the
collection
to
 be
processed element
being
considered
next

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 8

slide-9
SLIDE 9

INSERTION
SORT

  • Only
need
to
move
elements
“higher”
than

the
one
being
inserted

a g h f m sorted
part
of
 the
collection remaining
elements in
the
collection
to
 be
processed element
being
considered
next

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 9

slide-10
SLIDE 10

INSERTION
SORT

  • Sometimes
the
element
to
be
inserted
is

greater
than
all
existing
elements
–
no
swaps!

a f g h m sorted
part
of
 the
collection remaining

elements in
the
collection
to
 be
processed element

being
considered
next

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 10

slide-11
SLIDE 11

INSERTION
SORT

  • Sometimes
the
element
to
be
inserted
is

greater
than
all
existing
elements
–
no
swaps!

a f g h m sorted
part
of
 the
collection DONE

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 11

slide-12
SLIDE 12

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 12

INSERTION
SORT

Array

sort
(A) 1. for
i=1
to
n–1
do 2. insert
(A,
i,
A[i]) end insert
(A,
pos,
value) 1. i
=
pos–1 2. while
(i
≥
0
and
A[i]
>
value)
then 3. A[i+1]
=
A[i] 4. i
=
i–1 5. A[i+1]=value end

1 4 8 9 11 15 7 12 13 6

insert
(A,
6,
“7”)
 Elements compared and
bumped
up value

7

Insert
into proper spot Already
sorted Sorted
region
extended
by
one

1 4 7 8 9 11 15 12 13 6

Algorithm
Fact
Sheet

64

Name
of the Algorithm Concepts Pseudocod e description Small Example

slide-13
SLIDE 13

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 13

Array

sort
(A)

  • 1. for
i=1
to
n–1
do
  • 2. insert
(A,
i,
A[i])

end insert
(A,
pos,
value)

  • 1. i
=
pos–1
  • 2. while
(i
≥
0
and
A[i]
>
value)
then

3. A[i+1]
=
A[i] 4. i
=
i–1

  • 5. A[i+1]=value

end

1 4 8 9 11 15 7 12 13 6

insert
(A,
6,
“7”)
 Elements compared and
bumped up value

7

Insert
into proper spot Already
sorted Sorted
region
extended
by
one

1 4 7 8 9 11151213 6

INSERTION SORT

64

slide-14
SLIDE 14

Code
Check

  • Show
actual
running
code

– Handout – Debug
example

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 14

slide-15
SLIDE 15

Performance
of
INSERTION
SORT

  • As
sorting
algorithms
go,
how
efficient
is

INSERTION
SORT?

– Is
it
the
fastest
algorithm?
[NO] – How
does
it
compare
with
other
algorithms?

  • Difficult
to
answer
without
a
theoretic
model

– independent
of
programming
language – Independent
of
computer
hardware

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 15

slide-16
SLIDE 16

Performance
of
Algorithms

  • Use
standard
“Big
O”
notation

– Let
T(n)
be
time
for
algorithm
to
perform
on
an average
problem
instance
of
size
n – How
does
T(n)
grow
in
proportion
to
increasing
n?

  • Example
Problem

– Given
n
integers,
find
the
largest
integer – Expect
that
T(2n)
≅
2*
T(n)

  • Find
performance
family
that
most
closely

matches
behavior
of
algorithm

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 16

slide-17
SLIDE 17

Performance
Analysis

  • Linear
or
O(n)

– As
problem
size
is
multiplied
by
2,
the
time
to complete
the
problem
“should
be”
multiplied
by
2 – Holds
true
for
any
constant
multiplicative
factor

  • How
to
capture
this
concept?

– Once
n
is
“sufficiently
large”,
there
is
some
constant
c such
that
t(n)
≤
c*n – Not
an
estimate
but
a
firm
upper
bound

  • In
practice,
“c”
is
never
computed,
though
its

existence
is
guaranteed

– Depends
upon
hardware
platform,
language,
etc…

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 17

slide-18
SLIDE 18

Functional
Families

  • You
already
know
this
concept
from
algebra

– x2
and
4x2–3*x+170
are
both
“quadratic” formulae – Distinctive
shape – Highest
exponent is
most
important – In
“long
run”
they behave
similarly

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 18

slide-19
SLIDE 19

Performance
of
INSERTION
SORT

  • Average
Case

– Given
random
permutation
of
n
elements,
each element
is
(on
average)
n/3
positions
from
proper location

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 19

66 h g a f m a f g h m 3 1 2 2 Average
=
8/5
=1.6
≅
5/3

slide-20
SLIDE 20

Performance
of
INSERTION
SORT

  • insert(A,
pos,
value)
is
invoked
n–1
times

– On
average,
while
loop
invoked
n/3
times

  • Quick
estimate
=
(n–1
)*(n/3)
=
⅓n2
–
n/3

– The
critical
factor
is
the
highest
exponent – ⅓n2
–
n/3
is
O(n2)

  • INSERTION
SORT
is
not
linear

– It
is
Quadratic – As
problem
size
is
multiplied
by k=2,
the
time
to
complete
the problem
is
multiplied
by
k2=4

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 20

66

sort
(A)

  • 1. for
i=1
to
n–1
do

2. insert
(A,
i,
A[i]) end insert
(A,
pos,
value)

  • 1. 
i
=
pos–1
  • 2. 
while
(i
≥
0
and
A[i]
>
value)
then

3. A[i+1]
=
A[i] 4. i
=
i–1

  • 5. 
A[i+1]=value

end

slide-21
SLIDE 21

Rating
Performance
of
Algorithm

  • Best
Case

– Problem
instances
for
which
algorithm
computes answer
most
efficiently

  • Average
Case

– Typical
random
problem
instance.
Identifies
the expected
performance
of
the
algorithm

  • Worst
Case

– Unusual
problem
instances
that
force
algorithm
to work
harder
and
be
less
efficient

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 21

18

slide-22
SLIDE 22

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 22

Insertion
Sort

Array

sort
(A) 1. for
i=1
to
n–1
do 2. insert
(A,
i,
A[i]) end insert
(A,
pos,
value) 1. i
=
pos–1 2. while
(i
≥
0
and
A[i]
>
value)
then 3. A[i+1]
=
A[i] 4. i
=
i–1 5. A[i+1]=value end

1 4 8 9 11 15 7 12 13 6

insert
(A,
6,
“7”)
 Elements compared and
bumped
up value

7

Insert
into proper spot Already
sorted Sorted
region
extended
by
one

1 4 7 8 9 11 15 12 13 6

INSERTION
SORT
Fact
Sheet

64

Name
of
the Algorithm Concepts Pseudocode description Small Example

Best Average Worst

O(n) O(n2) O(n2)

Algorithm Performance

slide-23
SLIDE 23

Algorithm
Pattern
Format

  • Name

descriptive
name

  • Synopsis

what
it
is
designed
to
do

  • Context

“sweet
spot”
for
algorithm

  • Forces

implementation
issues

  • Solution

actual
code
for
algorithm

  • Consequences

advantages/disadvantages

  • Analysis

show
performance

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 23

41

slide-24
SLIDE 24

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 24

  • Key
Ideas

– While
locating
proper location,
move
up those
in
the
way – Simple
pointer
swap

  • Implementation

– No
need
for
separate method
calls – Assume
pairwise
swap is
efficient – Can
work
with
generic compare
method

void
sortPointers
(char
**ar,
int
n)
{ 

int
j; 

for
(j
=
1;
j
<
n;
j++)
{ 



int
i
=
j‐1; 



char
*value
=
ar[j]; 



while
(i
>=
0
&&
strcmp(ar[i],
value)>
0)
{ 





ar[i+1]
=
ar[i]; 





i‐‐; 



} 


ar[i+1]
=
value; 

} } sort
(A)

  • 1. for
i=1
to
n–1
do

2. insert
(A,
i,
A[i]) end insert
(A,
pos,
value)

  • 1. i
=
pos–1
  • 2. while
(i
≥
0
and
A[i]
>
value)
then

3. A[i+1]
=
A[i] 4. i
=
i–1

  • 5. A[i+1]=value

end

slide-25
SLIDE 25

Rating
Performance
of
Algorithm

  • Analyze
the
standard
“Big
O”
notation

– Consider
how
well
algorithm
performs
on problem
instances
of
size
n

  • Key
families
include:

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 25

25

slide-26
SLIDE 26

Simplified
“Big
O”
notation

  • We
use
O(…)
notation
a
bit
informally

– For
proper
academic
use,
we
should
use
Θ(…) – In
academic
use

  • O(…)
means
upper
bound
  • Ω(…)
means
lower
bound
  • Θ(…)
declares
both
a
tight
upper
and
lower
bound
  • Reason?

– Simpler
presentation – Common
‘shorthand’
usage
in
industry

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 26

38

slide-27
SLIDE 27

Summary

  • Algorithm
introductions

– INSERTION
SORT

  • Pattern
Format
  • Analysis
tools

– “Big
O”
notation

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 27