Analysis of Algorithms
Algorithm
Input
Output
An
algorithm
is a stepbystep procedure for
solving a problem in a finite amount of time.
Analysis of Algorithms
2
Running Time (§3.1)
Most algorithms transform
input objects into output
objects.
The running time of an
algorithm typically grows
with the input size.
Average case time is often
difficult to determine.
We focus on the worst case
running time.
±
Easier to analyze
±
Crucial to applications such as
games, finance and robotics
0
20
40
60
80
100
120
Running Time
1000
2000
3000
4000
Input Size
best case
average case
worst case
Analysis of Algorithms
3
Experimental Studies (§ 3.1.1)
Write a program
implementing the
algorithm
Run the program with
inputs of varying size and
composition
Use a function, like the
builtin
clock()
function, to
get an accurate measure
of the actual running time
Plot the results
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
05
0
1
0
0
Input Size
Time (ms)
Analysis of Algorithms
4
Limitations of Experiments
It is necessary to implement the
algorithm, which may be difficult
Results may not be indicative of the
running time on other inputs not included
in the experiment.
In order to compare two algorithms, the
same hardware and software
environments must be used
Analysis of Algorithms
5
Theoretical Analysis
Uses a highlevel description of the
algorithm instead of an implementation
Characterizes running time as a
function of the input size,
n
.
Takes into account all possible inputs
Allows us to evaluate the speed of an
algorithm independent of the
hardware/software environment
Analysis of Algorithms
6
Pseudocode (§3.1.2)
Highlevel description
of an algorithm
More structured than
English prose
Less detailed than a
program
Preferred notation for
describing algorithms
Hides program design
issues
Algorithm
arrayMax
(
A
,
n
)
Input
array
A
of
n
integers
Output
maximum element of
A
currentMax
←
A
[0]
for
i
←
1
to
n
−
1
do
if
A
[
i
]
>
currentMax
then
currentMax
←
A
[
i
]
return
currentMax
Example: find max
element of an array
This preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentAnalysis of Algorithms
7
Pseudocode Details
Control flow
±
if
…
then
…
[
else
…]
±
while
…
do
…
±
repeat
…
until
…
±
for
…
do
…
±
Indentation replaces braces
Method declaration
Algorithm
method
(
arg
[,
arg
…])
Input
…
Output
…
Method/Function call
var.method
(
arg
[,
arg
…])
Return value
return
expression
Expressions
←
Assignment
(like
=
in C++)
=
Equality testing
(like
==
in C++)
n
2
Superscripts and other
mathematical
formatting allowed
Analysis of Algorithms
8
The Random Access Machine
(RAM) Model
A
CPU
An potentially unbounded
bank of
memory
cells,
each of which can hold an
arbitrary number or
character
0
1
2
Memory cells are numbered and accessing
any cell in memory takes unit time.
This is the end of the preview.
Sign up
to
access the rest of the document.
 Fall '08
 Staff
 Algorithms, Data Structures, Big O notation, Analysis of algorithms

Click to edit the document details