Xi = indicator random variable of the event that i-th person gets his hat back.
E[Xi]=1/20X=X1+…+X20
E[X] = E[X1] +…+ E[X
20] = 1
derangement = permutation with no fixed points
n! / e permutations with 1 fixed point
number =
derangement = permutation with no fixed points
n! / e permutations with 1 fixed point
number =
n (n-1)! / e
n (n-1)! / e n!
0.3678 0.368
Claim: Alice wins only on HHH game.
1/8 - Alice wins, gets $67/8 - Alice loses, pays $1= gets -$1
Alice’s expected payoff: (1/8)* 6 + (7/8) * (-1) = - 1/8
Bob has the advantage.
Heap MIN-HEAP-INSERT O(log k)HEAP-EXTRACT-MIN O(log k)
…
P1
Pk
We will find the array Ai whose first element e is the smallest, output e to B, remove e from Ai, and repeat. We will use a heap H as follows: we find e using Heap-Extract-Min procedure and then add the next element from Ai to Husing Min-Heap-Insert procedure. We make n calls to Min-Heap-Insert and n calls to Heap-Extract-Min. Hencethe running time is O(n.log k). To simplify the exposition we add at the end of each array. for i from 1 to k do
Pi 1; Max-Heap-Insert( H,[Ai[1],i] );for j from 1 to n do [e,i] Heap-Extract-Max (H); Pi Pi + 1; Max-Heap-Insert( H, [Ai [Pi],i] ); add e to B
<
<
LA1,RAn,LB1,RBnwhile LA<R
A do
MA (LA + RA)/2 MB (L + R)/2 if A[MA]<B[M] then LA M+ 1, R M- 1else RA M, L M
output smaller of A[LA],B[LB]
Randomized algorithm for “median”
L R<x =x >x
for random x
2) recurse on the appropriate part
1)
SELECT k-th element
Quick-sort
L R<x =x >x
for random x
2) recurse on both parts
1)
PARTITION
Quick-sortR-QUICK-SORT (A, l, r) x random element of A[l,r]; q PARTITION(A,x,l,r); R-QUICK-SORT(A,l,q-1); R-QUICK-SORT(A,q+1,r);
Quick-sortR-QUICK-SORT (A, l, r) x random element of A[l,r]; q PARTITION(A,x,l,r); R-QUICK-SORT(A,l,q-1); R-QUICK-SORT(A,q+1,r);
How many times is R-QUICK-SORT called?
Quick-sort R-QUICK-SORT (A, l, r) x random element of A[l,r]; q PARTITION(A,x,l,r); R-QUICK-SORT(A,l,q-1); R-QUICK-SORT(A,q+1,r);
Time spent in PARTITION?
Quick-sort R-QUICK-SORT (A, l, r) x random element of A[l,r]; q PARTITION(A,x,l,r); R-QUICK-SORT(A,l,q-1); R-QUICK-SORT(A,q+1,r);
Time spent in PARTITION?
compare x with all elements in A[l,r]
we will count the number of comparisons
Quick-sort R-QUICK-SORT (A, l, r) x random element of A[l,r]; q PARTITION(A,x,l,r); R-QUICK-SORT(A,l,q-1); R-QUICK-SORT(A,q+1,r);
Time spent in PARTITION?
Let the elements of A after sorting be b1 < b2 < … < bn
Let Xi,j be the indicator random variable for the event bi is compared to bj.
Quick-sortTime spent in PARTITION? Let the elements of A after sorting be b1 < b2 < … < bn
Let Xi,j be the indicator random variable for the event bi is compared to bj.
What is the probability that bi and bj arecompared in the first round ?
Quick-sortTime spent in PARTITION? Let the elements of A after sorting be b1 < b2 < … < bn
Let Xi,j be the indicator random variable for the event bi is compared to bj.
What is the probability that bi and bj arecompared in the first round ?
2/n (the pivot has to be bi or bj)
Quick-sortTime spent in PARTITION? What is the probability that bi and bj arecompared ?
2/(j-i+1)
Let bk be the first pivot such that ik j.
bi, bj get compared k=i or k=j
k is uniformly random in {i,…,j}
Quick-sortTime spent in PARTITION? What is the probability that bi and bj arecompared ?
2/(j-i+1)E[Xi,j] = 2/(j-i+1)
X= Xi,j1i<j n
E[X]=n = O(n ln n)2j-i+1
1i<j n k=2
n 2 k