introduction to algorithms - massachusetts institute of technology

66
Introduction to Algorithms 6.046J/18.401J Lecture 4 Prof. Piotr Indyk

Upload: others

Post on 04-Feb-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduction to Algorithms - Massachusetts Institute of Technology

Introduction to Algorithms6.046J/18.401J

Lecture 4Prof. Piotr Indyk

Page 2: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.2

Today

• Randomized algorithms: algorithms that flip coins– Matrix product checker: is AB=C ?– Quicksort:

• Example of divide and conquer• Fast and practical sorting algorithm• Other applications on Wednesday

Page 3: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.3

Randomized Algorithms

• Algorithms that make random decisions• That is:

– Can generate a random number x from some range {1…R}

– Make decisions based on the value of x• Why would it make sense ?

Page 4: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.4

Two cups, one coin

• If you always choose a fixed cup, the adversary will put the coin in the other one, so the expected payoff = $0

• If you choose a random cup, the expected payoff = $0.5

Page 5: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.5

Randomized Algorithms

• Two basic types:– Typically fast (but sometimes slow):

Las Vegas– Typically correct (but sometimes output

garbage): Monte Carlo• The probabilities are defined by the random

numbers of the algorithm! (not by random choices of the problem instance)

Page 6: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.6

Matrix Product

• Compute C=A×B– Simple algorithm: O(n3) time– Multiply two 2×2 matrices using 7 mult. →O(n2.81…) time [Strassen’69]

– Multiply two 70 × 70 matrices using 143640multiplications → O(n2.795…) time [Pan’78]

– …– O(n2.376…) [Coppersmith-Winograd]

Page 7: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.7

Matrix Product Checker

• Given: n×n matrices A,B,C• Goal: is A×B=C ?• We will see an O(n2) algorithm that:

– If answer=YES, then Pr[output=YES]=1– If answer=NO, then Pr[output=YES] ≤ ½

Page 8: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.8

The algorithm

• Algorithm:– Choose a random binary vector x[1…n] ,

such that Pr[xi=1]=½ , i=1…n– Check if ABx=Cx

• Does it run in O(n2) time ?– YES, because ABx = A(Bx)

Page 9: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.9

Correctness

• Let D=AB, need to check if D=C• What if D=C ?

– Then Dx=Cx ,so the output is YES• What if D≠C ?

– Presumably there exists x such that Dx≠Cx

– We need to show there are many such x

Page 10: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.10

D≠C

≠?

Page 11: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.11

Vector product

• Consider vectors d≠c (say, di≠ci)• Choose a random binary x• We have dx=cx iff (d-c)x=0• Pr[(d-c)x=0]= ?

(d-c): d1-c1 d2-c2 di-ci dn-cn… …x: x1 x2 xi xn… … = Σj≠i(dj-cj)xj + (di-ci)xi

Page 12: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.12

Analysis, ctd.

• If xi=0, then (c-d)x=S1

• If xi=1, then (c-d)x=S2≠S1

• So, ≥1 of the choices gives (c-d)x≠0→ Pr[cx=dx] ≤ ½

Page 13: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.13

Matrix Product Checker

• Is A×B=C ?• We have an algorithm that:

– If answer=YES, then Pr[output=YES]=1– If answer=NO, then Pr[output=YES] ≤ ½

• What if we want to reduce ½ to ¼ ?– Run the algorithm twice, using independent random numbers– Output YES only if both runs say YES

• Analysis:– If answer=YES, then Pr[output1=YES, output2=YES ]=1– If answer=NO, then

Pr[output=YES] = Pr[output1=YES, output2=YES]= Pr[output1=YES]*Pr[output2=YES]≤ ¼

Page 14: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.14

Quicksort

• Proposed by C.A.R. Hoare in 1962.• Divide-and-conquer algorithm.• Sorts “in place” (like insertion sort, but not

like merge sort).• Very practical (with tuning).• Can be viewed as a randomized Las Vegas

algorithm

Page 15: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.15

Quicksort an n-element array:1. Divide: Partition the array into two subarrays

around a pivot x such that elements in lower subarray ≤ x ≤ elements in upper subarray.

2. Conquer: Recursively sort the two subarrays.3. Combine: Trivial.

Divide and conquer

xx

Key: Linear-time partitioning subroutine.

≤ x≤ x≤ x≤ x xx ≥ x≥ x

Page 16: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.16

Pseudocode for quicksortQUICKSORT(A, p, r)

if p < rthen q ← PARTITION(A, p, r)

QUICKSORT(A, p, q–1)QUICKSORT(A, q+1, r)

Initial call: QUICKSORT(A, 1, n)

Page 17: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.17

xx

Partitioning subroutinePARTITION(A, p, r) ⊳ A[p . . r]

x ← A[p] ⊳ pivot = A[p]i ← pfor j ← p + 1 to r

do if A[ j] ≤ xthen i ← i + 1

exchange A[i] ↔ A[ j]exchange A[p] ↔ A[i]return i

≤ x≤ x ≥ x≥ x ??p i rj

Invariant:

Page 18: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.18

Example of partitioning

i j66 1010 1313 55 88 33 22 1111

Page 19: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.19

Example of partitioning

i j66 1010 1313 55 88 33 22 1111

Page 20: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.20

Example of partitioning

i j66 1010 1313 55 88 33 22 1111

Page 21: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.21

Example of partitioning

66 1010 1313 55 88 33 22 1111

i j66 55 1313 1010 88 33 22 1111

Page 22: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.22

Example of partitioning

66 1010 1313 55 88 33 22 1111

i j66 55 1313 1010 88 33 22 1111

Page 23: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.23

Example of partitioning

66 1010 1313 55 88 33 22 1111

i j66 55 1313 1010 88 33 22 1111

Page 24: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.24

Example of partitioning

66 1010 1313 55 88 33 22 1111

i j66 55 33 1010 88 1313 22 1111

66 55 1313 1010 88 33 22 1111

Page 25: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.25

Example of partitioning

66 1010 1313 55 88 33 22 1111

i j66 55 33 1010 88 1313 22 1111

66 55 1313 1010 88 33 22 1111

Page 26: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.26

Example of partitioning

66 1010 1313 55 88 33 22 1111

66 55 33 1010 88 1313 22 1111

66 55 1313 1010 88 33 22 1111

i j66 55 33 22 88 1313 1010 1111

Page 27: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.27

Example of partitioning

66 1010 1313 55 88 33 22 1111

66 55 33 1010 88 1313 22 1111

66 55 1313 1010 88 33 22 1111

i j66 55 33 22 88 1313 1010 1111

Page 28: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.28

Example of partitioning

66 1010 1313 55 88 33 22 1111

66 55 33 1010 88 1313 22 1111

66 55 1313 1010 88 33 22 1111

i j66 55 33 22 88 1313 1010 1111

Page 29: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.29

Example of partitioning

66 1010 1313 55 88 33 22 1111

66 55 33 1010 88 1313 22 1111

66 55 1313 1010 88 33 22 1111

66 55 33 22 88 1313 1010 1111

i22 55 33 66 88 1313 1010 1111

Page 30: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.30

xx

Analysis of quicksort

• Assume all input elements are distinct.• In practice, there are better partitioning

algorithms for when duplicate input elements may exist.

• What is the worst case running time of Quicksort ?

≤ x≤ x ≥ x≥ x

Page 31: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.31

Worst-case of quicksort

• Input sorted or reverse sorted.• Partition around min or max element.• One side of partition always has no elements.

)()()1(

)()1()1()()1()0()(

2nnnT

nnTnnTTnT

Θ=

Θ+−=Θ+−+Θ=Θ+−+=

(arithmetic series)

Page 32: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.32

Worst-case recursion treeT(n) = T(0) + T(n–1) + cn

Page 33: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.33

Worst-case recursion treeT(n) = T(0) + T(n–1) + cn

T(n)

Page 34: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.34

cnT(0) T(n–1)

Worst-case recursion treeT(n) = T(0) + T(n–1) + cn

Page 35: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.35

cnT(0) c(n–1)

Worst-case recursion treeT(n) = T(0) + T(n–1) + cn

T(0) T(n–2)

Page 36: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.36

cnT(0) c(n–1)

Worst-case recursion treeT(n) = T(0) + T(n–1) + cn

T(0) c(n–2)

T(0)

Θ(1)

O

Page 37: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.37

cnT(0) c(n–1)

Worst-case recursion treeT(n) = T(0) + T(n–1) + cn

T(0) c(n–2)

T(0)

Θ(1)

O

( )2

1nk

n

kΘ=

Θ ∑

=

Page 38: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.38

cnΘ(1) c(n–1)

Worst-case recursion treeT(n) = T(0) + T(n–1) + cn

Θ(1) c(n–2)

Θ(1)

Θ(1)

O

( )2

1nk

n

kΘ=

Θ ∑

=

h = n

Page 39: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.39

Nice-case analysis

If we’re lucky, PARTITION splits the array evenly:T(n) = 2T(n/2) + Θ(n)

= Θ(n lg n) (same as merge sort)

What if the split is always 109

101 : ?

( ) ( ) )()( 109

101 nnTnTnT Θ++=

Page 40: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.40

Analysis of nice case)(nT

Page 41: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.41

Analysis of nice casecn

( )nT 101 ( )nT 10

9

Page 42: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.42

Analysis of nice casecn

cn101 cn10

9

( )nT 1001 ( )nT 100

9 ( )nT 1009 ( )nT 100

81

Page 43: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.43

Analysis of nice casecn

cn101 cn10

9

cn1001 cn100

9 cn1009 cn100

81

Θ(1)

Θ(1)

… …log10/9n

cn

cn

cn

Page 44: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.44

log10n

Analysis of nice casecn

cn101 cn10

9

cn1001 cn100

9 cn1009 cn100

81

Θ(1)

Θ(1)

… …log10/9n

cn

cn

cn

T(n) ≤ cn log10/9n + Ο(n)

cn log10n ≤

Page 45: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.45

Randomized quicksort• Partition around a random element. I.e.,

around A[t] , where t chosen uniformly at random from {p…r}

• We will show that the expected time is O(n log n)

Page 46: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.46

“Paranoid” quicksort

• Will modify the algorithm to make it easier to analyze:

• Repeat:• Choose the pivot to be a random element of the array• Perform PARTITION

• Until the resulting split is “lucky”, i.e., not worse than 1/10: 9/10• Recurse on both sub-arrays

Page 47: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.47

Analysis• Let T(n) be an upper bound on the expectedrunning time on any array of n elements• Consider any input of size n• The time needed to sort the input is bounded from the above by a sum of

• The time needed to sort the left subarray• The time needed to sort the right subarray• The number of iterations until we get a lucky split, times cn

Page 48: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.48

Expectations

cnpartitionsEinTiTnT •+−+≤ ][#)()(max)(

• By linearity of expectation:

where maximum is taken over i ∈ [n/10,9n/10]• We will show that E[#partitions] is ≤ 10/8• Therefore:

]10/9,10/[,2)()(max)( nnicninTiTnT ∈+−+≤

# partitions = # iterations until lucky split of at most 1/10:9/10

Page 49: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.49

Final bound

• Can use the recursion tree argument:• Tree depth is Θ(log n)• Total expected work at each level is at most 10/8 cn• The total expected time is Ο(n log n)

Page 50: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.50

Lucky partitions

• The probability that a random pivot induces lucky partition is at least 8/10(we are not lucky if the pivot happens to be among the smallest/largest n/10 elements)

• If we flip a coin, with heads prob. p=8/10 , the expected waiting time for the first head is 1/p = 10/8

Page 51: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.51

Quicksort in practice

• Quicksort is a great general-purpose sorting algorithm.

• Quicksort is typically over twice as fast as merge sort.

• Quicksort can benefit substantially from code tuning.

• Quicksort behaves well even with caching and virtual memory.

• Quicksort is great!

Page 52: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.52

More intuitionSuppose we alternate lucky, unlucky, lucky, unlucky, lucky, ….

L(n) = 2U(n/2) + Θ(n) luckyU(n) = L(n – 1) + Θ(n) unlucky

Solving:L(n) = 2(L(n/2 – 1) + Θ(n/2)) + Θ(n)

= 2L(n/2 – 1) + Θ(n)= Θ(n lg n)

How can we make sure we are usually lucky?Lucky!

Page 53: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.53

Randomized quicksort analysis

Let T(n) = the random variable for the running time of randomized quicksort on an input of size n, assuming random numbers are independent.For k = 0, 1, …, n–1, define the indicator random variable

Xk =1 if PARTITION generates a k : n–k–1 split,0 otherwise.

E[Xk] = Pr{Xk = 1} = 1/n, since all splits are equally likely, assuming elements are distinct.

Page 54: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.54

Analysis (continued)

T(n) =

T(0) + T(n–1) + Θ(n) if 0 : n–1 split,T(1) + T(n–2) + Θ(n) if 1 : n–2 split,

MT(n–1) + T(0) + Θ(n) if n–1 : 0 split,

( )∑−

=Θ+−−+=

1

0)()1()(

n

kk nknTkTX .

Page 55: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.55

Calculating expectation( )

Θ+−−+= ∑

=

1

0)()1()()]([

n

kk nknTkTXEnTE

Take expectations of both sides.

Page 56: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.56

Calculating expectation( )

( )[ ]∑

∑−

=

=

Θ+−−+=

Θ+−−+=

1

0

1

0

)()1()(

)()1()()]([

n

kk

n

kk

nknTkTXE

nknTkTXEnTE

Linearity of expectation.

Page 57: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.57

Calculating expectation( )

( )[ ]

[ ] [ ]∑

=

=

=

Θ+−−+⋅=

Θ+−−+=

Θ+−−+=

1

0

1

0

1

0

)()1()(

)()1()(

)()1()()]([

n

kk

n

kk

n

kk

nknTkTEXE

nknTkTXE

nknTkTXEnTE

Independence of Xk from other random choices.

Page 58: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.58

Calculating expectation( )

( )[ ]

[ ] [ ]

[ ] [ ] ∑∑∑

=

=

=

=

=

=

Θ+−−+=

Θ+−−+⋅=

Θ+−−+=

Θ+−−+=

1

0

1

0

1

0

1

0

1

0

1

0

)(1)1(1)(1

)()1()(

)()1()(

)()1()()]([

n

k

n

k

n

k

n

kk

n

kk

n

kk

nn

knTEn

kTEn

nknTkTEXE

nknTkTXE

nknTkTXEnTE

Linearity of expectation; E[Xk] = 1/n .

Page 59: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.59

Calculating expectation( )

( )[ ]

[ ] [ ]

[ ] [ ]

[ ] )()(2

)(1)1(1)(1

)()1()(

)()1()(

)()1()()]([

1

1

1

0

1

0

1

0

1

0

1

0

1

0

nkTEn

nn

knTEn

kTEn

nknTkTEXE

nknTkTXE

nknTkTXEnTE

n

k

n

k

n

k

n

k

n

kk

n

kk

n

kk

Θ+=

Θ+−−+=

Θ+−−+⋅=

Θ+−−+=

Θ+−−+=

∑∑∑

=

=

=

=

=

=

=

Summations have identical terms.

Page 60: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.60

Hairy recurrence

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

2nkTE

nnTE

n

kΘ+= ∑

=

(The k = 0, 1 terms can be absorbed in the Θ(n).)

Prove: E[T(n)] ≤ an lg n for constant a > 0 .

Use fact: 21

2812

21 lglg nnnkk

n

k∑

=−≤ (exercise).

• Choose a large enough so that an lg ndominates E[T(n)] for sufficiently small n ≥ 2.

Page 61: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.61

Substitution method

[ ] )(lg2)(1

2nkak

nnTE

n

kΘ+≤ ∑

=

Substitute inductive hypothesis.

Page 62: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.62

Substitution method

[ ]

)(81lg

212

)(lg2)(

22

1

2

nnnnna

nkakn

nTEn

k

Θ+

−≤

Θ+≤ ∑−

=

Use fact.

Page 63: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.63

Substitution method

[ ]

Θ−−=

Θ+

−≤

Θ+≤ ∑−

=

)(4

lg

)(81lg

212

)(lg2)(

22

1

2

nannan

nnnnna

nkakn

nTEn

k

Express as desired – residual.

Page 64: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.64

Substitution method

[ ]

nan

nannan

nnnnna

nkakn

nTEn

k

lg

)(4

lg

)(81lg

212

)(lg2)(

22

1

2

Θ−−=

Θ+

−=

Θ+≤ ∑−

=

if a is chosen large enough so that an/4 dominates the Θ(n).

,

Page 65: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.65

• Assume Running time= O(n) for nelements.

Running time= O(n) for nelements.

Page 66: Introduction to Algorithms - Massachusetts Institute of Technology

September 20, 2004 (c) Piotr Indyk & Charles Leiserson L4.66

Randomized Algorithms

• Algorithms that make decisions based on random coin flips.

• Can “fool” the adversary.• The running time (or even correctness) is a

random variable; we measure the expectedrunning time.

• We assume all random choices are independent .

• This is not the average case !