Theoretical Computer Science Cheat Sheet Definitions Series ... - TUG
Theoretical Computer Science Cheat Sheet Definitions Series ... - TUG
Theoretical Computer Science Cheat Sheet Definitions Series ... - TUG
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
38.<br />
40.<br />
42.<br />
44.<br />
46.<br />
48.<br />
<strong>Theoretical</strong> <strong>Computer</strong> <strong>Science</strong> <strong>Cheat</strong> <strong>Sheet</strong><br />
Identities Cont.<br />
[ ] n + 1<br />
= ∑ [ ]( n k<br />
n∑<br />
[ k<br />
n∑<br />
] [ ]<br />
= n<br />
m + 1 k m)<br />
m]<br />
n−k 1 k x<br />
n∑<br />
⟨ ⟩( )<br />
n x + k<br />
= n!<br />
, 39. =<br />
,<br />
k![<br />
m<br />
x − n k 2n<br />
{<br />
k<br />
k=0<br />
k=0<br />
k=0<br />
n<br />
=<br />
m}<br />
∑ ( ){ }<br />
[ n k + 1<br />
n<br />
(−1) n−k , 41. =<br />
k m + 1<br />
m]<br />
∑ [ ]( )<br />
n + 1 k<br />
(−1) m−k ,<br />
k + 1 m<br />
k<br />
k<br />
{ }<br />
m + n + 1<br />
m∑<br />
{ }<br />
[ ]<br />
n + k<br />
m + n + 1<br />
m∑<br />
[ ] n + k<br />
= k , 43.<br />
= k(n + k) ,<br />
m<br />
k<br />
m<br />
k<br />
(<br />
k=0<br />
k=0<br />
n<br />
=<br />
m)<br />
∑ { }[ ]<br />
( n + 1 k n<br />
(−1) m−k , 45. (n − m)! =<br />
k + 1 m<br />
m)<br />
∑ [ ]{ }<br />
n + 1 k<br />
(−1) m−k , for n ≥ m,<br />
k + 1 m<br />
{ }<br />
k<br />
k<br />
n<br />
= ∑ ( )( )[ ] [ ]<br />
m − n m + n m + k<br />
n<br />
, 47. = ∑ ( )( ){ }<br />
m − n m + n m + k<br />
,<br />
n − m m + k n + k k<br />
n − m m + k n + k k<br />
{ }(<br />
k<br />
)<br />
k<br />
n l + m<br />
= ∑ { }{ }( [ ]( )<br />
k n − k n n l + m<br />
, 49.<br />
=<br />
l + m l<br />
l m k)<br />
∑ [ ][ ]( k n − k n<br />
.<br />
l + m l<br />
l m k)<br />
k<br />
k<br />
Trees<br />
Every tree with n<br />
vertices has n − 1<br />
edges.<br />
Kraft inequality:<br />
If the depths<br />
of the leaves of<br />
a binary tree are<br />
d 1 , . . . , d n :<br />
n∑<br />
2 −d i<br />
≤ 1,<br />
i=1<br />
and equality holds<br />
only if every internal<br />
node has 2<br />
sons.<br />
Master method:<br />
T (n) = aT (n/b) + f(n), a ≥ 1, b > 1<br />
If ∃ϵ > 0 such that f(n) = O(n log b a−ϵ )<br />
then<br />
T (n) = Θ(n log b a ).<br />
If f(n) = Θ(n log b a ) then<br />
T (n) = Θ(n log b a log 2 n).<br />
If ∃ϵ > 0 such that f(n) = Ω(n log b a+ϵ ),<br />
and ∃c < 1 such that af(n/b) ≤ cf(n)<br />
for large n, then<br />
T (n) = Θ(f(n)).<br />
Substitution (example): Consider the<br />
following recurrence<br />
T i+1 = 2 2i · T 2 i , T 1 = 2.<br />
Note that T i is always a power of two.<br />
Let t i = log 2 T i . Then we have<br />
t i+1 = 2 i + 2t i , t 1 = 1.<br />
Let u i = t i /2 i . Dividing both sides of<br />
the previous equation by 2 i+1 we get<br />
t i+1 2i<br />
=<br />
2i+1 2 i+1 + t i<br />
2 i .<br />
Substituting we find<br />
u i+1 = 1 2 + u i, u 1 = 1 2 ,<br />
which is simply u i = i/2. So we find<br />
that T i has the closed form T i = 2 i2i−1 .<br />
Summing factors (example): Consider<br />
the following recurrence<br />
T (n) = 3T (n/2) + n, T (1) = 1.<br />
Rewrite so that all terms involving T<br />
are on the left side<br />
T (n) − 3T (n/2) = n.<br />
Now expand the recurrence, and choose<br />
a factor which makes the left side “telescope”<br />
Recurrences<br />
1 ( T (n) − 3T (n/2) = n )<br />
3 ( T (n/2) − 3T (n/4) = n/2 )<br />
. . .<br />
3 log n−1( 2<br />
T (2) − 3T (1) = 2 )<br />
Let m = log 2 n. Summing the left side<br />
we get T (n) − 3 m T (1) = T (n) − 3 m =<br />
T (n) − n k where k = log 2 3 ≈ 1.58496.<br />
Summing the right side we get<br />
m−1<br />
∑<br />
m−1<br />
n ∑ (<br />
2 i 3i = n 3<br />
) i<br />
2 .<br />
i=0<br />
i=0<br />
Let c = 3 2<br />
. Then we have<br />
m−1<br />
∑<br />
( c<br />
n c i m )<br />
− 1<br />
= n<br />
c − 1<br />
i=0<br />
= 2n(c log 2 n − 1)<br />
= 2n(c (k−1) log c n − 1)<br />
= 2n k − 2n,<br />
and so T (n) = 3n k − 2n. Full history recurrences<br />
can often be changed to limited<br />
history ones (example): Consider<br />
∑i−1<br />
T i = 1 + T j , T 0 = 1.<br />
Note that<br />
j=0<br />
T i+1 = 1 +<br />
Subtracting we find<br />
T i+1 − T i = 1 +<br />
= T i .<br />
i∑<br />
T j .<br />
j=0<br />
i∑ ∑i−1<br />
T j − 1 −<br />
j=0<br />
And so T i+1 = 2T i = 2 i+1 .<br />
j=0<br />
T j<br />
Generating functions:<br />
1. Multiply both sides of the equation<br />
by x i .<br />
2. Sum both sides over all i for<br />
which the equation is valid.<br />
3. Choose a generating function<br />
G(x). Usually G(x) = ∑ ∞<br />
i=0 xi g i .<br />
3. Rewrite the equation in terms of<br />
the generating function G(x).<br />
4. Solve for G(x).<br />
5. The coefficient of x i in G(x) is g i .<br />
Example:<br />
g i+1 = 2g i + 1, g 0 = 0.<br />
Multiply and sum:<br />
∑<br />
i≥0<br />
g i+1 x i = ∑ i≥0<br />
2g i x i + ∑ i≥0<br />
x i .<br />
We choose G(x) = ∑ i≥0 xi g i . Rewrite<br />
in terms of G(x):<br />
G(x) − g 0<br />
= 2G(x) + ∑ x i .<br />
x<br />
i≥0<br />
Simplify:<br />
G(x)<br />
= 2G(x) + 1<br />
x<br />
1 − x .<br />
Solve for G(x):<br />
x<br />
G(x) =<br />
(1 − x)(1 − 2x) .<br />
Expand this ( using partial fractions:<br />
2<br />
G(x) = x<br />
1 − 2x − 1 )<br />
1 − x<br />
⎛<br />
⎞<br />
= x ⎝2 ∑ 2 i x i − ∑ x i ⎠<br />
i≥0 i≥0<br />
So g i = 2 i − 1.<br />
= ∑ i≥0(2 i+1 − 1)x i+1 .