Está en la página 1de 43

# 4 -1

Chapter 3
The Greedy Method
4 -2
The greedy method
Suppose that a problem can be solved by
a sequence of decisions. The greedy
method has that each decision is locally
optimal. These locally optimal solutions
will finally add up to a globally optimal
solution.
Only a few optimization problems can be
solved by the greedy method.
4 -3
An simple example
Problem: Pick k numbers out of n
numbers such that the sum of these k
numbers is the largest.
Algorithm:
FOR i = 1 to k
pick out the largest number and
delete this number from the input.
ENDFOR

4 -4
Shortest paths on a special graph
Problem: Find a shortest path from v
0
to v
3
.
The greedy method can solve this problem.
The shortest path: 1 + 2 + 4 = 7.

4 -5
Shortest paths on a multi-stage graph
Problem: Find a shortest path from v
0
to v
3

in the multi-stage graph.

Greedy method: v
0
v
1,2
v
2,1
v
3
= 23
Optimal: v
0
v
1,1
v
2,2
v
3
= 7
The greedy method does not work.
4 -6
Solution of the above problem
d
min
(i,j): minimum distance between i
and j.

This problem can be solved by the
dynamic programming method.

d
min
(v
0
,v
3
)=min

3+d
min
(v
1,1
,v
3
)
1+d
min
(v
1,2
,v
3
)
5+d
min
(v
1,3
,v
3
)
7+d
min
(v
1,4
,v
3
)

4 -7
Minimum spanning trees (MST)
It may be defined on Euclidean space
points or on a graph.
G = (V, E): weighted connected
undirected graph
Spanning tree : S = (V, T), T _ E,
undirected tree
Minimum spanning tree(MST) : a
spanning tree with the smallest total
weight.
4 -8
An example of MST
A graph and one of its minimum costs
spanning tree
4 -9
Kruskals algorithm for
finding MST
Step 1: Sort all edges into nondecreasing order.
Step 2: Add the next smallest weight edge to the
forest if it will not cause a cycle.
Step 3: Stop if n-1 edges. Otherwise, go to Step2.
4 -10
An example of Kruskals algorithm
4 -11
The details for constructing MST
How do we check if a cycle is formed when a
By the SET and UNION method.
A tree in the forest is used to represent a SET.
If (u, v) e E and u, v are in the same set,
then the addition of (u, v) will form a cycle.
If (u, v) e E and ueS
1
, veS
2
, then perform
UNION of S
1
and S
2
.
4 -12
Time complexity
Time complexity: O(|E| log|E|)
Step 1: O(|E| log|E|)

Step 2 & Step 3:
Where o is the inverse of Ackermanns function.

|)) | |, (| | (| O V E E o
4 -13
Ackermanns function

A(p, q+1) > A(p, q), A(p+1, q) > A(p, q)
A(p, q) =

2q, p = 0
0, q = 0, p > 1
2, p > 1, q = 1
A(p-1, A(p, q-1)), p > 1, q > 2

A( , ) 3 4 2
2
2
2
=

`
)
65536 twos
4 -14
Inverse of Ackermanns function
o(m, n) = min{Z>1|A(Z,4m/n() > log
2
n}
Practically, A(3,4) > log
2
n
o(m, n) s 3
o(m, n) is almost a constant.

4 -15
Prims algorithm for finding
MST
Step 1: x e V, Let A = {x}, B = V - {x}.
Step 2: Select (u, v) e E, u e A, v e B
such that (u, v) has the smallest weight
between A and B.
Step 3: Put (u, v) in the tree. A = A {v},
B = B - {v}
Step 4: If B = C, stop; otherwise, go to
Step 2.

Time complexity : O(n
2
), n = |V|.
(see the example on the next page)
4 -16
An example for Prims algorithm
4 -17
The single-source shortest
path problem
shortest paths from v
0
to all destinations

4 -18
Dijkstras algorithm
1 2 3 4 5 6 7 8
1 0
2 300 0

3 1000 800 0
4 1200 0
5 1500 0 250
6 1000 0 900 1400
7 0 1000
8 1700 0

All entries not shown
are +.
4 -19

Time complexity : O(n
2
)
Vertex
Iteration S Selected (1) (2) (3) (4) (5) (6) (7) (8)
Initial ----
1 5 6 + + + 1500 0 250 + +
2 5,6 7 + + + 1250 0 250 1150 1650
3 5,6,7 4 + + + 1250 0 250 1150 1650
4 5,6,7,4 8 + + 2450 1250 0 250 1150 1650
5 5,6,7,4,8 3 3350 + 2450 1250 0 250 1150 1650
6 5,6,7,4,8,3 2 3350 3250 2450 1250 0 250 1150 1650
5,6,7,4,8,3,2 3350 3250 2450 1250 0 250 1150 1650

4 -20
Can we use Dijkstras algorithm to find the
longest path from a starting vertex to an
ending vertex in an acyclic directed graph?
There are 3 possible ways to apply Dijkstras
algorithm:
Directly use max operations instead of min
operations.
Convert all positive weights to be negative. Then
find the shortest path.
Give a very large positive number M. If the
weight of an edge is w, now M-w is used to
replace w. Then find the shortest path.
All these 3 possible ways would not work!

The longest path problem
4 -21
Activity On Edge (AOE) Networks
Events : v0,v1,

V0
V1
V2
V3
V4
V6
V7
V8
V5
finish
a0 = 6
start
a1 = 4
a2 = 5
a4 = 1
a3 = 1
a5 = 2
a6 = 9
a7 = 7
a8 = 4
a10 = 4
a9 = 2
Some definition:
Predecessor
Successor
Immediate predecessor
Immediate successor
4 -22
critical path
A critical path is a path that has the
longest length. (v0, v1, v4, v7, v8)
V0
V1
V2
V3
V4
V6
V7
V8
V5
a0 = 6
a1 = 4
a2 = 5
a4 = 1
a3 = 1
a5 = 2
a6 = 9
a7 = 7
a8 = 4
a10 = 4
a9 = 2
start finish
6 + 1 + 7 + 4 = 18 (Max)
4 -23
The earliest time
The earliest time of an activity, a
i
, can occur is the length
of the longest path from the start vertex v
0
to a
i
s start
vertex.
Ex: the earliest time of activity a
7
can occur is 7.
We denote this time as early(i) for activity a
i
.
early(6) = early(7) = 7.
V0
V1
V2
V3
V4
V6
V7
V8
V5
finish
a0 = 6
start
a1 = 4
a2 = 5
a4 = 1
a3 = 1
a5 = 2
a6 = 9
a7 = 7
a8 = 4
a10 = 4
a9 = 2
6/?
0/?
7/?
16/?
0/?
5/?
7/?
14/? 7/?
4/?
0/?
18
4 -24
The latest time
The latest time, late(i), of activity, a
i
, is defined to be the
project duration.
Ex: early(5) = 5 & late(5) = 8; early(7) = 7 & late(7) = 7
V0
V1
V2
V3
V4
V6
V7
V8
V5
finish
a0 = 6
start
a1 = 4
a2 = 5
a4 = 1
a3 = 1
a5 = 2
a6 = 9
a7 = 7
a8 = 4
a10 = 4
a9 = 2
late(5) = 18 4 4 - 2 = 8
late(7) = 18 4 7 = 7

6/6
0/1
7/7
16/16
0/3
5/8
7/10
14/14 7/7
4/5
0/0
4 -25
Critical activity
A critical activity is an activity for which
early(i) = late(i).
The difference between late(i) and early(i) is
a measure of how critical an activity is.
Calculation
of
Latest Times
Calculation
of
Earliest Times
Finding
Critical path(s)
To solve
AOE Problem
4 -26
Calculation of Earliest Times
Let activity a
i
is represented by edge (u, v).
early (i) = earliest [u]
late (i) = latest [v] duration of activity a
i

We compute the times in two stages:
a forward stage and a backward stage.
The forward stage:
Step 1: earliest [0] = 0
Step 2: earliest [j] = max {earliest [i] + duration of (i, j)}
i is in P(j)
P(j) is the set of immediate predecessors of j.
4 -27
The backward stage:
Step 1: latest[n-1] = earliest[n-1]
Step 2: latest [j] = min {latest [i] - duration of (j, i)}
i is in S(j)
S(j) is the set of vertices adjacent from vertex j.
latest[8] = earliest[8] = 18
latest[6] = min{earliest[8] - 2} = 16
latest[7] = min{earliest[8] - 4} = 14
latest[4] = min{earliest[6] 9; earliest[7] 7} = 7
latest[1] = min{earliest[4] - 1} = 6
latest[2] = min{earliest[4] - 1} = 6
latest[5] = min{earliest[7] - 4} = 10
latest[3] = min{earliest[5] - 2} = 8
latest[0] = min{earliest[1] 6; earliest[2] 4; earliest[3] 5} = 0
Calculation of Latest Times
4 -28
Graph with non-critical activities deleted
V0
V1
V2
V3
V4
V6
V7
V8
V5
finish
a0
start
a1
a2
a4
a3
a5
a6
a7
a8
a10
a9
V0
V1
V4
V6
V7
V8
finish
a0
start
a3
a6
a7 a10
a9
Activity Early Late L - E Critical
a
0
0 0 0 Yes
a
1
0 2 2 No
a
2
0 3 3 No
a
3
6 6 0 Yes
a
4
4 6 2 No
a
5
5 8 3 No
a
6
7 7 0 Yes
a
7
7 7 0 Yes
a
8
7 10 3 No
a
9
16 16 0 Yes
a
10
14 14 0 Yes
4 -29
The longest path(critical path) problem
can be solved by the critical path
method(CPM) :
Step 1:Find a topological ordering.
Step 2: Find the critical path.
(see [Horiwitz 1998].)

CPM for the longest path
problem
4 -30
The 2-way merging problem
# of comparisons required for the linear 2-
way merge algorithm is m
1
+ m
2
-1 where m
1

and m
2
are the lengths of the two sorted lists
respectively.
The problem: There are n sorted lists, each of
length m
i
. What is the optimal sequence of
merging process to merge these n lists into
one sorted list ?

4 -31
Extended Binary Tree Representing a 2-way
Merge
Extended binary trees
4 -32
An example of 2-way merging
Example: 6 sorted lists with lengths 2, 3,
5, 7, 11 and 13.
4 -33
Time complexity for
generating an optimal
extended binary
tree:O(n log n)

4 -34
Huffman codes
In telecommunication, how do we represent a
set of messages, each with an access
frequency, by a sequence of 0s and 1s?
To minimize the transmission and decoding
costs, we may use short strings to represent
more frequently used messages.
This problem can by solved by using an
extended binary tree which is used in the 2-
way merging problem.
4 -35
An example of Huffman algorithm
Symbols: A, B, C, D, E, F, G
freq. : 2, 3, 5, 8, 13, 15, 18

Huffman codes:
A: 10100 B: 10101 C: 1011
D: 100 E: 00 F: 01
G: 11
A Huffman code Tree
4 -36
Chapter 4 Greedy method
Input(A[1n])
Solution
for i 1 to n do
X SELECT(A) (data structurepreprocessing
(delete))
If FEASIBLE( solution, x)
then solution UNION( select, x)
endif
repeat
Output (solution)

(1)decision
(2)decisionoptimal (local
check)
Note
(1) Local optimal global optimal
(2)sorting

4 -37
Knapsack problem
Given positive integers P
1
, P
2
, , P
n
,
W
1
, W
2
, , W
n
and M.
Find X
1
, X
2
, ,X
n
, 0X
i
1 such that

is maximized.

Subject to

=
n
1 i
i i
X P

=
s
n
1 i
i i
M X W
4 -38
Knapsack Problem Example
M = 20, (P
1
, P
2
, P
3
)=(25,24,15)
(W
1
, W
2
, W
3
) = (18, 15, 10)
Four feasible solutions, 4 is optimal
(X
1
, X
2
, X
3
) W
i
X
i
P
i
X

1. (1/2,1/3,1/4) 16.5 24.25
2. (1,2/15,0) 20 28.2
3. (0, 2/3, 1) 20 31
4. (0, 1, 1/2) 20 31.5
4 -39
Given n jobs. Associated with job I is an
i
0. For any job I the
profit P
i
is earned iff the job is completed by
its deadline. To complete a job, one has to
process the job on a machine for one unit of
time.
A feasible solution is a subset J of jobs such
that each job in the subset can be
completed by its deadline. We want to
maximize the

eJ i
i
P
4 -40
n = 4, (p
1
, p
2
, p
3
, p
4
) = (100,10,15,27)
(d
1
, d
2
, d
3
, d
4
) = (2, 1, 2, 1)
Feasible solution Processing sequence value
1 (1,2) 2,1 110
2 (1,3) 1,3 or 3, 1 115
3 (1,4) 4, 1 127
4 (2,3) 2, 3 25
5 (3,4) 4,3 42
6 (1) 1 100
7 (2) 2 10
8 (3) 3 15
9 (4) 4 27
4 -41
Optimal Storage on Tapes
There are n programs that are to be stored
on a computer tape of length L. Associated
with each program i is a length L
i
.
Assume the tape is initially positioned at
the front. If the programs are stored in the
order I = i
1
, i
2
, , i
n
, the time t
j
needed to
retrieve program i
j

t
j
=
=
j
1 k
i
k
L
4 -42
Optimal Storage on Tapes
If all programs are retrieved equally often,
then the
mean retrieval time (MRT) =

This problem fits the ordering paradigm.
Minimizing the MRT is equivalent to
minimizing

d(I) =

=
n
1 j
j
t
n
1

= =
n
1 j
j
1 k
i
k
L
4 -43
Example
Let n = 3, (L
1
,L
2
,L
3
) = (5,10,3). 6 possible
orderings. The optimal is 3,1,2

Ordering I d(I)
1,2,3 5+5+10+5+10+3 = 38
1,3,2 5+5+3+5+3+10 = 31
2,1,3 10+10+5+10+5+3 = 43
2,3,1 10+10+3+10+3+5 = 41
3,1,2 3+3+5+3+5+10 = 29
3,2,1, 3+3+10+3+10+5 = 34