AlgorithmsinaNutshell Session4 RecapAlgorithmThemes 11:2011:40 - - PowerPoint PPT Presentation

algorithms in a nutshell
SMART_READER_LITE
LIVE PREVIEW

AlgorithmsinaNutshell Session4 RecapAlgorithmThemes 11:2011:40 - - PowerPoint PPT Presentation

AlgorithmsinaNutshell Session4 RecapAlgorithmThemes 11:2011:40 Outline DataStructures Array,LinkedList,Queue,Heap,PriorityQueue, Tree,Graph Spacevs.Timetradeoff


slide-1
SLIDE 1

Algorithms
in
a
Nutshell

Session
4 Recap
Algorithm
Themes 11:20
–
11:40

slide-2
SLIDE 2

Outline

  • Data
Structures

– Array,
Linked
List,
Queue,
Heap,
Priority
Queue, Tree,
Graph

  • Space
vs.
Time
tradeoff
  • Approaches

– Divide
and
conquer – Greedy
algorithm

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

slide-3
SLIDE 3

Common
Data
Structures

  • Basic
Structures

Structure Glyph Insert Delete Get
ith Set
ith Find Array O(n) O(n) O(1) O(1) O(n) Linked
List O(1) O(n) O(n) O(n) O(n) Stack O(1) O(1) ‐‐‐‐ ‐‐‐‐ ‐‐‐‐ Queue O(1) O(1) ‐‐‐‐ ‐‐‐‐ ‐‐‐‐ Indexed
access

Stack insert
is
push remove
is
pop Queue Insert
adds
to
one
end remove
extracts
from
other
end Linked
List insert
adds
to
front insert
adds
to
tail remove
from
any
location

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

slide-4
SLIDE 4

Dynamic
vs.
Static
sizes

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

  • Fixed
size
allocation
via
arrays

a t e g idx=4 n=8 Stack n=8 Queue head=6 tail=2

  • Increase
size
by
allocating

more
memory

– Don’t
increase
by
fixed amount,
but
double – If
you
only
add
linear
amount each
time,
too
inefficient

int oldCapacity = table.length; Entry[] oldMap = table; int newCapacity = oldCapacity * 2 + 1; Entry[] newMap = new Entry[newCapacity]; table = newMap; ...

slide-5
SLIDE 5

Binary
Heap

  • Heap
can
be
stored
in
array

– Fixed
maximum
size – Assumes
you
only
remove
elements

16 10 14 02 03 05

16 10 14 02 03 05

Level
0 Level
1 Level
2

Structure Glyph Insert Remove
Max Find Binary
Heap O(log
n) O(log
n) ‐‐ Algorithms
in
a
Nutshell 5 (c)
2009,
George
T.
Heineman

slide-6
SLIDE 6

Priority
Queue

  • Most
implementations
provide
only

– insert (element, priority) – getMinimum()

  • If
you
only
need
these
two
operations,
Binary

Heap
can
be
used

  • Often
need
one
more
method

– decreaseKey (element, newPriority) – If
you
need
this
one
also,
you
must
adjust
data
structure

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 6 Structure Glyph Insert Remove
Max Contains DecreaseKey Priority
Queue O(log
n) O(log
n) O(log
n) O(log
n)

slide-7
SLIDE 7

Balanced
Binary
Tree

  • Ideal
dynamic
data
structure

– No
need
to
know
maximum
size
in
advance – Red/Black
Tree
implementations
quite
common

  • Avoids
worst
case
behavior

– Which
might
degenerate
to
O(n)
for
all
operations

Algorithms
in
a
Nutshell (c)
2009,
George
T.
Heineman 7 Structure Glyph Insert Delete Find Tree O(log
n) O(log
n) O(log
n) Balanced
Binary
Tree O(log
n) O(log
n) O(log
n)

slide-8
SLIDE 8

Implementation
Tradeoff

  • Algorithm
designers
have
developed

innovative
data
structures

– Fibonacci
Heaps – Skip
lists – Splay
trees

  • Theoretical
improvement
is
offset
by
more

complicated
implementations

– Also
improvement
is
“amortized”
over
life
of
use – Some
operations
may
be
worse
than
expected

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

slide-9
SLIDE 9

Divide
and
Conquer

  • Intuition
why
it
works
so
well

– Look
for
word
in
Dictionary – Each
iteration
discards
half
of remaining
words
during
search

  • Number
of
iterations

– log2n
=
log
n
throughout
book – O(log
n)
family

  • Clearly
much
better
than
linear

scan
of
n
elements

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

Words
to
search 1,048,576 524,288 262,144 131,072 65,536 32,768 16,384 8,192 4,096 2,048 1,024 512 256 128 64 32 16 8 4 2 1

slide-10
SLIDE 10

Divide
and
Conquer

  • Also
applies
to
composed
problems

– QUICKSORT

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

r b c e w a h m o p j t u d x r m o t w u x b c j d e a h p SortTime(15) SortTime(6)
+ 

SortTime(8) SortTime(15)

=

TimePartition(15)
+SortTime(6)
+
SortTime(8) T(n)
=
O(n)
+
2*T(n/2) T(n)
=
2*O(n)
+
4*T(n/4) T(n)
=
3*O(n)
+
8*T(n/8) T(n)
=
k*O(n)
+
2k*T(n/2k) 30 Continues
k=log
n
times T(n)
=
log
n*O(n)
+
O(n) T(n)
=
O(n
*
log
n)

slide-11
SLIDE 11

Greedy
Algorithm

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

  • Goal
is
to
solve
problem
of
size
n

– Single‐Source
Shortest
Path
from
s
to
all
vertices
vi – DIJKSTRA’S

Algorithm

  • Make
locally
optimal
decision
at
each
stage

– Apply
until
result
yields
globally
optimal
solution

3 4 4 8 7 2 1 2 3 5 1 3 4 4 8 7 2 1 2 3 5 1 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ dist visited 2 ∞ ∞ 4  2 ∞ ∞ 4  dist visited 3 4 4 8 7 2 1 2 3 5 1 3 4 4 8 7 2 1 2 5 1 dist visited 2 5 ∞ 4   2 5 ∞ 4   3 4 4 8 7 2 1 2 3 5 1 3 4 4 8 7 2 1 2 5 1 dist visited 2 5 11 4    2 5 11 4    3 4 4 8 7 2 1 2 3 5 1 3 4 4 8 7 2 1 2 5 1 dist visited 2 5 10 4     2 5 10 4     3 4 4 8 7 2 1 2 3 5 1 3 4 4 8 7 2 1 2 5 1

slide-12
SLIDE 12

Dynamic
Programming

  • Goal
is
to
solve
problem
of
size
n

– All
Pairs
Shortest
Path
between
any
vertices
(vi,
vj) – FLOYD‐WARSHALL
Algorithm

  • Solve
most
constrained
problems
first

– Relax
constraints
systematically
until
done

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

165

dist[u][v]

∞ ∞ 8 ∞ 1 2 3 4 ∞ ∞ ∞ 2 3 ∞ ∞ ∞ ∞ 5 7 ∞ ∞ 1 ∞ 4 1 2 3 4

3 4 4 8 7 2 1 2 3 5 1 3 4 2 1

Shortest distance considering just initial edges

3 4 4 8 7 2 1 2 3 5 1 ∞ ∞ 8 ∞ 1 2 3 4 ∞ 10 ∞ 2 3 13 ∞ 5 ∞ 5 7 ∞ ∞ 1 12 4 1 2 3 4 ∞ ∞ 8 ∞ 1 2 3 4 ∞ 10 ∞ 2 3 13 ∞ 5 ∞ 5 7 ∞ ∞ 1 12 4 1 2 3 4 3 4 4 8 7 2 1 2 3 5 1 ∞ ∞ 8 ∞ 1 2 3 4 ∞ 10 ∞ 2 3 13 ∞ 5 8 5 7 10 4 1 12 4 1 2 3 4 ∞ ∞ 8 ∞ 1 2 3 4 ∞ 10 ∞ 2 3 13 ∞ 5 8 5 7 10 4 1 12 4 1 2 3 4 16 13 8 15 1 2 3 4 15 10 17 2 3 13 20 5 8 5 7 10 4 1 12 4 1 2 3 4 16 13 8 15 1 2 3 4 15 10 17 2 3 13 20 5 8 5 7 10 4 1 12 4 1 2 3 4 ∞ ∞ 8 ∞ 1 2 3 4 ∞ 10 ∞ 2 3 ∞ ∞ ∞ ∞ 5 7 ∞ ∞ 1 12 4 1 2 3 4 ∞ ∞ 8 ∞ 1 2 3 4 ∞ 10 ∞ 2 3 ∞ ∞ ∞ ∞ 5 7 ∞ ∞ 1 12 4 1 2 3 4 3 4 4 8 7 2 1 2 3 5 1

Shortest path can now include vertex 0 Shortest path can now include vertices 0 + 1 Shortest path can now include vertices 0 + 1 + 2 Final result shown below

slide-13
SLIDE 13

Summary

  • Various
data
structures
investigated
  • Various
approaches
described

– Divide
and
conquer – Greedy
algorithm – Dynamic
programming

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