Exercises
5.2-4 Given a permutation A, What is the expected number of indices i such that A[i] = i?
The answer is amazingly a constant, 1.
Lemma 5.1 The probablity of the permutation that no number is correctly placed D(n) = 1-1/1!+1/2!+...+(-1)^n/n!
Let B[i] stands for the condition that permutation A satifies A[i] = i
Thus D(n) = Pr{~B[1] and ~B[2] ... and ~B[n]}
= 1 - C(1,n)*(n-1)! + C(2,n)*(n-2)! + ... + (-1)^n*C(n,n)*0!
= 1-1/1!+...+(-1)^n/n!
Then, let C[i] stands for the condition that permutation A has exactly i correctly-placed number
According to the lemma, Pr{C[i]} = C(i,n)*(D(n-i)*(n-i)!)/n! = D(n-i)/i!
Thus, E[x] = sigma(i=0~n,i*Pr{C[i]})
= sigma(i=0~n,i*D(n-i)/i!)
= sigma(i=1~n,D(n-i)/(i-1)!)
= sigma(i=1~n,sigma(j=0~n-i,(-1)^j/j!) / (i-1)!)
= sigma(i+j<=n,i>0,(-1)^j /(i-1)!/j!)
= sigma(i+j<=n-1,(-1)^j / i! / j!)
if i+j = 0, sigma((-1)^j/i!/j!) = 1
if i+j > 0, sigma((-1)^j/i!/j!) = 1/(i+j)! * sigma((-1)^j*C(j,i+j)) = 0
Thus E[x] = 1
5.3-3
PERMUTE-WITH-ALL(A)
1 n <- length[A]
2 for i <- 1 to n
3 do swap A[i] <-> A[RANDOM(1,n)]
Does this code produce a uniform random permutation? Why or why not?
Not necessary.
First of all, this algorithm produces n^n posibilities, but there are only n! permutations. If the permutation distribution is uniform, n! | n^n
If n >= 3, then (n-1,n) = 1 and n-1 > 1, thus n-1 can't divide n
Thus for n >= 3, n! can't divide n^n
For n = 2, it can be concluded that both permutation 1,2 and 2,1 have the probability of 50%. Thus the algorithm is correct for n = 2
To conclude, the answer is no for all n >= 3
5.3-4
PERMUTE-BY-CYCLIC(A)
1 n <- length[A]
2 offset <- RANDOM(1,n)
3 for i <- 1 to n
4 do dest <- i + offset
5 if dest > n
6 then dest <- dest - n
7 B[dest] <- A[i]
8 return B
Show that each element A[i] has a 1/n probability of winding up in any particular position B. Then show that B is not uniformly random.
The former statement is obvious because offset is uniformly randomly chosen.
The latter statement is also obvious because A[i] and A[j] may collapse in the same dest.
5.4-7
Show that in n flips of a fair coin, the probability is less than 1/n that no streak longer than lgn-2lglgn consecutive heads occurs.
In the proof in section 5.4.3, treat floor((lgn)/2) as a function f(n), replace the function with floor(lgn - 2lglgn).
Then the probability required is at most (1-2^-f(n))^(n/f(n))
= (1 - (lgn)^2 / n)^(n/lgn)
<= e^( -(lgn)^2 / n * n / lgn) (1+x<=e^x)
= e^(-lgn) = 1/n
转载于:https://www.cnblogs.com/FancyMouse/articles/1034195.html