19
ALGORITHMS THIRD YEAR BANHA UNIVERSITY FACULTY OF COMPUTERS AND INFORMATIC Lecture five Dr. Hamdy M. Mousa

ALGORITHMS THIRD YEAR

Embed Size (px)

DESCRIPTION

ALGORITHMS THIRD YEAR. BANHA UNIVERSITY FACULTY OF COMPUTERS AND INFORMATIC. Lecture five. Dr. Hamdy M. Mousa. Recurrences. Recurrence. A recurrence is an equation or inequality that describes a function in terms of its value on smaller inputs. For Examples, - PowerPoint PPT Presentation

Citation preview

Page 1: ALGORITHMS THIRD YEAR

ALGORITHMS

THIRD YEAR

BANHA UNIVERSITYFACULTY OF COMPUTERS AND INFORMATIC

Lecture five

Dr. Hamdy M. Mousa

Page 2: ALGORITHMS THIRD YEAR

Recurrences

Page 3: ALGORITHMS THIRD YEAR

• A recurrence is an equation or inequality that describes a function in terms of its value on smaller inputs.

• For Examples,• The worst-case running time T (n) of the MERGE-

SORT procedure could be described by the recurrence

T (n) = (1) if n = 1 ,T(n) = 2T (n/2) + (n) if n > 1 ,

• solution T (n) = (n lg n).

Recurrence

Page 4: ALGORITHMS THIRD YEAR

Recurrence Solution Methods• Three methods for solving recurrences - that is, for

obtaining asymptotic “” or “O” bounds on the solution.

• The substitution method, we guess a bound and then use mathematical induction to prove our guess correct.

• The recursion-tree method converts the recurrence into a tree whose nodes represent the costs incurred at various levels of the recursion; we use techniques for bounding summations to solve the recurrence.

• The master method provides bounds for recurrences of the formT (n) = aT (n/b) + f (n),where a ≥ 1, b > 1, and f (n) is a given function.

Page 5: ALGORITHMS THIRD YEAR

Running time

• The running time T (n) of an algorithm is only defined when n is an integer, since for most algorithms, the size of the input is always an integer.

• For example, the recurrence describing the worst-case running time of MERGE-SORT

1)(])2/([])2/([

,1)1()(

nifnnTnT

nifnT

Page 6: ALGORITHMS THIRD YEAR

Running time• Example: T (n) = 2T (n/2) + (n),

with solution T (n) = (n lg n).• Since the running time of an algorithm on a

constant-sized input is a constant,• The boundary conditions are usually expressed

as “T (n) = O(1) for sufficiently small n.”• When we desire an exact, rather than an

asymptotic, solution, we need to deal with boundary conditions.

• In practice, we just use asymptotics most of the time, and we ignore boundary conditions.

Page 7: ALGORITHMS THIRD YEAR

Substitution method

• The substitution method for solving recurrences entails two steps:

1. Guess the solution.

2. Use induction to find the constants and show that the solution works.

Example:

1])2/([2

,11)(

nifnnT

nifnT

Page 8: ALGORITHMS THIRD YEAR

1. Guess:

T (n) = n lg n + n. [Here, we have a recurrence with an exact function,

rather than asymptotic notation, and the solution is also exact rather than asymptotic. We’ll have to check boundary conditions and the base case.]

2. Induction:

Basis: n = 1 n lg n + n = 1 = T (n)

Substitution method

Page 9: ALGORITHMS THIRD YEAR

Substitution method

Inductive step: • Inductive hypothesis is that T (k) = k lg k + k for all k < n.• We’ll use this inductive hypothesis for T (n/2).

Page 10: ALGORITHMS THIRD YEAR

For the substitution method:• Name the constant in the additive term.• Show the upper (O) and lower () bounds

separately. Might need to use different constants for each.

Example:T (n) = 2T (n/2)+(n). If we want to show an upper bound of

T (n) = 2T (n/2) + O(n), we write T (n) ≤ 2T (n/2) + cn for some positive constant c.

Substitution method

Page 11: ALGORITHMS THIRD YEAR

1. Upper bound:

Guess: T (n) ≤ dn lg n for some positive constant d. We are given c in the recurrence, and we get to choose d as any positive constant. It’s OK for d to depend on c.

Therefore, T (n) = O(n lg n).

Substitution method

Page 12: ALGORITHMS THIRD YEAR

2. Lower bound: Write

T (n) ≥ 2T (n/2) + cn for some positive constant c.

Guess: T (n) ≥ dn lg n for some positive constant d.

Substitution:

Substitution method

Page 13: ALGORITHMS THIRD YEAR

Avoiding pitfalls

It is easy to err in the use of asymptotic notation. • For example, in the recurrence

T (n) = 2T (n/2) + n we can falsely “prove” T (n) = O(n) by guessing

T (n) ≤ cn and then arguingT (n) ≤ 2(c n/2) + n

≤ cn + n= O(n) , ⇐ wrong!!

• since c is a constant. The error is that we haven’t proved the exact form of the inductive hypothesis, that is, that T (n) ≤ cn.

Page 14: ALGORITHMS THIRD YEAR

Changing variables• Sometimes, a little algebraic manipulation can make an

unknown recurrence similar to one you have seen before.

As an example, consider the recurrenceT (n) = 2T (√n) + lg n ,

• We can simplify this recurrence, though, with a change of variables. Renaming m = lg n yields

T (2m) = 2T (2m/2) + m .• rename S(m) = T (2m) to produce the new recurrence

S(m) = 2S(m/2) + m ,• which is very much like recurrence (4.4). Indeed, this

new recurrence has the same solution:S(m) = O(m lgm).

Changing back from S(m) to T (n), we obtain

T (n) = T (2m) = S(m) = O(m lg m) = O(lg n lg lg n).

Page 15: ALGORITHMS THIRD YEAR

The recursion-tree method

• In a recursion tree, each node represents the cost of a single subproblem somewhere in the set of recursive function invocations. We sum the costs within each level of the tree to obtain a set of per-level costs, and then we sum all the per-level costs to determine the total cost of all levels of the recursion.

• Recursion tree use to generate a guess. Then verify by substitution method.

Page 16: ALGORITHMS THIRD YEAR

Example: T (n) = T (n/3)+T (2n/3)+(n).

For upper bound, rewrite as T (n) ≤ T (n/3) + T (2n/3) + cn;

For lower bound, as T (n) ≥ T (n/3) + T (2n/3) + cn.

• By summing across each level, the recursion tree shows the cost at each level of recursion (minus the costs of recursive calls, which appear in subtrees):

The recursion-tree method

Page 17: ALGORITHMS THIRD YEAR

There are log3 n full levels, and after log3/2 n levels, the problem size is down to 1.

•Each level contributes ≤ cn. •Lower bound guess: ≥ dn log3 n = (n lg n) for some positive constant d. •Upper bound guess: ≤ dn log3/2 n = O(n lg n) for some positive constant d.

•Then prove by substitution.

The recursion-tree method

Page 18: ALGORITHMS THIRD YEAR

Therefore, T (n) = O(n lg n).

The recursion-tree method

Page 19: ALGORITHMS THIRD YEAR

2. Lower bound:Guess: T (n) ≥ dn lg n.Substitution:

Same as for the upper bound, but replacing ≤ by ≥. End up needing

Therefore, T (n) = (n lg n).

Since T (n) = O(n lg n) and T (n) = (n lg n),

we conclude thatT (n) = (n lg n).

The recursion-tree method