1 Divide & Conquer Algorithms Part 4. 2 Recursion Review A function that calls itself either directly or indirectly through another function Recursive.
Post on 31-Dec-2015
217 Views
Preview:
Transcript
1
Divide & Conquer Algorithms
Part 4
2
Recursion Review
A function that calls itself either directly or indirectly through another function
Recursive solutions involve: Base case – the function returns a solution Recursive case
• divide the problem into one or more simpler or smaller parts of the problem
• call the function (recursively) on each part, and• combine the solutions of the parts into a solution for the
problem.
3
Designing Algorithms
Incremental Design Most of the algorithms you have seen and
programmed Iterative
• An algorithmic technique where a function solves a problem by repeatedly working on successive parts of the problem
4
Designing Algorithms (cont)
Divide & Conquer Design Three steps
DIVIDE• Problem is divided into a number of subproblems
CONQUER• Solve the subproblems recursively• Base cases are simple enough to solve directly
COMBINE• The solutions to the subproblems are combined to solve
the original problem
5
Analyzing Divide & Conquer Algorithms Use a recurrence For small subproblem, solution takes constant
time DIVIDE step creates a subproblems, each of
size n/b D(n) time to divide into subproblems C(n) time to combine solutions of subproblems
otherwisenCnDaT
cnifnT
bn )()()(
)1()(
6
MergeSort
Requires additional memory space as a function of n Unlike Insertion Sort which sorts in place
• Requires only a constant amount of additional space
Sorts in (nlgn)
7
MergeSort
DIVIDE the n element sequence to be sorted into two subsequences of n/2 elements each
CONQUER (sort) the two subsequences recursively using merge sort The recursion stops when subproblem contains
only one element
COMBINE (merge) the two sorted subsequences to produce the sorted answer
8
MergeSort (Cont)… 19 9 62 74 94 13 90 48 …
19 9 62 74 94 13 90 48
19 9 62 74 94 13 90 48
19 9 62 74 94 13 90 48
9
MergeSort (Cont)… 9 13 19 48 62 74 90 94 …
9 19 62 74 13 48 90 94
9 19 62 74 13 94 48 90
19 9 62 74 94 13 90 48
10
MergeSort (cont)
To sort entire array: MergeSort( A, 1, length(A) )
MergeSort( A, p, r )1. if p < r2. q (p + r) / 23. MergeSort( A, p, q )4. MergeSort( A, q+1, r )5. Merge( A, p, q, r )
11
MergeSort (Cont)Merge( A, p, q, r )1. n1 q – p + 12. n2 r – q3. create arrays L[1..n1+1] and
R[1..n2+1]4. for i 1 to n15. L[ i ] A[p+i-1]6. for j 1 to n27. R[ i ] A[q+j]8. L[n1+1] 9. R[n2+1] 10. i 111. j 112. for k p to r13. if L[ i ] R[ j ]14. A[ k ] L[ i ]15. i = i + 116. else A[ k ] R[ j ]17. j = j + 1
Sentinel values
12
Analysis of MergeSort
Merge function: Line: 1- 2 (1) Line: 3 (n) Line: 4 – 7 i loop + j loop = (n) Line: 8 – 11 (1) Line: 12 (n) Line: 13 – 17 (1)
Total run time = (n)
13
Analysis of MergeSort (cont)
MergeSort function For simplicity, assume n is a power of 2 If n = 1, takes constant time If n > 1 then
• DIVIDE – Lines 1, 2 (1)– D(n) = (1)
• CONQUER – Lines 3, 4 2T(n/2)– two subproblems, each of size n/2
• COMBINE – Line 5 (n)– C(n) = (n)
14
Analysis of MergeSort (cont)
So the recurrence is:
• Note: D(n) + C(n) = (1) + (n) = (n)
The solution to the recurrence
1)()(2
1)1()(
2
nifnT
nifnTn
)lg()( nnnT
15
QuickSort
Worst time: (n2) Expected time: (nlgn)
Constants in the expected time are small Sorts in place
16
QuickSort (cont)
DIVIDE – Partition A[p..r] into two subarrays A[p..q-1] and A[q+1..r] such that each element of A[p..q-1] is A[q] each element of A[q+1..r]
Conquer – Sort the two subarrays by recursive calls to Quicksort
Combine – Since subarrays are sorted in place, they are already sorted
17
QuickSort (cont)
To sort entire array:
QuickSort( A, 1, length(A) )
QuickSort( A, p, r )
1. if p < r
2. q Partition( A, p, r )
3. QuickSort( A, p, q-1 )
4. QuickSort( A, q+1, r )
18
QuickSort (cont)Partition( A, p, r )
x A[ r ]i p – 1for j p to r-1
if A[ j ] xi i + 1Exchange( A[ i ], A[ j ] )
Exchange( A[ i+1 ], A[ r ] )return i+1
19
QuickSort (cont)
1 2 3 4 5 6 7 8
19 9 62 74 94 13 90 48p,i j r,x
1 2 3 4 5 6 7 8
19 9 62 74 94 13 90 48i p,j r,x
1 2 3 4 5 6 7 8
19 9 62 74 94 13 90 48p i j r,x
1 2 3 4 5 6 7 8
19 9 62 74 94 13 90 48p i j r,x
20
QuickSort (cont)1 2 3 4 5 6 7 8
19 9 62 74 94 13 90 48p i j r,x
1 2 3 4 5 6 7 8
19 9 62 74 94 13 90 48p i j r,x
1 2 3 4 5 6 7 8
19 9 13 74 94 62 90 48p i j r,x
1 2 3 4 5 6 7 8
19 9 13 48 94 62 90 74p i r
Return i+1
which is 4
21
Performance of QuickSort
Partition function’s running time - (n) Running time of QuickSort depends on
the balance of the partitions If balanced, QuickSort is asymptotically as
fast as MergeSort If unbalanced, it is asymptotically as bad
as Insertion Sort
22
Performance of QuickSort (cont)
Worst-case Partitioning Partitions always of size n-1 and 0 Occurs when array is already sorted Recurrence for the running time:
)(
)()1(
)()0()1()(
2n
nnT
nTnTnT
23
Performance of QuickSort (cont)cn
c(n-1)
c(n-2)
...
n
cn
c(n-1)
c(n-2)
c
Total: (n2)
)(2
)1( 2
11
nnn
iccin
i
n
i
24
Performance of QuickSort (cont)
Best-case Partitioning Partitions always of size n/2 and n/2-1 The recurrence for the running time:
)lg()(
)()(2)( 2
nnnT
nTnT n
Case 2 of Master Method
25
Performance of QuickSort (cont) Balanced Partitioning
Average-case is closer to best-case
Any split of constant proportionality (say 99 to 1) will have a running time of (nlgn)
• The recurrence will be
• Because it yields a recursion tree of depth
(lgn), where cost at each level is (n)
• See page 151 (new book) for picture– Or next slide
cnnTnTnT )()()( 1001
10099
26
Performance of QuickSort (cont)
c(n/100) c(99n/100)
cn
c(n/10000) c(99n/10000) c(99n/10000) c(9801n/10000)
T(1)
T(1)
T(1)T(1)
Total: (nlgn)
log100ncn
cn
cn
cn
cnlog100/99n
27
Performance of QuickSort (cont)
Intuition for the average case The behavior depends on the relative
ordering of the values• Not the values themselves
We will assume (for now) that all permutations are equally likely
Some splits will be balanced, and some will be unbalanced
28
Performance of QuickSort (cont)
In a recursion tree for an average-case, the “good” and “bad” splits are distributed randomly throughout the tree
For our example, suppose• Bad splits and good splits alternate• Good splits are best-case splits• Bad splits are worst-case splits• Boundary case (subarray size 0) has cost of 1
29
Performance of QuickSort (cont)
The (n-1) cost of the bad split can be absorbed into the (n) cost of the good split, and the resulting split is good
Thus the running time is (nlgn), but with a slightly larger constant
n
0 n - 1
(n-1)/2(n-1)/2-1
(n) n
(n-1)/2(n-1)/2
(n)
30
Randomized QuickSort
How do we increase the chance that all permutations are equally likely? Random Sampling
Don’t always use last element in subarray Swap it with a randomly chosen element from
the subarray Pivot now is equally likely to be any of the r – p + 1
elements We can now expect the split to be reasonably
well-balanced on average
31
Randomized QuickSort (cont)
Randomized-Partition( A, p, r )
1. i Random( p, r )
2. Exchange( A[ r ], A[ i ] )
3. return Partition( A, p, r )
Note that Partition( ) is same as before
32
Randomized QuickSort (cont)
Randomized-QuickSort( A, p, r )
1. if p < r
2. q Randomized-Partition( A, p, r )
3. Randomized-QuickSort( A, p, q-1 )
4. Randomized-QuickSort( A, q+1, r )
33
Analysis of QuickSort
A more rigorous analysis Begin with worst-case
We intuited that worst-case running time is (n2)
Use substitution method to show this is true
)())1()((max)(10
nqnTqTnTnq
34
Analysis of QuickSort (cont)
Guess: (n2) Show: for some c > 0 Substitute:
2)( cnnT
)()(
)()12()(
)())1((max
)())1((max)(
2
2
2
22
10
22
10
nnT
cn
nnccnnT
nqnqc
nqnccqnT
nq
nq
q2+(n-q-1)2 is max
at endpoints of range. Therefore it
is (n-1)2
= n2 – 2n +1
35
Analysis of QuickSort (cont)
Problem 7.4-1 has you show that
Thus the worst-case running time of QuickSort is (n2)
)(
)())1()((max)(
2
10
n
nqnTqTnTnq
36
Analysis of QuickSort (cont)
We will show that the upper-bound on expected running time is (nlgn)
We’ve already shown that the best-case running time is (nlgn)
Combined, these will give an expected running time of (nlgn)
37
Analysis of QuickSort (cont) Expected Running Time
Work done is dominated by Partition Each time a pivot is selected, this element
is never included in subsequent calls to QuickSort
• And the pivot is in its correct place in the array Therefore, at most n calls to Partition will
be made• Each call to Partition involves (1) work plus
the amount of work done in the for loop• Count the total number of times line 4 is
executed, we can bound the amount of time spent in the for loop
Line 4: if A[j] x
38
Analysis of QuickSort (cont)
Lemma 7.1• Let X be the number of comparisons performed
in line 4 of Partition over the entire execution of QuickSort on an n-element array. Then the running time of QuickSort is (n + X)
• Proof: – There are n calls to Partition, each of which does
(1) work then executes the for loop (which includes line 4) some number of times
– Since the for loop executes line 4 during each iteration, X represents the number of iterations of the for loop along with the number of comparisons performed
– Therefore T(n) = (n (1) + X) = (n + X)
39
Analysis of QuickSort (cont)
We need to compute X We do this by computing an overall bound
on the total number of comparisons• NOT by computing the number of comparisons
at each call to Partition Definitions:
• z1, z2, …, zn elements in the array• zi ith smallest element• set Zij = {zi, zi+1, …, zj}
40
Analysis of QuickSort (cont)
When does the algorithm compare zi and zj?
Note: each pair of elements is compared at most once. Why?
Our analysis uses indicator random variables
41
Indicator Random Variables
They provide a convenient method for converting between probabilities and expectations
These are random variables which take on only the value 0 or 1, so they “indicate” whether or not something has happened
Indicator Random Variable I{A} is defined as: Given a sample space S and an event A I{A} = 1 if A occurs
0 if A does not occur
42
Indicator Random Variables (cont) A simple example
Determine the number of heads when flipping a coin
Sample space S = {H, T} Simple random variable Y
• These are random variables whose range contains only a finite number of elements
• In this case, it takes on the values H and T• Each with a probability of ½
XH is associated with the event Y = H• XH = I{Y = H} = 1 if Y = H
0 if Y = T
43
Indicator Random Variables (cont)
The expected number of heads in one flip is the expected value of our indicator variable XH
• Thus the expected number of heads in one flip is ½
21
21
21 )(0)(1
}Pr{0}Pr{1
}]{[][
TYHY
HYIEXE H
44
Indicator Random Variables (cont)
Lemma 5.1 Given a sample space S and an event A in
the sample space S, let XA = I{A}. Then E[XA] = Pr{A}
• See proof on page 95
To compute the number of heads in n coin flips Method 1 – compute the probability of
getting 0 heads, 1 heads, 2 heads, etc
45
Indicator Random Variables (cont)
Method 2• Let Xi be the indicator random variable
associated with the event “the ith flip is heads”• Let Yi be the random variable denoting the
outcome of the ith flip– Xi = I{Yi = H}
• Let X be the random variable denoting the total number of heads in the n coin flips
n
iiXX
1
46
Indicator Random Variables (cont)
• Take the expectation of both sides:
2
][
][
12
1
1
1
n
XE
XEXE
n
i
i
n
i
n
ii
By Lemma
5.1
47
(Back to) Analysis of QuickSort
We will use indicator random variables• Xij = I{zi is compared to zj}• it indicates whether the comparison took place
at any time during execution of QuickSort Since each pair is compared at most once:
1
1 1
n
i
n
ijijXX
48
Analysis of QuickSort (cont)
Take expectation of both sides
}Pr{
][
][
1
1 1
1
1 1
1
1 1
n
i
n
ijji
n
i
n
ijij
n
i
n
ijij
ztocomparedisz
XE
XEXE
49
Analysis of QuickSort (cont)
We still need to compute Pr{zi is compared to zj}
Start by thinking about when two items are not compared
• once a pivot x is chosen with zi < x < zj
– zi and zj will never be compared
• if zi is the first pivot chosen in Zij
– zi will be compared to every other element in Zij
• Similarly for zj
Thus, zi and zj are compared iff the first pivot from Zij is either zi or zj
50
Analysis of QuickSort (cont)
What is the probability that this event occurs?
• Before a pivot has been chosen from Zij, all elements of Zij are in the same partition
• Each element of Zij is equally likely to be chosen as the first pivot
• the probability is
1
1
ij
51
Analysis of QuickSort (cont)
Thus we have
1
2
1
1
1
1
}Pr{
}Pr{
}Pr{}Pr{
ij
ijij
Zfromchosenpivotfirstisz
Zfromchosenpivotfirstisz
Zfromchosenpivotfirstiszorzztocomparedisz
ijj
iji
ijjiji
Because the two events are
mutually exclusive
52
Analysis of QuickSort (cont) Combining the two boxed equations
)lg(
)(lg
2
1
2
1
2][
1
1
1
1 1
1
1 1
1
1 1
nn
n
k
k
ijXE
n
i
n
i
n
k
n
i
in
k
n
i
n
ij
Change of variables:k = j – i
Note the changes in the summation
variables
Bound on Harmonic Series:
)1(ln1
1
nHn
kkn
53
Analysis of QuickSort (cont)
Thus, using Randomized-Partition, the expected running time of QuickSort is (nlgn)
54
Median and Order Statistics
In this section, we will study algorithms for finding the ith smallest element in a set of n elements
We will again use divide-and-conquer algorithms
55
The Selection Problem
Input: A set A of n (distinct) numbers and a number i, with 1 i n
Output: The element x A that is larger than exactly i – 1 other elements of A x is the ith smallest element
i = 1 minimum i = n maximum
56
The Selection Problem (cont)
A simple solution Sort A Return A[ i ] This is (nlgn)
57
Minimum and Maximum
Finding the minimum and maximum
Takes (n-1) comparisons ((n)) This is the best we can do and is optimal with
respect to the number of comparisons
MINIMUM(A)min A[1]for i 2 to length(A)
if min > A[ i ]min A[ i ]
return min
MAXIMUM(A)max A[1]for i 2 to length(A)
if max < A[ i ]max A[ i ]
return max
58
Minimum and Maximum (cont) Simultaneous minimum and maximum
Obvious solution is 2(n-1) comparisons But we can do better – namely The algorithm
• If n is odd, set max and min to first element• If n is even, compare first two elements and set
max, min• Process the remaining elements in pairs• Find the larger and the smaller of the pair• Compare the larger of the pair with the current
max• And the smaller of the pair with the current min
23 n
59
Minimum and Maximum (cont)
Total number of comparisons• If n is odd comparisons • If n is even
– 1 initial comparison– And 3(n – 2)/2 comparisons– For a total of 3n/2 – 2 comparisons
• In either case, total number of comparisons is at most
23 n
23 n
60
Selection in Expected Linear Time Goal: Select ith smallest element from
A[p..r]. Partition into A[p..q-1] and A[q+1..r] if i = q
then return A[q] If ith smallest element is in A[p..q-1]
then recurse on A[p..q-1] else recurse on A[q+1..r]
61
Selection in Expected Linear Time (cont)Randomized-Select(A, p, r, i) 1 if p = r 2 return A[p] 3 q Randomized-Partition(A, p, r) 4 k q - p + 1 //Why this statement?5 if i = k 6 return A[q] 7 else if i < k8 return Randomized-Partition(A, p, q-1, i)9 else10 return Randomized-Partition(A, q+1, r, i-k)
62
i = 6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 45 58 47 6 97 43 10 85 70 21 49 56 51 66
i = 6 q = 12 k = 12
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 45 58 47 6 43 10 21 49 56 51 66 70 97 85
i = 6 q = 12 k = 12
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 45 47 6 43 10 21 49 51 56 58 66 70 97 85
i = 6 q = 9 k = 9
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 6 10 21 43 47 49 45 51 56 58 66 70 97 85
i = 6/2 q = 4 k = 4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 6 10 21 43 45 47 49 51 56 58 66 70 97 85
i = 2 q = 7 k = 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 6 10 21 43 45 47 49 51 56 58 66 70 97 85
i = 2 q = 6 k = 2
63
Analysis of Selection Algorithm
Worst-case running time is (n2) Partition takes (n) If we always partition around the largest
remaining element, we reduce the partition-size by one element each time
What is best-case?
64
Analysis of Selection Algorithm (cont) Average Case
Average-case running time is (n) The time required is the random variable
T(n) We want an upper bound on E[T(n)] In Randomized-Partition, all elements are
equally likely to be the pivot
65
Analysis of Selection Algorithm (cont)
So, for each k such that 1 k n, subarray A[p..q] has k elements
• All the pivot• with probability 1/n
For k = 1, 2, …, n we define indicator random variables Xk where
• Xk = I{the subarray A[p..q] has exactly k elements}
So, E[Xk] = 1/n
66
Analysis of Selection Algorithm (cont)
When we choose the pivot element (which ends up in A[q]) we do not know what will happen next
• Do we return with the ith element (k = i)?• Do we recurse on A[p..q-1]?• Do we recurse on A[q+1..r]?
Decision depends on i in relation to k We will find the upper-bound on the
average case by assuming that the ith element is always in the larger partition
67
Analysis of Selection Algorithm (cont)
Now, Xk = 1 for just one value of k, 0 for all others
When Xk = 1, the two subarrays have sizes k – 1 and n – k
Hence the recurrence:
))()),1(max((
))()),1(max(()(
1
1
nknkTX
nknkTXnT
n
kk
n
kk
68
Analysis of Selection Algorithm (cont)
Taking the expected values:
)()),1(max(
)()),1(max(
)()),1(max(
)()),1(max()]([
1
1
1
1
1
nknkTE
nknkTEXE
nknkTXE
nknkTXEnTE
n
kn
n
kk
n
kk
n
kk
69
Analysis of Selection Algorithm (cont)
Looking at the expression max(k-1, n-k)
• If n is even, each term from appears twice in the summation
• If n is odd, each term from appears twice and appears once in the summation
2
21),1max(n
n
kifkn
kifkknk
)1()( 2 nTtoT n
)1()( 2 nTtoT n
)( 2nT
70
Analysis of Selection Algorithm (cont)
Thus we have
We use substitution to solve the recurrence Note: T(1) = (1) for n less than some
constant Assume that T(n) cn for some constant c
that satisfies the initial conditions of the recurrence
)()]([
2)]([
1
2
nkTEn
nTEn
k n
71
Analysis of Selection Algorithm (cont)
Using this inductive hypothesis
an
nn
n
c
annn
n
c
ankkn
c
anckn
nTE
nn
nn
k
n
n
k
n
n
2
12
2
)1(2
2
1
2
)1(2
2
2)]([
22
22
1
1
1
1
1
2
2
72
Analysis of Selection Algorithm (cont)
anccn
cn
anccn
ann
nc
annn
n
c
annn
n
c nn
24
24
3
2
2
1
4
3
224
3
2
2
2
2
2
23
42 2
73
Analysis of Selection Algorithm (cont)
To complete the proof, we need to show that for sufficiently large n, this last expression is at most cn
• i.e.
ac
c
an
ca
cn
anccn
c
c
4
2
24
024
4
2
As long as we choose the constant c so that c/4 – a > 0 (i.e., c > 4a), we can divide both sides by
c/4 – a
74
Analysis of Selection Algorithm (cont)
Thus, if we assume that T(n) = (1) for , we have T(n) = (n) ac
cn 42
75
Selection in Worst-Case Linear Time “Median of Medians” algorithm It guarantees a good split when array is
partitioned Partition is modified so that the pivot now
becomes an input parameter The algorithm:
If n = 1 return A[n]
76
Selection in Worst-Case Linear Time (cont)
1. Divide the n elements of the input array into n/5 groups of 5 elements each and at most one group of (n mod 5) elements
2. Find the median of each of the n/5 groups by using insertion sort to sort list and then pick the 3rd element of each group
3. Use Select recursively to find the median x of the n/5 medians found in step 2. – If even number of medians, choose lower median
77
Selection in Worst-Case Linear Time (cont)
4. Partition the input array around the “median of medians” x using the modified version of Partition. Let k be one more than the number of elements on the low side of the partition, so that x is the kth smallest element and there are n – k elements on the high side of the partition
5. if i = k, then return x. Otherwise, use Select recursively to find the ith smallest element on the low side if i < k, or the (i – k)th smallest element on the high side if i > k
78
Selection in Worst-Case Linear Time (cont) Example of “Median of Medians”
Input Array A[1..100] Step 1: 25 groups of 5 Step 2: We get 25 medians Step 3: Step 1: Using the 25 medians we get 5
groups of 5Step 2: We get 5 mediansStep 3: Step 1: Using the 5 medians, we
get 1 group of 5 Step 2: We get 1 median
Step 4: Partition A around the median
79
Analyzing “Median of Medians”
Analyzing “median of medians” The following diagram might be helpful:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
10 975 939 701 582 468 766 312 809 673 124 689 597 759 39 612 180 304 380 549 35 858 132 349
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
10 582 701 939 975 312 468 673 766 809 39 124 597 689 759 180 304 380 549 612 35 132 349 858
80
Analyzing “Median of Medians” (cont)
First, we need to put a lower bound on how many elements are greater than x
How many of the medians are greater than x?
• At least half of the medians from the groups – Why “at least half?”
• medians are greater than x
10521 nn
5n
81
The two discarded groups
Analyzing “Median of Medians” (cont)
Each of these medians contribute at least 3 elements greater than x except for two groups
• The group that contains x– contributes only 2 elements greater than x
• The group that has less than 5 elements
So the total number of elements > x is at least:
623 103
221 nn
82
Analyzing “Median of Medians” (cont)
Similarly, there are at least elements smaller than x
Thus, in the worst case, for Step 5 Select is called recursively on the largest partition
• The largest partition has at most elements
6103 n
6107 n
The size of the array minus the number of elements in the smaller partition
6103 nn
83
Analyzing “Median of Medians” (cont)
Developing the recurrence:• Step 1 takes (n) time• Step 2 takes (n) time
(n) calls to Insertion Sort on sets of size (1)
• Step 3 takes • Step 4 takes (n) time• Step 5 takes at most
5nT
6107 nT
84
Analyzing “Median of Medians” (cont)
So the recurrence is
Now use substitution to solve• Assume T(n) cn for some suitable large
constant c and all n ???• Also pick a constant a such that the function
described by the (n) term is bounded above by an for all n > 0
???)(6
???)1()(
107
5
nifnTT
nifnTnn
85
Comes from removing the
Analyzing “Median of Medians” (cont)
70
07
7
7
6
6)(
7010
10
10
109
107
5
107
5
nwhenc
anc
anccn
anc
ancc
anccnT
nan
cn
cn
cn
cncn
nn
Which is at most cn if
If n = 70, then this inequality is undefined
86
Analyzing “Median of Medians” (cont)
We assume that n 71, so Choosing c 710a will satisfy the
inequality on the previous slide You could choose any constant > 70 to be
the base case constant Thus, the selection problem can be
solved in the worst-case in linear time
7170 nn
87
Review of Sorts
Review of sorts seen so far Insertion Sort
• Easy to code• Fast on small inputs (less than ~50)• Fast on nearly sorted inputs• Stable(n) best case (sorted list)(n2) average case(n2) worst case (reverse sorted list)
88
Review of Sorts
• Stable means that numbers with the same value appear in the output array in the same order as they do in the input array.
• That is, ties between two numbers are broken by the rule that whichever number appears first in the input array appears first in the output array.
• Normally, the property of stability is important only when satellite data are carried around with the element being sorted.
89
Review of Sorts (cont)
MergeSort• Divide and Conquer algorithm• Doesn’t sort in place• Requires memory as a function of n• Stable(nlgn) best case(nlgn) average case(nlgn) worst case
90
Review of Sorts (cont)
QuickSort• Divide and Conquer algorithm
– No merge step needed
• Small constants• Fast in practice• Not stable(nlgn) best case(nlgn) average case(n2) worst case
91
Review of Sorts (cont)
Several of these algorithms sort in (nlgn) time MergeSort in worst case QuickSort on average
On some input we can achieve (nlgn) time for each of these algorithms
The sorted order they determine is based only on comparisons between the input elements
They are called comparison sorts
92
Review of Sorts (cont)
Other techniques for sorting exist, such as Linear Sorting which is not based on comparisons
Usually with some restrictions or assumptions on input elements
Linear Sorting techniques include: Counting Sort Radix Sort Bucket Sort
93
Lower Bounds for Sorting
In general, assuming unique inputs, comparison sorts are expressed in terms of
comparisons. are
equivalent in learning about the order of ai and aj
What is the best we can do on the worst case type of input?
What is the best worst-case running time?
ji aa jijijiji aaaaaaaa ,,,
94
The Decision-Tree Model
1:2
2:3
2:3
1:3
1:31,2,3 2,1,3
1,3,2 3,1,2 2,3,1 3,2,1
• n = 3• input: a1,a2,a3• # possible outputs = 3! = 6• Each possible output is a leaf
95
Analysis of Decision-Tree Model
Worst Case Comparisons is equal to height of decision tree
Lower bound on the worst case running time is the lower bound on the height of the decision tree.
Note that the number of leaves in the decision tree n!, where n = number elements in the input sequence
96
Theorem 8.1
Any comparison sort algorithm requires (nlgn) comparisons in the worst case
Proof: Consider a decision tree of height h that
sorts n elements Since there are n! permutations of n
elements, each permutation representing a distinct sorted order, the tree must have at least n! leaves
97
Theorem 8.1 (cont)
A binary tree of height h has at most 2h leaves
The best possible worst case running time for comparison sorts is thus (nlgn)
Mergesort, which is O(nlgn), is asymptotically optimal
)lg(
)!lg(
2!
nn
nh
n h
By equation 3.18
98
Sorting in Linear Time
But the name of this chapter is “Sorting in Linear Time”
How can we do better? CountingSort RadixSort BucketSort
99
Counting Sort No comparisons between elements But depends on assumptions about the
values being sorted Each of the n input elements is an integer
in the range 0 to k When k = (n), the sort runs in (n) time The algorithm:
• Input: A[1..n] where A[ j ] {0, 1, …, k}• Output: B[1..n], sorted
– Notice: elements are not sorted in place
• Also: C[1..k] for auxiliary storage
100
Counting Sort (cont)Counting-Sort(A, B, k)1. for i 0 to k2. C[i] 03. for j 1 to Length(A)4. C[A[j]] C[A[j]] + 15. // C[i] now contains the number of elements = i6. for i 1 to k7. C[i] C[i] + C[i-1]8. // C[i] now contains the number of elements i9. for j Length(A) downto 110. B[C[A[j]]] A[j]11. C[A[j]] C[A[j]] – 1
k+2k+1n+1
n
k+1k
n+1nn
----------------------------------------------------------------------------
-------------------------------------------------
---------------------------------------------------------------
-----------------------------------------------
-----------------------
101
Input: 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3
After lines 3-4: 0 1 2 3 4 5
C 2 0 2 3 0 1
After lines 6-7: 0 1 2 3 4 5
C 2 2 4 7 7 8
First 3 iterations of lines 9-11: 1 2 3 4 5 6 7 8
B 3
0 1 2 3 4 5
C 2 2 4 6 7 8
1 2 3 4 5 6 7 8
B 0 3
0 1 2 3 4 5
C 1 2 4 6 7 8
1 2 3 4 5 6 7 8
B 0 3 3
0 1 2 3 4 5
C 1 2 4 5 7 8
Output: 1 2 3 4 5 6 7 8
B 0 0 2 2 3 3 3 5
102
Analysis of CountingSort:
(nlgn) does not apply because CountingSort isn’t a comparison sort
CountingSort is stable because 4th loop goes from n downto 1
)(
then)( if and)(
45)(
n
nkkn
knnT
103
Radix Sort
This sort was originally used to sort computer punch-card decks.
It is currently used for multi-key sorts for example: year/month/day
Consider each digit of the number as a separate key
104
Radix Sort (cont)
Idea 1: Sort on most significant digit n, then sort on digit n-1, etc.
Problem: For old sorters, sort into 10 bins, but subsequent recursive sorts require all 10 bins Operator must store the other 9 piles
Idea 2: Sort on least significant digit, then sort on next least significant digit, etc.
105
Radix Sort (cont)3 2 9 7 2 0 7 2 0 3 2 9
4 5 7 3 5 5 3 2 9 3 5 5
6 5 7 4 3 6 4 3 6 4 3 6
8 3 9 4 5 7 8 3 9 4 5 7
4 3 6 6 5 7 3 5 5 6 5 7
7 2 0 3 2 9 4 5 7 7 2 0
3 5 5 8 3 9 6 5 7 8 3 9
Radix-Sort(A, d)for i 1 to d
use a stable sort to sort array A on digit d
106
Radix Sort (cont)
Radix-n: another way of indicating the sort used Implies each digit can differentiate among
n different symbols. In the previous case we assumed radix-10.
This is why the name Radix Sort is given
107
Analysis of RadixSort
If each digit is in the range 1 to k (or 0 to k-1), use CountingSort for each pass
Each pass over a digit is (n + k) For d digits (d(n + k)) If d is a constant and k = (n) T(n) = (n)
108
Proof by induction that RadixSort works Base Case: d = 1
since only one digit, sorting by that digit sorts the list
Inductive Step: Assume it holds for d – 1digits Show: that it works for d digits
A radix sort of d digits is the same as a radix sort of d-1 digits followed by a sort on digit d
By our inductive hypothesis, the sort on d-1 digits works
• and the digits are in order according to their low-order d-1 digits
109
Proof by induction that RadixSort works (cont)
• The sort on digit d will order the elements by their dth digit
• Consider two elements a and b, with dth digits ad and bd respectively
• If ad < bd, the sort will put a before b, which is correct, since a < b regardless of their low order digits
110
Proof by induction that RadixSort works (cont)
• If ad > bd, the sort will put a after b, which is correct, since a > b regardless of their low order digits
• if ad = bd, the sort will leave a and b in the same order they were in, because it is stable. But that order is already correct, since the correct order of a and b is determined by the low-order d-1 digits when their dth digits are equal
111
Radix Sort Example Show how n integers in the range 1 to
n2 can be sorted in (n) time Subtract 1 from each number
• So they’re in the range 0 to n2-1• We’ll add the one back after they are sorted
Use a radix-n sort Each digit requires n symbols, and lognn2
digits are needed (d=2, k=n). • i.e., treat the numbers as 2-digit numbers in
radix n• Each digit ranges from 0 to n-1
112
Radix Sort Example (cont)
Sort these 2-digit numbers with radix sort There are 2 calls to counting sort
• For (2(n + n)) = (n) time
The passes to subtract 1 and add 1each take (n) time
Hence, total running time of (n)
113
Radix Sort Example (cont)
Take 15 integers in the range of 1 to 152 (225)
Subtract one from each number to get the range 0 to 224
We will use a radix-15 sort We will need 2 digits of n-many symbols
Each digit ranges from 0 to n-1 See Handout
114
Bucket Sort
Bucket Sort assumes that the input values are uniformly distributed over the range [0,1), 0 x < 1
Procedure: Divide inputs into n equal-sized subintervals
(buckets) over the range [0,1). Sort each bucket and concatenate the buckets.
T(n) = (n)
115
Bucket Sort (cont)A B
1 .78 0
2 .17 1 .12 .17
3 .39 2 .21 .23 .26
4 .26 3 .39
5 .72 4
6 .94 5
7 .21 6 .68
8 .12 7 .72 .78
9 .23 8
10 .68 9 .94
116
Bucket Sort (cont)
Bucket-Sort(A)1. n Length(A) 12. for i 1 to n n+13. insert A[i] into list B[nA[i]] n4. for i 0 to n – 1 n+15. sort list B[i] with InsertionSort
n*T(n)6. concatenate the lists B[0], B[1], … ,B[n-1] n
together in order
117
Analysis of Bucket Sort
All lines except Line 5 take (n) time What is the cost of the calls to
InsertionSort? Let ni be the random variable denoting the
number of elements in bucket B[i] And we know that InsertionSort runs in
(n2) time
118
Analysis of Bucket Sort (cont)
1,,1,012
)(
)(
)()]([
)()(
2
1
0
2
1
0
2
1
0
2
1
0
2
ninn
nn
nn
nnnT
nnnT
i
n
ii
n
ii
n
ii
n
ii
for E
that claim We
E
E
EE
By equation c.21
EQ 8.2
EQ 8.1
119
Analysis of Bucket Sort (cont)
To prove the above equation, define indicator random variables
• Xij = I{A[j] falls into bucket i]– for i = 0, 1, …, n-1– for j = 1, 2, …, n
Thus…
n
jiji Xn
1
120
Analysis of Bucket Sort (cont)
: Ecompute To 2in
njjk
nkikij
n
jij
njjk
nkikij
n
jij
n
j
n
kikij
n
jiji
XXX
XXX
XX
Xn
1 11
2
1 11
2
1 1
2
1
2
EE
E
E
EE
EQ 8.3
121311131312111213111211213
212
211
213121311131312
212111213111211
211
131211131211
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX
XXXXXX
121
Analysis of Bucket Sort (cont)
Evaluate the two summations separately
n
nnin1
12122 101E
21
11
EEE
n
nn
ikijikij XXXX
Lemma 5.1E[XA] = Pr{A}
122
Analysis of Bucket Sort (cont) Substitute these into EQ 8.3
n
n
nn
nnn
n
nnn
njjk
nk
n
ji
12
11
11
1
11E
2
1 12
1
2
Which proves EQ 8.2
123
Thus, when input is drawn from a
uniform distribution,
BucketSort runs in linear time
Analysis of Bucket Sort (cont)
Use the expected value in EQ 8.1
)(
n
12)(
n
1-2)(
E)()(
1
0
1
0
2
n
nn
n
nnnT
n
i
n
ii
124
Strassen’s Algorithm for Matrix Multiplication It is another divide-and-conquer
algorithm The naïve (straightforward) method for
multiplying two n x n matrices is (n3) n3 multiplications n2(n-1) additions
Strassen’s algorithm runs in (nlg7) = (n2.81)
125
Strassen’s Algorithm for Matrix Multiplication (cont) We wish to compute C = AB
All are n x n matrices Assume n is a power of 2
Divide each of A, B, and C into four n/2 x n/2 matrices, rewriting C = AB
hg
fe
dc
ba
ut
sr
126
Strassen’s Algorithm for Matrix Multiplication (cont) To compute each of the sub-matrices of
C: r = ae + bg s = af + bh t = ce + dg u = cf + dh
These are the eight “essential terms”
127
Strassen’s Algorithm for Matrix Multiplication (cont) To solve C
We need to make 8 recursive callsto “multiply” (with input size n/2)
And then perform 4 matrix additions Therefore,
No better than the “naïve” method
)(
)()(8)(3
22
n
nTnT n
The addition of
twon x n
matrices takes (n2)
time
128
Strassen’s Algorithm for Matrix Multiplication (cont) Strassen was the first to discover an
asymptotically faster algorithm (in the 1970s)
)(
)(
)()(7)(
81.2
7lg
22
n
n
nTnT n
By case 1 of the Master
Method
129
Strassen’s Algorithm for Matrix Multiplication (cont) His method
Divide the input matrices into n/2 x n/2 submatrices
Using (n2) scalar additions and subtractions, compute 14 matrices A1, B1, A2, B2, …, A7, B7, each of which is n/2 x n/2
Recursively compute the seven matrix products Pi = AiBi for i = 1, 2, …, 7
130
Strassen’s Algorithm for Matrix Multiplication (cont)
Compute the desired submatrices r, s, t, u of the result matrix C by adding and/or subtracting various combinations of the Pi matrices, using only (n2) scalar additions and subtractions
131
Strassen’s Algorithm for Matrix Multiplication (cont)
The Pi matrices:
fecaBAP
hgdbBAP
hedaBAP
egdBAP
edcBAP
hbaBAP
hfaBAP
777
666
555
444
333
222
111
Notice that each of these 7 Pi matrices
requires ONE multiplication only
132
Strassen’s Algorithm for Matrix Multiplication (cont)
Use the Pi matrices to compute:
7315
43
21
6245
PPPPu
PPt
PPs
PPPPr
133
Strassen’s Algorithm for Matrix Multiplication (cont) The simple recurrence to compute C is:
)(18)(7)( 81.2222 nTnT nn
The cost of the 7
recursive calls
The cost of the 18 n/2 x n/2 matrix additions and subtractions
134
An Example of Strassen’s Algorithm
Let C, A, and B be 2x2 matrices with
Therefore:
2221
1211
2221
1211
2221
1211 ,,bb
bbB
aa
aaA
cc
ccC
22
21
12
11
ad
ac
ab
aa
22
21
12
11
bh
bg
bf
be
22
21
12
11
cu
ct
cs
cr
135
An Example of Strassen’s Algorithm (cont)
121121117
222122126
221122115
1121224
1122213
2212112
2212111
bbaap
bbaap
bbaap
bbap
baap
baap
bbap
136
An Example of Strassen’s Algorithm (cont)
731522
4321
2112
624511
ppppc
ppc
ppc
ppppc
137
Discussion of Strassen’s Algorithm Strassen’s algorithm is numerically
stable, but not always as accurate as the naïve algorithm
It requires a significant amount of workspace to store intermediate results
The constant factor in the running time is greater than that in the naive algorithm
138
Discussion of Strassen’s Algorithm (cont) When matrices are sparse, there are
faster algorithms designed for sparse matrices
A potential attraction is its natural block decomposition; instead of continuing the recursion until n = 1, one could instead use a more standard matrix multiply as soon as n is small enough
139
Final Notes on Strassen’s Algorithm What if n is not a power of 2?
And you want to compute the product of two n x n matrices A and B
Set
Consider the following two matrices
nnn
nn n
2
2 2log
that such two of
power a is that so
nn
00
0
00
0 BB
AA
and
140
Final Notes on Strassen’s Algorithm (cont)
Since is a power of two, Strassen’s algorithm can be used to multiply
Since , the resulting algorithm still uses operations to multiply A and B together
BA
nnBA
is submatrix
left top whosematrix a is
n
BA
by nn 2
7log2n
141
An Example
0000
090114138
0546984
0182430
0000
0123
0456
0789
0000
0987
0654
0321
4
90114138
546984
182430
123
456
789
987
654
321
3
C
BA
n
CBA
nBAC
therefore and
then If
then and
where Find
142
Polynomials and FFT
To add two polynomials of degree n takes (n) time
To multiply two polynomials of degree n takes (n2) time
Using the Fast Fourier Transform, we can reduce the time of multiplying to (nlgn) time
143
Polynomials
Coefficients
Degree k The highest nonzero coefficient is ak
Degree-bound Any integer strictly greater than the degree of a
polynomial• Any polynomial with degree 0 to n-1 has a degree-bound
n
1
0
)(n
j
jj xaxA
110 ,,, naaa
144
Polynomials (cont)
Polynomial addition
If A(x) and B(x) are polynomials of degree-bound n, then A(x) + B(x) = C(x) is also of degree-bound n
1
0
1
0
1
0
)()()(n
j
jj
n
j
jj
n
j
jjj xbxaxba
xBxAxC
145
Polynomials (cont)
Polynomial multiplication
degree(C) = degree(A) + degree(B) • which implies• Degree-bound (C) = degree-bound(A) + degree-bound(B) – 1
• <= degree-bound(A) + degree-bound(B)
1
0
1
0
22
0 0
)()()(n
j
jj
n
j
jj
n
j
jj
kkjk xbxaxba
xBxAxC
146
Review of Complex Numbers
Have the form a + bi where i = 1
22
2222
)()(
)()(
)()(
babia
dc
iadbc
dc
bdac
dic
bia
ibcadbdacdicbia
idbcadicbia
idbcadicbia
:Value Absolute
:Division
:tionMultiplica
:Difference
:Sum
147
Coefficient Representation of Polynomials Is a vector of coefficients
Evaluating the polynomial A(x0) using Horner’s rule:
Takes time (n)
),,,( 110 naaaa
)))((()( 10201000 naxaxaxaxAy 0i nwhile i >= 0
y ai + x * yi i - 1
148
Coefficient Representation of Polynomials (cont) Adding two polynomials
Simply add the two coefficient vectors a and b representing A(x) and B(x)
Takes time (n)
149
Coefficient Representation of Polynomials (cont) Multiplying two polynomials
Multiply each element of coefficient vector a by each element in coefficient vector b giving coefficient vector c
c is called the convolution of vectors a and b
• It is denoted by c = a b
Takes time (n2)
150
Coefficient Representation of Polynomials (cont) Multiplying polynomials and computing
convolutions is done often in practice We need efficient algorithms for them
151
Point-Value Representation of Polynomials
A point-value representation of a polynomial A(x) of degree-bound n is a set of n point-value pairs
such that all of the xk are distinct and
yk = A(xk)
for k = 0, 1, …, n-1
111100 ,,,,,, nn yxyxyx
152
Point-Value Representation of Polynomials (cont) Uniquely specified by knowing A(x) at n different values of x
)(),,),,),, 110 kkn xAyyyy where,(x(x(x 1-n10
x
y = A(x)
xj
yj
153
Point-Value Representation of Polynomials (cont) To compute the point-value
representation for a polynomial in coefficient form Select n distinct points x0, x1, …, xn-1
Evaluate A(xk) for k = 0, 1, …, n-1
Using Horner’s method this takes (n2) time
154
Point-Value Representation of Polynomials (cont) Interpolation
Taking the point-value representation and determining the coefficient form of the polynomial
• This is the same as “evaluating” the polynomial in point-value form
155
Point-Value Representation of Polynomials (cont) Theorem 30.1 (Uniqueness of an
interpolating polynomial) For any set
of n point-value pairs such that all the xk
values are distinct, there is a unique polynomial A(x) of degree-bound n such that yk = A(xk) for k = 0, 1, …, n-1
Proof – but first a review of some matrix operations
111100 ,,,,,, nn yxyxyx
156
Review of Matrix Operations
n x n identity matrix (In) =
Inverse of an n x n matrix A is the n x n matrix A-1 (if it exists), such that
100
010
001
AAIAA n11
157
Review of Matrix Operations (cont) If a matrix has an inverse, it is called
Invertible
Nonsingular
If a matrix has no inverse, it is called Noninvertible
Singular
When a matrix inverse exists, it is unique
158
Review of Matrix Operations (cont) Minor
The ijth minor of an n x n matrix A, for n > 1, is the (n-1) x (n-1) matrix A[ i j ]
obtained by deleting the ith row and jth column of A
159
Review of Matrix Operations (cont) Determinant of an n x n matrix A
Defined recursively in terms of its minors by
1)det()1(
1)det(
1]1[1
1
11
nAa
naAn
jjj
j if
if
160
Review of Matrix Operations (cont) To easily find the determinant of a 2 x 2
matrix:
211222112221
1211 aaaaaa
aaA
161
Review of Matrix Operations (cont) To find the determinant of a 3 x 3 matrix
223113322113233112332112233211332211
223132211323313321122332332211
3231
222113
3331
232112
3332
232211
333231
232221
131211
aaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaa
aa
aaa
aa
aaa
aa
aaa
aaa
aaa
aaa
A
162
Review of Matrix Operations (cont) Example: Find the determinant of:
2
)4)(1()2)(3(
)4()2(
)det()1()det()1()det(
24
13
1211
]12[1221
]11[1111
aa
AaAaA
A
163
Review of Matrix Operations (cont) Same example, different notation
2
46
)1)(4()2)(3(24
13
24
13
A
A
164
Review of Matrix Operations (cont)
)det()1()det()1(
)det()1()det()1(
)det()1()det()1(
)det()1(
)det()1()det()1()det(
101
312
121
312221
322111
13
312321
332111
12
322321
332211
11
]13[1331
]12[1221
]11[1111
aaaaa
aaaaa
aaaaa
Aa
AaAaA
A
Example: Find the determinant of:
165
Review of Matrix Operations (cont)
10
1101
1)1(521)1(
)1)(1()0)(2()1(
)1)(3()1)(2(2)0)(3()1)(1()1(
)1()0(
)1()1()0()1(
222113
232112232211
aaa
aaaaaa
166
Review of Matrix Operations (cont) Same example, different notation
10
1101
)1)(1()5)(2()1)(1(
)1)(1()0)(2()1()3)(1()1)(2()2()3)(0()1)(1()1(
01
12)1(
11
32)2(
10
31)1(
101
312
121
,
101
312
121
AA
167
Review of Matrix Operations (cont) Theorem 28.5
An n x n matrix A is singular (is noninvertible) if and only if det(A) = 0
Conversely, an n x n matrix A is nonsingular (is invertible) if and only if det(A) 0
168
Review of Matrix Operations (cont) Theorem: Square Systems with Exactly One
Solution If A is an invertible square matrix, then the system
of equations given by AX = B has the solution X = A-1B
Proof:
BAX
BAXI
BAAXA
BAX
n
1
1
11
169
Back To Point-Value Representation of Polynomials Theorem 30.1 (Uniqueness of an
interpolating polynomial) For any set
of n point-value pairs such that all the xk
values are distinct, there is a unique polynomial A(x) of degree-bound n such that yk = A(xk) for k = 0, 1, …, n-1
111100 ,,,,,, nn yxyxyx
170
Point-Value Representation of Polynomials (cont) Proof of Theorem 30.1:
yk = A(xk) for k = 0, 1, …, n-1 is equivalent
to the matrix equation
1
1
0
1
1
0
11
211
11
211
10
200
1
1
1
nnnnnn
n
n
y
y
y
a
a
a
xxx
xxx
xxx
171
Point-Value Representation of Polynomials (cont) The Vandermonde matrix
(shown on previous slide), has the determinant
And is therefore invertible if the xk are
distinct. Thus, we can solve for vector a:
10
)(nkj
jk xx
),...,,( 110 nxxxV
yxxxVa n1
110 ),...,,(
See problem 28.1-11
172
Point-Value Representation of Polynomials (cont) To interpolate by solving the set of
linear equations using the standard method of Gaussian Elimination takes (n3) time
A faster algorithm for n-point interpolation based on Lagrange’s formula
173
Point-Value Representation of Polynomials (cont)
To compute the coefficients takes time (n2)
1
0
)(n
kkj
jk
kjj
k xx
xx
yxA
174
Point-Value Representation of Polynomials (cont) An example using Lagrange’s Formula
345
20725.155875.25
29719875.249375.38875.3
8
1657
8
1242
8
207
2971984
99
8
744
8
310
8
31
8
86207
4
12899
8
241031
)46)(26(
)4)(2(207
)64)(24(
)6)(2(99
)62)(42(
)6)(4(31)(
:)}207,6(),99,4(),31,2{(
2
2
22
2
22
222
xx
xx
xxxx
xx
xxxx
xxxxxx
xxxxxxxA
:Given
Why is thisalgorithm only(n2) time?
175
Point-Value Representation of Polynomials (cont) Adding two polynomials:
Given point-value representation for two polynomials A and B:
Then the point-value representation for C:
The time is (n)
111100
111100
,,,,,,
,,,,,,
nn
nn
yxyxyx
yxyxyx
111111000 ,,,,,, nnn yyxyyxyyx
The x’s are the same!
176
Point-Value Representation of Polynomials (cont) Multiplying two polynomials:
We just need to multiply the corresponding values of A and B to get the point-value representation of C
A problem arises because the degree-bound of C (2n) is the sum of the degree-bounds for A and B (n)
• And we need 2n point-value pairs to represent C
177
Point-Value Representation of Polynomials (cont)
So, we must extend A and B to include 2n point-value pairs each
Then the point-value representation for C:
The time is (n)
12121100
12121100
,,,,,,
,,,,,,
nn
nn
yxyxyx
yxyxyx
121212111000 ,,,,,, nnn yyxyyxyyx
178
Best of Both Worlds
Can we get "fast" multiplication and evaluation?
coefficient
Representation
O(n2)
Multiplication
O(n)
Evaluation
point-value O(n) O(n2)
FFT O(n log n) O(n log n)
179
Best of Both Worlds (cont)
Yes! Convert back and forth between two representations
110
110
,,,
,,,
n
n
bbb
aaa
2-2n10 ,,,c cc
)},(,),,{(
)},(,),,{(
121200
121200
nn
nn
yxyx
yxyx
)},(),,{( 12120,0 nn yxyx O(n)
point-value multiplication
O(n2)
coefficient multiplication
O(n log n)evaluationFFT
interpolationinverse FFT
O(n log n)
180
Best of Both Worlds (cont)
Key idea: choose {x0, x1, . . . , xn-1 } to
make computation easier This will allow us to convert between
representations in (nlgn) time We will use “complex roots of unity” as
the evaluation points
181
Complex Roots of Unity
A complex nth root of unity is a complex number such that n = 1
There are exactly n many nth roots of unity
1,,1,0/2 nke nik for
182
Complex Roots of Unity (cont)
The principal nth root of unity
All the complex nth roots of unity are powers of n
For each term,
nin e /2
1210 ,,, nnnnn
1nk
n
183
Complex Roots of Unity (cont)
Definition of the exponential of a complex number:
And
We get an nth root of unity by
)2sin()2cos(1
)sin()cos(
)2sin()2cos(1
2
ie
uiue
i
i
iu therefore
and
)sin()cos(1 22/21
nnni ien
)sin()cos( uiue iu
184
Complex Roots of Unity (cont)
But 1 can be written using different arguments as follows:
etc.
)6sin()6cos(1
)4sin()4cos(1
)2sin()2cos(1
)0sin()0cos(1
6
4
2
0
ie
ie
ie
ie
i
i
i
i
185
Complex Roots of Unity (cont)
Hence dividing the argument in each case by n gives the following nth roots of unity
etc.
)sin()cos(1
)sin()cos(1
)sin()cos(1
)sin()cos(1
66
44
22
00
61
41
21
01
nn
nn
nn
nn
ie
ie
ie
ie
ni
n
ni
n
ni
n
ni
n
186
Complex Roots of Unity (cont)
An example: Find the cube roots of unity
)31()sin()cos(
)31()sin()cos(
1)0sin()0cos(
2,1,0
21
34
343/222
3
21
32
323/121
3
3/0203
3/2
iie
iie
ie
ke
i
i
i
ik
for
187
Complex Roots of Unity (cont)
Another example: Find the fourth roots of unity
iie
ie
iie
ie
ke
i
i
i
i
ik
)sin()cos(
1)sin()cos(
)sin()cos(
1)0sin()0cos(
3,2,1,0
23
234/323
4
4/2224
224/121
4
4/0204
4/2 for
188
Complex Roots of Unity (cont)
The n complex roots of unity are equally spaced around the circle of unit radius
The cube rootsof unity
189
Euler’s Formula:ei +1 = 0
Properties of Roots of Unity Lemma 30.3 (Cancellations Lemma)
For any integers n 0, k 0, and d > 0,
Proof:
Corollary 30.4 For any even integer n > 0, Proof:
kn
dkdn
kn
kni
dkdnidkdn
e
e
/2
/2
122/ n
n
12
2//22//2 inninn
nin eee
190
Properties of Roots of Unity (cont)
Corollary 99
Let n > 0 be even, and let n and n/2 be the
principal nth and (n/2)th roots of unity. Then
Proof: k
nkn v 2/
2
kn
iknikkn vee
n
2//2/222
2
191
Properties of Roots of Unity (cont) Lemma 30.5 (Halving lemma)
Let n > 0 be even. Then, the squares of the n complex nth roots of unity are the n/2 complex (n/2)th roots of unity.
Proof: If we square all of the nth roots of unity, then each (n/2) th root is obtained exactly twice since:
square same the have and these of both 99 Cor
thus
30.4 Cor
kn
nkn
k
kn
kn
nkn
kn
nkn
v
2/
2222/
2/ ,
192
Properties of Roots of Unity (cont)
Lemma 30.6 (Summation Lemma) For any integer n 1 and nonnegative
integer k not divisible by n Proof:
01
0
n
j
jkn
0
1
11
1
1
1
11
0
kn
k
kn
knn
kn
nkn
n
j
jkn
193
The DFT
Remember, we want to evaluate a polynomial of degree-bound n at
Actually, since we will eventually multiply, n is actually 2n
• We are working with complex (2n)th roots of unity
Also assume that n is a power of 2• We can add new high-order zero coefficients as
necessary
1210 ,,,, nnnnn
194
The DFT (cont)
Polynomial A is in coefficient form
The vector y is the Discrete Fourier Transform of the coefficient vector a
1
0
)(n
j
kjnj
knk
a
Ay
195
The FFT
The FFT allows us to compute the DFTn(a) in time (nlgn)
Define “even” and “odd” polynomials:
)()()(
)(
)(
2][2][
11
37
25
131
][
12
36
24
120
][
2
2
xxAxAxA
xaxaxaxaaxA
xaxaxaxaaxA
OE
nO
nE
n
n
196
The FFT (cont)
Reduces problem of Evaluating degree n polynomial A(x) at
0, 1, . . . , n-1
to evaluating two degree n/2 polynomials at:
(0)2, (1)2, . . . , (n-1)2 . Halving Lemma A[E](x) and A[O](x)
evaluated only at n/2 complex (n/2) th roots of unity
197
The FFT Algorithm
),,,,(
;
;
12/0
),...,,,,2/),...,,(
),...,,,,2/),...,,(
;
;
)1(
)...,,,,
1210
2/
153112/10
242012/10
/2
0
110
n
Ok
kn
Eknk
Ok
kn
Ekk
nOn
OO
nEn
EE
nin
n
yyyy
aay
aay
ntok
aaaanaaa
aaaanaaa
e
a
n
aaan
return
for
FFT(
FFT(
return
2 of power a is n // if
FFT(
O(n) time multiplies if we pre-compute k
198
The FFT Algorithm (cont)
Recursion Tree
76,5432,10 ,,,,,,, aaaaaaaa
7531 ,,, aaaa6420 ,,, aaaa
73 ,aa51 ,aa62 ,aa40 ,aa
0a1a2a3a
4a5a6a7a
199
The FFT Algorithm (cont)
The recurrence for this algorithm is
)lg(
)()2/(2)(
nn
nnTnT
200
Proof of the FFT Algorithm
We need to show thatfor each k = 0, …, n-1
Base case: n = 1
Induction step: Assume algorithm correct for n/2
1
0
)(n
j
kjnj
knk aAy
00100 aay
201
Proof of the FFT Algorithm (cont) Let be the principal (n/2)th root of unity
)()()( Recall
99Corollary by )()(
99Corollary by )()(
2][2][
2][][
2][][
xxAxAxA
AAa
AAa
OE
kOkOOk
kEkEEk
202
Proof of the FFT Algorithm (cont)
)(
)()(
)()(
)()(
2/
2][2/2][
2][2/2][
2][2][
2/
nk
nkn
Onkn
nkn
E
kn
Onkn
kn
E
kn
Okn
kn
E
Ok
kn
Eknk
A
AA
AA
AA
aay
)(
)()( 2][2][
kn
kn
Okn
kn
E
Ok
kn
Ekk
A
AA
aay
203
The Inverse FFT
110
110
,,,
,,,
n
n
bbb
aaa
2-2n10 ,,,c cc
)(
)(
)(
,
)(
)(
)(
122
12
02
122
12
02
nn
n
n
nn
n
n
B
B
B
A
A
A
)(
)(
)(
122
12
02
nn
n
n
C
C
C
O(n)
point-value multiplication
O(n2)
coefficient multiplication
O(n log n)evaluationFFT
interpolationinverse FFT
O(n log n)
204
The Inverse FFT (cont)
Forward FFT given {a0, a1, . . . , an-1 }
compute {y0, y1, . . . , yn-1 }
1
3
2
1
0
)1)(1()1(3)1(21
)1(3963
)1(2642
1321
1
3
2
1
0
1
1
1
1
11111
nnn
nn
nn
nnn
nnnnn
nnnnn
nnnnn
n a
a
a
a
a
y
y
y
y
y
Vn
205
The Inverse FFT (cont)
Inverse FFT given {y0, y1, . . . , yn-1 }
compute {a0, a1, . . . , an-1}
1
3
2
1
0
1
)1)(1()1(3)1(21
)1(3963
)1(2642
1321
1
3
2
1
0
1
1
1
1
11111
nnn
nn
nn
nnn
nnnnn
nnnnn
nnnnn
n y
y
y
y
y
a
a
a
a
a
Vn-1
206
The Inverse FFT (cont)
It is the same algorithm as FFT, except use n
-1 as “principal” nth root of unity (and divide by n).
)1)(1()1(3)1(2)1(
)1(3963
)1(2642
)1(321
1
1
1
1
1
11111
1
nnnnn
n
n
n
n nF
207
The Inverse FFT (cont)
Theorem 30.7 For j, k = 0, 1, …, n-1, the (j, k) entry of
Proof:• We will show that Vn
-1Vn = In
• Consider the (j, j ) entry of Vn-1Vn
nV
kjn
n
is 1
208
The Inverse FFT (cont)
•
• If j = j , the summation = 1• If j j , the summation = 0
Therefore, the interpolation/DFTn-1(y) is
1
0
)(
1
0
1
n
k
jjkn
n
k
jkkj
nnn
n
nVV
By the Summation
Lemma
1,,1,01 1
0
njyn
an
k
kjnkj for
209
The Inverse FFT Algorithm
),,,,(
;
;
12/0
),...,,,,2/),...,,(
),...,,,,2/),...,,(
;
;
)1(
)...,,,,
1210
2/
153112/10
242012/10
/2
0
110
n
Ok
kn
Ek
nk
Ok
kn
Ek
k
nOn
OO
nEn
EE
nin
n
yyyyn
aay
naay
ntok
aaaanaaa
aaaanaaa
e
a
n
aaan
return
for
FFT(
FFT(
return
2 of power a is n // if
FFT(-Inverse
210
Summary Slides
Divide & Conquer Algorithms Recursion Review Designing Algorithms Analyzing Divide & Conquer Algorithms MergeSort Analysis of MergeSort QuickSort Performance of QuickSort
211
Summary Slides (cont.)
Randomized QuickSort Analysis of QuickSort Indicator Random Variables Median and Order Statistics The Selection Problem Minimum and Maximum Selection in Expected Linear Time Analysis of Selection Algorithm
212
Summary Slides (cont.)
Selection in Worst-Case Linear Time Analyzing “Median of Medians” Review of Sorts Lower Bounds for Sorting The Decision-Tree Model Analysis of Decision-Tree Model Theorem 8.1 Sorting in Linear Time
213
Summary Slides (cont.)
Counting Sort Analysis of CountingSort: Radix Sort Analysis of RadixSort Proof by induction that RadixSort works Radix Sort Example Bucket Sort Analysis of Bucket Sort
214
Summary Slides (cont.)
Strassen’s Algorithm for Matrix Multiplication An Example of Strassen’s Algorithm Discussion of Strassen’s Algorithm Final Notes on Strassen’s Algorithm Polynomials and FFT Polynomials Review of Complex Numbers
215
Summary Slides (cont.)
Coefficient Representation of Polynomials
Point-Value Representation of Polynomials
Review of Matrix Operations Best of Both Worlds Complex Roots of Unity Properties of Roots of Unity
216
Summary Slides (cont.)
The DFT The FFT The FFT Algorithm Proof of the FFT Algorithm The Inverse FFT The Inverse FFT Algorithm
top related