COSC 3101NJ. Elder Announcements Midterms are marked Assignment 2: –Still analyzing

Preview:

DESCRIPTION

COSC 3101NJ. Elder What is a loop invariant? An assertion about the state of one or more variables used in the loop. When the exit condition is met, the LI leads naturally to the postcondition (the goal of the algorithm). Thus the LI must be a statement about the variables that store the results of the computation.

Citation preview

COSC 3101N J. Elder

Announcements• Midterms are marked

• Assignment 2: – Still analyzing

COSC 3101N J. Elder

Loop Invariants (Revisited)• Question 5(a): Design an iterative

algorithm for Parity:

p=0for i = 1 to n do p = xor(p,s[i])return p

Loop Invariant?

LI: After i iterations are performed, p=Parity(s[1…i])

COSC 3101N J. Elder

What is a loop invariant?

• An assertion about the state of one or more variables used in the loop.

• When the exit condition is met, the LI leads naturally to the postcondition (the goal of the algorithm).

• Thus the LI must be a statement about the variables that store the results of the computation.

COSC 3101N J. Elder

Know What an LI Is Not

``the LI is NOT...''– code

– The steps taken by the algorithm

– A statement about the range of values assumed by the loop index.

COSC 3101N J. Elder

Dynamic Programming: Recurrence

COSC 3101N J. Elder

Dynamic programming

• Step 1: Describe an array of values you want to compute.

• Step 2: Give a recurrence for computing later values from earlier (bottom-up).

• Step 3: Give a high-level program.

• Step 4: Show how to use values in the array to compute an optimal solution.

COSC 3101N J. Elder

Example 1. Rock climbing

At every step our climber can reach exactly three handholds: above, above and to the right and above and to the left.

There is a table of “danger ratings” provided. The “Danger” of a path is the sum of danger ratings of all handholds on the path.

5 3

4

2

COSC 3101N J. Elder

For every handhold, there is only one “path” rating. Once we have reached a hold, we don’t need to know how we got there to move to the next level.

This is called an “optimal substructure” property. Once we know optimal solutions to

subproblems, we can compute an optimal solution to the problem itself.

COSC 3101N J. Elder

Step 2. Define a RecurrenceLet C(i,j) represent the danger of hold (i,j)

Let A(i,j) represent the cumulative danger of the safest path from the bottom to hold (i,j)

ThenA(i,j) = C(i,j)+min{A(i-1,j-1),A(i-1,j),A(i-1,j+1)}

i.e., the safest path to hold (i,j) subsumes the safest path to holds at level i-1 from which hold (i,j) can be reached.

COSC 3101N J. Elder

Example 2. Activity Scheduling with Profits

1 1g 2 10g

3 1g

COSC 3101N J. Elder

Step 2. Provide a Recurrent Solution

(0) 0( ) max{ ( 1), ( ( ))}, {1,..., }i

AA i A i g A H i i n

Decide not to schedule activity i

Profit from scheduling activity i

Optimal profit from scheduling activities that end before activity i begins

1 21. Sort activities according to fini ( (shing lo ti g ))me: nf f O nf n

2. {1,..., }, compute ( ) max{ {1,2,..., 1 ( ( log )} } )| l ii n H Oi l i f s n n

. . ( ) is the last event that ends before event starts.i e H i i

COSC 3101N J. Elder

Example 3: Scheduling Jobs with Deadlines, Profits and Durations

information ( , , ) about activities, whereinteger deadline for job integer duration of job real-valued pr

Input

ofit of job

:

i i i

i

i

i

d t g nd it ig i

A C is a sequence { (1), (2),..., ( )} such that: ( ) scheduled start time of job ( ) 1 if job is not scheduled

schedule C C C C nC i iC i i

A feasible schedule C with maximum profit: (Output ): ii C

P C g

A schedule C is if each scheduled job finishes by its deadlineand no two scheduled jobs over

feasilap

bleped.

COSC 3101N J. Elder

Dynamic Programming Solution

Precomputation:

1 2Sort activities according to de ( ( log ))adline: nd Od n nd

COSC 3101N J. Elder

Step 2. Provide a Recurrent Solution(0, ) 0 {0,..., }

For {1,..., }, {0,..., }, define t min{ , }( is the latest time that we can schedule job so that itends both by its deadline and by time .)Then:

0 ( , ) ( 1, )

i i

A t t d

i n t d t d tt i

t

t A i t A i tt

0 ( , ) max{ ( 1, ), ( 1, )}iA i t A i t g A i t

Decide not to schedule job i

Profit from job i Profit from scheduling activities that end before job i begins

COSC 3101N J. Elder

Step 2. (cntd…) Proving the Recurrent Solution

We effectively schedule job i at the latest possible time.

This leaves the largest and earliest contiguous block of time for scheduling jobs with earlier deadlines.

For {1,..., }, {0,..., }, define t min{ , }( is the latest time that we can schedule job so that itends both by its deadline and by time .)

i ii n t d t d tt i

t

Then:0 ( , ) ( 1, )t A i t A i t

0 ( , ) max{ ( 1, ), ( 1, )}it A i t A i t g A i t

COSC 3101N J. Elder

2d 1id id1d … t

it

t

event iCase 1

2d 1id id1d … t

it

t

event iCase 2

COSC 3101N J. Elder

Example 3. Longest Common Subsequence

COSC 3101N J. Elder

Optimal Substructure• Input: 2 sequences, X = x1, . . . , xm and Y =

y1, . . . , yn.

COSC 3101N J. Elder

Proof of Optimal Substructure Part 1

1 1

1 1

1

{ ,..., }; { ,..., }{ ,..., }; { ,..., }

{ ,..., } is an LCS of an

Notati

on:

d .

m n

i i i i

k

X x x Y y yX x x Y y yZ z z X Y

1 1 11. If , then and is an LCS of and . :

m n k m n k m n

Theorex y z x y Z X

mY

Proof that :k m nz x y Suppose . Then could append to common subsequenceof and of length 1 contradiction.

k m m nz x x y ZX Y k

1 1 1Proof that is an LCS of and :k m nZ X Y

1 1 1 is a length-( 1) common subsequence of and .k m nZ k X Y

1 1Suppose there is a longer common subsequence of and .m nW X Y

Appending to common subsequence of length >k contradictionm nx y W

COSC 3101N J. Elder

Proof of Optimal Substructure Part 2

1 1

1 1

1

{ ,..., }; { ,..., }{ ,..., }; { ,..., }

{ ,..., } is an LCS of an

Notati

on:

d .

m n

i i i i

k

X x x Y y yX x x Y y yZ z z X Y

12. If and , then is an LCS of :

an d .m n k m mx y z x ZTheor

Ym

Xe

Proof :

1 is a common subsequence of and .k m mz x Z X Y

1Suppose there is a common subsequence of and mW X Y

of length also a common subsequence of and contradictionk W X Y

COSC 3101N J. Elder

Proof of Optimal Substructure Part 3

1 1

1 1

1

{ ,..., }; { ,..., }{ ,..., }; { ,..., }

{ ,..., } is an LCS of an

Notati

on:

d .

m n

i i i i

k

X x x Y y yX x x Y y yZ z z X Y

12. If and , then is an LCS of a:

nd .m n k n nx y zTheor

y Z X Yem

Proof :

As for Part 2.

COSC 3101N J. Elder

Step 2. Provide a Recurrent Solution

Input sequences are empty

Last elements match: must be part of LCS

Last elements don’t match: at most one of them is part of LCS

COSC 3101N J. Elder

Example 6: Longest Increasing Subsequence

• Input: 1 sequence, X = x1, . . . , xn.

• Output: the longest increasing subsequence of X.

• Note: A subsequence doesn’t have to be consecutive, but it has to be in order.

COSC 3101N J. Elder

Step 1. Define an array of values to compute

{0,..., }, length of LIS of endiA( ng in .) iii n X x

Ultimately, we are intere maxsted { ( }in .) |1A i i n

COSC 3101N J. Elder

Step 2. Provide a Recurrent Solution

for 1 ,( ) 1 max{ ( ) |1 and }j i

i nA i A j j i x x

COSC 3101N J. Elder

Step 3. Provide an Algorithm

Running time? O(n2)function A=LIS(X)

for i=1:length(X)

m=0;

for j=1:i-1

if X(j) < X(i) & A(j) > m

m=A(j);

end

end

A(i)=m+1;

end

COSC 3101N J. Elder

Step 4. Compute Optimal Solution

Running time? O(n)

function lis=printLIS(X, A)[m,mi]=max(A);lis=printLISm(X,A,mi,'LIS: ');lis=[lis,sprintf('%d', X(mi))];

function lis=printLISm(X, A, mi, lis)if A(mi) > 1 i=mi-1; while ~(X(i) < X(mi) & A(i) == A(mi)-1) i=i-1; end lis=printLISm(X, A, i, lis); lis=[lis, sprintf('%d ', X(i))];end

COSC 3101N J. Elder

LIS Example

X = 96 24 61 49 90 77 46 2 83 45

A = 1 1 2 2 3 3 2 1 4 2

> printLIS(X,A)

> LIS: 24 49 77 83

COSC 3101N J. Elder

Example 6: Optimal Binary Search Trees

1 1 2

Sequence { ,..., } of distinct keys,

probability

Inp

that a search is for key

ut:

n n

i i

K k k n k k kp k

BST with minimum expected searcOutp

h ut:

cost

COSC 3101N J. Elder

Expected Search Cost

Which BST is more efficient?

Cost = # of items examined.

For key , cost = depth ( ) 1i T ik k

1

[search cost in ]

(depth ( ) 1)n

T i ii

E T

k p

1

1 depth ( )n

T i ii

k p

COSC 3101N J. Elder

Observations

COSC 3101N J. Elder

Optimal Substructure

COSC 3101N J. Elder

Optimal Substructure (cntd…)

TLet e expected search cost in subtree , starting from root( )T T

depth ( )j

l T ll i

p k

TLet e expected search cost in subtree , starting from root( )T T

(depth (root( )) depth ( ))j

l T T ll i

p T k

depth (root( )) depth ( )j j

T l l T ll i l i

T p p k

Tdepth (root( )) ej

T ll i

T p

T

T

COSC 3101N J. Elder

Recursive Solution

COSC 3101N J. Elder

Recursive Solution (cntd…)

COSC 3101N J. Elder

Step 2. Provide a Recurrent Solution

Expected cost of search for left subtree

Added cost when subtrees embedded under root

Expected cost of search for right subtree

COSC 3101N J. Elder

n)

Step 3. Provide an Algorithm

Running time? O(n3)

work on subtrees of increasing size l

COSC 3101N J. Elder

Example

COSC 3101N J. Elder

Example (cntd…)

COSC 3101N J. Elder

Step 4. Compute Optimal Solution

Running time? O(n)

COSC 3101N J. Elder

Elements of Dynamic Programming

• Optimal substructure: – an optimal solution to the problem contains

within it optimal solutions to subproblems.

COSC 3101N J. Elder

Elements of Dynamic Programming

• Cut and paste: prove optimal substructure by contradiction:– assume an optimal solution to a problem with suboptimal solution to

subproblem

– cut out the suboptimal solution to the subproblem.

– paste in the optimal solution to the subproblem.

– show that this results in a better solution to the original problem.

– This contradicts our assertion that our original solution is optimal.

COSC 3101N J. Elder

• Dynamic programming uses optimal substructure from the bottom up:– First find optimal solutions to subproblems

– Then choose which to use in optimal solution to problem.

Elements of Dynamic Programming

COSC 3101N J. Elder

Section V. Graph Algorithms

COSC 3101N J. Elder

(c) The subgraph of the graph in part (a) induced by the vertex set {1,2,3,6}.

(a) A directed graph G = (V, E), where V = {1,2,3,4,5,6} and E = {(1,2), (2,2), (2,4), (2,5), (4,1), (4,5), (5,4), (6,3)}. The edge (2,2) is a self-loop.

(b) An undirected graph G = (V,E), where V = {1,2,3,4,5,6} and E = {(1,2), (1,5), (2,5), (3,6)}. The vertex 4 is isolated.

Directed and Undirected Graphs

COSC 3101N J. Elder

Graph Isomorphism

COSC 3101N J. Elder

Trees

COSC 3101N J. Elder

Representations: Undirected Graphs

Adjacency List Adjacency Matrix

COSC 3101N J. Elder

Representations: Directed Graphs

Adjacency List Adjacency Matrix