CS3000: Algorithms & Data Jonathan Ullman
Lecture 3:
- Divide and Conquer: Karatsuba
- Solving Recurrences
Jan 13, 2020
zjgggpgggg
g.gg
ekeMMtBsneleagioenocBmarigologgthAEthfthggpatz
zjgggpgggg Solving Recurrences g.gg Jan 13, 2020 The Master - - PowerPoint PPT Presentation
CS3000: Algorithms & Data Jonathan Ullman Lecture 3: Divide and Conquer: Karatsuba ekeMMtBsneleagioenocBmarigologgthAEthfthggpatz zjgggpgggg Solving Recurrences g.gg Jan 13, 2020 The Master Theorem Recipe for
Lecture 3:
Jan 13, 2020
ekeMMtBsneleagioenocBmarigologgthAEthfthggpatz
⁄ + )"*
&* > 1 : ! " = Θ "./0& $
&* = 1 : ! " = Θ "* log "
&* < 1 : ! " = Θ "*
karatsuba
1 n
3T E
Megesort TH
2T E
in
Binarysearch 1 n
TCE
l
2T E
t
1
6 7 + )"8
6 : + )"8
6 8 + )
6 8 + )
1
n
_a
T E
Cnd
a
16 b
4
n'tog
n
D
2
a
21
b
5
m2
d
2
a 2
age
I
n'Gbla
b 2
d
O
n
11 3 42 28 17 8 2 15
I find the:
@ OCD time
n
time nk time
median
01h2
t.me
FET nd smallest
11 3 42 28 17 8 2 15 2 3 8 11 15 17 28 42
@
sort
Out: 6 ≻ 5 ≻ 18 ≻ 22 ≻ 1
fate
a pg
e Tf
e
c YE
t winner
i
DW
h
v v slowest
17 3 42 11 28 8 2 15 13 @ 11 3 5 13 2 8 17 28 42
Select(A[1:n],k): If(n = 1): return A[1] Choose a pivot p = A[1] Partition around the pivot, let p = A[r] If(k = r): return A[r] ElseIf(k < r): return Select(A[1:r-1],k) ElseIf(k > r): return Select(A[r+1:n],k-r)
Ocn time
1 2 3 4 5 6 7 8 9 @
1 9
12
3
4
5
7 8
91
k 8
k
7
ht
n
l
t
n 2
t
1 2
1 ne
k I
is the bestpivot but also
it's
we're trying
to solve
It's
enough to
find
an
element
in the middle
list
MOM(A[1:n]): Let H ← J K ⁄ For i = 1,…,m: Meds[i] = median{A[5i-4],A[5i-3],…,A[5i]} Let p ← Select(Meds[1:m], H L ⁄ )
T.me
OG
047
I
30cm
Median of the medians
Do
Do
i OD
OD
D
D
D b
⁄ items that are smaller than OPO(@) and at least 3"/10 items that are larger.
smallestmedian biggest med
ran
smallest
E
I
Fo
z 411144141444444
44
Mr HI 1111 H 4ham heMakinIN KK11111444 41 14 1944 biggest
AH red dts
are smaller than the MOM
is
3 70
Fo
17 3 42 11 28 8 2 15 13 @ 11 3 5 13 2 8 17 28 42
MOMSelect(A[1:n],k): If(n ≤ 25): return median{A} Let p = MOM(A) Partition around the pivot, let p = A[r] If(k = r): return A[r] ElseIf(k < r): return MOMSelect(A[1:r-1],k) ElseIf(k > r): return MOMSelect(A[r+1:n],k-r)
1 F
t
n
n
11
! " = !
R6 ST + ! 6 : + )"
! 1 = )
Led
Problems
Werk
n
n
I
I
7h40
Fo15
9,3
2
1,49110
9
I
n
! " = !
R6 ST + ! 6 : + )"
! 1 = )
BI
Nn
E Cn
for
some
C
I'll
choose later
Ba
e
1
I
I E
Cn
aslong as Csi
1
n
1
Fo
T E
t n
9
1 E
C
E
C 75 Co E
e
n
Fo t CIs
t
1
al
c
10
C Fo
1
E
C
n aslong as C
lo
3, would Select still run in O(n) time?
2 3 8 11 15 17 28 42 ; Is 28 in this list?
StartSearch(A,t): // A[1:n] sorted in ascending order Return Search(A,1,n,t) Search(A,ℓ,r,t): If(ℓ > r): return FALSE m ← ℓ +
WXℓ L
If(A[m] = t): return m ElseIf(A[m] > t): return Search(A,ℓ,m-1,t) Else: return Search(A,m+1,r,t)
! " = ! " 2 ⁄ + ) ! 1 = )
⁄ + )