hw04 Solution PDF
hw04 Solution PDF
hw04 Solution PDF
CSCI-GA.1170-001/Summer 2016
Solution to Homework 4
Problem 1. (1 point) Illustrate the operation of randomized quicksort on the array:
A = (19, 2, 11, 14, 7, 17, 4, 3, 5, 15)
By showing the values in array A after each call to partition.
Solution:
A
A
A
A
A
A
A
=
=
=
=
=
=
=
[15 , 2, 11 , 14 , 7, 17 , 4, 3, 5,
[5 , 2, 11 , 7, 4, 3, 14 , 17 , 15 ,
[2 , 5, 11 , 7, 4, 3, 14 , 17 , 15 ,
[2 , 3, 4, 5, 11 , 7, 14 , 17 , 15 ,
[2 , 3, 4, 5, 11 , 7, 14 , 17 , 15 ,
[2 , 3, 4, 5, 7, 11 , 14 , 17 , 15 ,
[2 , 3, 4, 5, 7, 11 , 14 , 15 , 17 ,
19]
19]
19]
19]
19]
19]
19]
#
#
#
#
#
#
#
Partitioned
Partitioned
Partitioned
Partitioned
Partitioned
Partitioned
Partitioned
around
around
around
around
around
around
around
19
14
2
5
4
7
15
Problem 2 (CLRS 7.2-5). (2 points) Suppose that the splits at every level of quicksort are in
the proportion 1 to , where 0 < 1/2 is a constant. Show that the minimum depth of a
leaf in the recursion tree is approximately lg n/ lg and the maximum depth is approximately
lg n/ lg(1 ). (Dont worry about integer round-off.)
Solution: With 0 < 1/2 we have 1 , indicating that corresponds to a greater
or equal reduction in the problem size than 1 . Thus, the minimum depth of a leaf in the
recursion tree will be observed along the path where the problem of size n is reduced to n,
and the maximum depth along the path where the problem size is reduced to (1 )n.
We can view the length of each path as the number of times the initial problem size n can be
divided by 1/ and 1/(1 ) respectively before reaching the base case n = 1 (the problem
statement allows us to ignore integer round-off):
lg n
lg n
=
,
1
lg
lg
lg n
lg n
=
log1/(1) n = log(1)1 n =
.
1
lg(1 )
lg(1 )
Problem 3 (CLRS 7.2-6). (3 points) Argue that for any constant 0 < 1/2, the probability is
approximately 1 2 that on a random input array, partition produces a split more balanced
than 1 to .
Solution: Let us rename the elements of the initial array as z1 , z2 , ..., zn with zi being the i-th
smallest element. Observing that taking zi as a pivot results in a split i : n i, and defining S I
as the set of splits resulting from taking pivots from the set zi i I , we get:
S L = S{1,...,n}
S M = S{n+1, ..., (1)n1}
= {1 : n 1, ..., n : n n},
= {n + 1 : n n 1, ..., (1 )n 1 : n (1 )n + 1},
SH = S{(1)n, ..., n}
P =
Problem 4 (CLRS 7.4-3). (2 points) Show that the expression q2 + (n q 1)2 achieves a
maximum over q = 0, 1, ..., n 1 when q = 0 or q = n 1.
Solution: Let us define the function f (q) and take the derivatives:
f (q) = q2 + (n q 1)2 ,
f 0 (q) = 4q 2n + 2,
f 00 (q) = 4.
Setting the first derivative to zero and solving 4q 2n + 2 = 0 shows that the function has
n1
a single stationary point at q = n1
2 . The positive second derivative shows that q = 2 is a
minimum, and thus f (q) can only achieve a maximum at the endpoints of the interval [0, n1].
Evaluating the function at the endpoints confirms that f (q) achieves a maximum when q = 0
or q = n 1:
f (0) = (n 1)2 ,
f (n 1) = (n 1)2 .
2
Problem 5 (CLRS 7.4-2). (3 points) Show that quicksorts best-case running time is (n lg n).
Solution: We can formulate the recurrence for quicksorts best case by always considering a
split resulting in a minimum running time:
T (n) = min (T (q) + T (n q 1)) + (n).
0qn1
Let us prove by substitution that T (n) = (n lg n). We start with the base case T (1) = (1),
the inductive hypothesis:
T (k) ck lg k
1)
d
f 0 (q) = dq q
+ (n q 1)
ln 2
ln 2
1
1 ln q + q 1q + (1) ln(n q 1) + (n q 1) nq1
(1) ln 2
=
ln2 2
=
f 00 (q) =
=
ln q ln(n q 1)
,
ln 2
ln 2
1
q
1
nq1
ln2 2
n1
.
q(n q 1) ln 2
n1
2 :
ln q ln(n q 1)
=0
ln 2
ln q ln(n q 1) = 0
ln q = ln(n q 1)
q = nq1
n1
q=
,
2
3
n1
00 n 1
f
= n1
n1
2
n
1
ln 2
2
2
n1
=
=
(n1)2
4
4
(n 1) ln 2
>0
Therefore, q =
n1
2
ln 2
n1
n1
n1 n1
lg
+ n
1 lg n
1 + (n)
=c
2
2
2
2
n1 n1 n1 n1
=c
lg
+
lg
+ (n)
2
2
2
2
n1
+ (n)
= c(n 1) lg
2
= c(n 1) lg(n 1) c(n 1) lg 2 + (n)
= cn lg(n 1) c lg(n 1) c(n 1) + (n).
As 1 < k < n, we know that n 3 and thus:
T (n) cn lg(n 1) c lg(n 1) c(n 1) + (n)
n
cn lg c lg(n 1) c(n 1) + (n)
2
= cn lg n cn c lg(n 1) cn + c + (n)
= cn lg n + (2cn c lg(n 1) + c + (n)).
Our inductive step holds as long as the residual is non-negative:
2cn c lg(n 1) + c + (n) 0
(n) c(2n + lg(n 1) 1),
and we can always pick a sufficiently small c for the inequality to hold.
Having completed the substitution proof, we conclude that T (n) = (n lg n).