03.04.2014 Views

Theoretical Computer Science Cheat Sheet Definitions Series ... - TUG

Theoretical Computer Science Cheat Sheet Definitions Series ... - TUG

Theoretical Computer Science Cheat Sheet Definitions Series ... - TUG

SHOW MORE
SHOW LESS

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 .

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!