generating random derangementsconrado/research/talks/analco08.pdf · generating random derangements...
TRANSCRIPT
![Page 1: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/1.jpg)
Generating Random Derangements
Conrado Martínez1 Alois Panholzer2 Helmut Prodinger3
1Univ. Politècnica de Catalunya, Spain
2Tech. Univ. Wien, Austria
3Univ. Stellenbosch, South Africa
![Page 2: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/2.jpg)
Derangements
Le Problème des Derangements:
�A number of gentlemen, say n, surrender their top hats in the
cloakroom and proceed to the evening's enjoyment. After wining
and dining (and wining some more), they stumble back to the
cloakroom and confusedly take the �rst top-hat they see. What is
the probability that no gentleman gets his own hat?�
![Page 3: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/3.jpg)
Derangements
I A derangement is a permutation without �xed points: �(i) 6= i
for any i , 1 � i � n
I The number Dn of derangements of size n is
Dn = n! �
�1
0!�
1
1!+
1
2!�
1
3!+ � � �+
(�1)n
n!
�=
�n! + 1
e
�:
I As n!1, Dn=n! � 1=e � 0:36788.
![Page 4: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/4.jpg)
Derangements
I A derangement is a permutation without �xed points: �(i) 6= i
for any i , 1 � i � n
I The number Dn of derangements of size n is
Dn = n! �
�1
0!�
1
1!+
1
2!�
1
3!+ � � �+
(�1)n
n!
�=
�n! + 1
e
�:
I As n!1, Dn=n! � 1=e � 0:36788.
![Page 5: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/5.jpg)
Derangements
I A derangement is a permutation without �xed points: �(i) 6= i
for any i , 1 � i � n
I The number Dn of derangements of size n is
Dn = n! �
�1
0!�
1
1!+
1
2!�
1
3!+ � � �+
(�1)n
n!
�=
�n! + 1
e
�:
I As n!1, Dn=n! � 1=e � 0:36788.
![Page 6: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/6.jpg)
Break #1: Fisher-Yates' shu�e
procedure RandomPermutation(n)
for i 1 to n do A[i ] i
for i n downto 1 do
j Uniform(1; i)A[i ]$ A[j ]
return A
![Page 7: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/7.jpg)
Break #2: Sattolo's algorithm
procedure RandomCyclicPermutation(n)
for i 1 to n do A[i ] i
for i n downto 1 do
j Uniform(1; i � 1)A[i ]$ A[j ]
return A
![Page 8: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/8.jpg)
A recurrence for the number of derangements
D0 = 1;D1 = 0
Dn = (n � 1)Dn�1 + (n � 1)Dn�2
![Page 9: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/9.jpg)
A recurrence for the number of derangements
D0 = 1;D1 = 0
Dn = (n � 1)Dn�1 + (n � 1)Dn�2
Choice #1: n belongs to a cycle of length > 2.
The derangement of size n is built by constructing a derangement
of size n � 1 and then n is inserted into any of the cycles (of length
� 2); there are (n � 1) possible ways to do that
![Page 10: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/10.jpg)
A recurrence for the number of derangements
D0 = 1;D1 = 0
Dn = (n � 1)Dn�1 + (n � 1)Dn�2
Choice #2: n belongs to a cycle of length 2.
The derangement of size n is built by constructing a cycle of size 2
with n and some j , 1 � j � n � 1; then we build a derangement of
size n � 2 with the remaining elements
![Page 11: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/11.jpg)
The rejection method
Require: n 6= 1
procedure RandomDerangement(n)
repeat
A RandomPermutation(n)until Is-Derangement(A) return A
P[A is a derangement] �1
e
E[# of calls to Random] = e � n + O(1)
![Page 12: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/12.jpg)
The rejection method
Require: n 6= 1
procedure RandomDerangement(n)
repeat
A RandomPermutation(n)until Is-Derangement(A) return A
P[A is a derangement] �1
e
E[# of calls to Random] = e � n + O(1)
![Page 13: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/13.jpg)
The recursive method
C f1; 2; : : : ; ngRandomDerangement-Rec(n;C )
Require: n 6= 1
procedure RandomDerangement-Rec(n, C )
if n � 1 then return
j a random element from C
p Uniform(0; 1)if p < (n � 1)Dn�2=Dn then
RandomDerangement-Rec(n � 2;C n fj ; ng)�(n) j ;�(j) n
else
RandomDerangement-Rec(n � 1;C n fng)�(n) �(j);�(j) n
![Page 14: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/14.jpg)
Our algorithm
Require: n 6= 1
procedure RandomDerangement(n)
for i 1 to n do A[i ] i ;mark[i ] false
i n; u n
while u � 2 do
if :mark[i ] thenj pick a random unmarked element in A[1::i � 1]
A[i ]$ A[j ]
if j shall be marked � close the cycle then
mark[j ] true; u u � 1
u u � 1
i i � 1
return A
![Page 15: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/15.jpg)
Our algorithm
Require: n 6= 1
procedure RandomDerangement(n)
for i 1 to n do A[i ] i ;mark[i ] false
i n; u n
while u � 2 do
if :mark[i ] thenrepeat j Random(1; i � 1)until :mark[j ]A[i ]$ A[j ]p Uniform(0; 1)if p < (u � 1)Du�2=Du
mark[j ] true; u u � 1
u u � 1
i i � 1
return A
![Page 16: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/16.jpg)
Our algorithm
procedure RandomDerangement(n)for i 1 to n do A[i ] i ;mark[i ] falsei n; u n
while u � 2 doif :mark[i ] then
repeat j Random(1; i � 1)until :mark[j ]A[i ]$ A[j ]p Uniform(0; 1)if p < (u � 1)D
u�2=Du thenmark[j ] true; u u � 1
u u � 1i i � 1
return A
1 2 3 4 5 6 7 8
"
![Page 17: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/17.jpg)
Our algorithm
procedure RandomDerangement(n)for i 1 to n do A[i ] i ;mark[i ] falsei n; u n
while u � 2 doif :mark[i ] then
repeat j Random(1; i � 1)until :mark[j ]A[i ]$ A[j ]p Uniform(0; 1)if p < (u � 1)D
u�2=Du thenmark[j ] true; u u � 1
u u � 1i i � 1
return A
1 2 3 4 8 6 7 5
![Page 18: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/18.jpg)
Our algorithm
procedure RandomDerangement(n)for i 1 to n do A[i ] i ;mark[i ] falsei n; u n
while u � 2 doif :mark[i ] then
repeat j Random(1; i � 1)until :mark[j ]A[i ]$ A[j ]p Uniform(0; 1)if p < (u � 1)D
u�2=Du thenmark[j ] true; u u � 1
u u � 1i i � 1
return A
1 2 3 4 8 6 7 5
"
![Page 19: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/19.jpg)
Our algorithm
procedure RandomDerangement(n)for i 1 to n do A[i ] i ;mark[i ] falsei n; u n
while u � 2 doif :mark[i ] then
repeat j Random(1; i � 1)until :mark[j ]A[i ]$ A[j ]p Uniform(0; 1)if p < (u � 1)D
u�2=Du thenmark[j ] true; u u � 1
u u � 1i i � 1
return A
1 7 3 4 8 6 2 5
![Page 20: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/20.jpg)
Our algorithm
procedure RandomDerangement(n)for i 1 to n do A[i ] i ;mark[i ] falsei n; u n
while u � 2 doif :mark[i ] then
repeat j Random(1; i � 1)until :mark[j ]A[i ]$ A[j ]p Uniform(0; 1)if p < (u � 1)D
u�2=Du thenmark[j ] true; u u � 1
u u � 1i i � 1
return A
1 7 3 4 8 6 2 5
"
![Page 21: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/21.jpg)
Our algorithm
procedure RandomDerangement(n)for i 1 to n do A[i ] i ;mark[i ] falsei n; u n
while u � 2 doif :mark[i ] then
repeat j Random(1; i � 1)until :mark[j ]A[i ]$ A[j ]p Uniform(0; 1)if p < (u � 1)D
u�2=Du thenmark[j ] true; u u � 1
u u � 1i i � 1
return A
1 7 3 4 6 8 2 5
![Page 22: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/22.jpg)
Our algorithm
procedure RandomDerangement(n)for i 1 to n do A[i ] i ;mark[i ] falsei n; u n
while u � 2 doif :mark[i ] then
repeat j Random(1; i � 1)until :mark[j ]A[i ]$ A[j ]p Uniform(0; 1)if p < (u � 1)D
u�2=Du thenmark[j ] true; u u � 1
u u � 1i i � 1
return A
1 7 3 4 6 8 2 5
"
![Page 23: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/23.jpg)
Our algorithm
procedure RandomDerangement(n)for i 1 to n do A[i ] i ;mark[i ] falsei n; u n
while u � 2 doif :mark[i ] then
repeat j Random(1; i � 1)until :mark[j ]A[i ]$ A[j ]p Uniform(0; 1)if p < (u � 1)D
u�2=Du thenmark[j ] true; u u � 1
u u � 1i i � 1
return A
1 7 6 4 3 8 2 5
![Page 24: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/24.jpg)
Our algorithm
procedure RandomDerangement(n)for i 1 to n do A[i ] i ;mark[i ] falsei n; u n
while u � 2 doif :mark[i ] then
repeat j Random(1; i � 1)until :mark[j ]A[i ]$ A[j ]p Uniform(0; 1)if p < (u � 1)D
u�2=Du thenmark[j ] true; u u � 1
u u � 1i i � 1
return A
1 7 6 4 3 8 2 5
"
![Page 25: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/25.jpg)
Our algorithm
procedure RandomDerangement(n)for i 1 to n do A[i ] i ;mark[i ] falsei n; u n
while u � 2 doif :mark[i ] then
repeat j Random(1; i � 1)until :mark[j ]A[i ]$ A[j ]p Uniform(0; 1)if p < (u � 1)D
u�2=Du thenmark[j ] true; u u � 1
u u � 1i i � 1
return A
4 7 6 1 3 8 2 5
![Page 26: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/26.jpg)
The analysis
I # of marked elements = # of cycles (Cn)
I # of iterations = # of calls to Uniform = n � Cn
I G = # of calls to Random
I Gi = # of calls to Random at iteration i
I
E[cost] = n � E[Cn] + E[G ]
= n � E[Cn] +X
1<i�n
E[Gi ]
![Page 27: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/27.jpg)
The analysis
I # of marked elements = # of cycles (Cn)
I # of iterations = # of calls to Uniform = n � Cn
I G = # of calls to Random
I Gi = # of calls to Random at iteration i
I
E[cost] = n � E[Cn] + E[G ]
= n � E[Cn] +X
1<i�n
E[Gi ]
![Page 28: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/28.jpg)
The analysis
I # of marked elements = # of cycles (Cn)
I # of iterations = # of calls to Uniform = n � Cn
I G = # of calls to Random
I Gi = # of calls to Random at iteration i
I
E[cost] = n � E[Cn] + E[G ]
= n � E[Cn] +X
1<i�n
E[Gi ]
![Page 29: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/29.jpg)
The analysis
I # of marked elements = # of cycles (Cn)
I # of iterations = # of calls to Uniform = n � Cn
I G = # of calls to Random
I Gi = # of calls to Random at iteration i
I
E[cost] = n � E[Cn] + E[G ]
= n � E[Cn] +X
1<i�n
E[Gi ]
![Page 30: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/30.jpg)
The analysis
I # of marked elements = # of cycles (Cn)
I # of iterations = # of calls to Uniform = n � Cn
I G = # of calls to Random
I Gi = # of calls to Random at iteration i
I
E[cost] = n � E[Cn] + E[G ]
= n � E[Cn] +X
1<i�n
E[Gi ]
![Page 31: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/31.jpg)
The analysis
The computation of E[Cn] can be done via standard generating
function techniques:
C (z ; v) =XA2D
z jAj
jAj!v# cycles(A)
= exp
�v
�log
1
1� z� z
��= e�vz 1
(1� z)v
E
hvCn
i=
n!
Dn
[zn]C (z ; v) =e1�v
(v � 1)!nv�1(1+ O(n�1+�))
E[Cn] = log n + O(1); V[Cn] = log n + O(1)
Cn � log nplog n
! N (0; 1)
![Page 32: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/32.jpg)
The analysis
The computation of E[Cn] can be done via standard generating
function techniques:
C (z ; v) =XA2D
z jAj
jAj!v# cycles(A)
= exp
�v
�log
1
1� z� z
��= e�vz 1
(1� z)v
E
hvCn
i=
n!
Dn
[zn]C (z ; v) =e1�v
(v � 1)!nv�1(1+ O(n�1+�))
E[Cn] = log n + O(1); V[Cn] = log n + O(1)
Cn � log nplog n
! N (0; 1)
![Page 33: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/33.jpg)
The analysis
The computation of E[Cn] can be done via standard generating
function techniques:
C (z ; v) =XA2D
z jAj
jAj!v# cycles(A)
= exp
�v
�log
1
1� z� z
��= e�vz 1
(1� z)v
E
hvCn
i=
n!
Dn
[zn]C (z ; v) =e1�v
(v � 1)!nv�1(1+ O(n�1+�))
E[Cn] = log n + O(1); V[Cn] = log n + O(1)
Cn � log nplog n
! N (0; 1)
![Page 34: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/34.jpg)
The analysis
The computation of E[Cn] can be done via standard generating
function techniques:
C (z ; v) =XA2D
z jAj
jAj!v# cycles(A)
= exp
�v
�log
1
1� z� z
��= e�vz 1
(1� z)v
E
hvCn
i=
n!
Dn
[zn]C (z ; v) =e1�v
(v � 1)!nv�1(1+ O(n�1+�))
E[Cn] = log n + O(1); V[Cn] = log n + O(1)
Cn � log nplog n
! N (0; 1)
![Page 35: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/35.jpg)
The analysis
The computation of E[Cn] can be done via standard generating
function techniques:
C (z ; v) =XA2D
z jAj
jAj!v# cycles(A)
= exp
�v
�log
1
1� z� z
��= e�vz 1
(1� z)v
E
hvCn
i=
n!
Dn
[zn]C (z ; v) =e1�v
(v � 1)!nv�1(1+ O(n�1+�))
E[Cn] = log n + O(1); V[Cn] = log n + O(1)
Cn � log nplog n
! N (0; 1)
![Page 36: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/36.jpg)
The analysis
I Mi indicator variable for the event �A[i ] gets marked�
I Mi = 1 =) Gi = 0
I
E[G ] =X
1<i�n
E[Gi jMi = 0] � P[Mi = 0]
![Page 37: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/37.jpg)
The analysis
I Mi indicator variable for the event �A[i ] gets marked�
I Mi = 1 =) Gi = 0
I
E[G ] =X
1<i�n
E[Gi jMi = 0] � P[Mi = 0]
![Page 38: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/38.jpg)
The analysis
I Mi indicator variable for the event �A[i ] gets marked�
I Mi = 1 =) Gi = 0
I
E[G ] =X
1<i�n
E[Gi jMi = 0] � P[Mi = 0]
![Page 39: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/39.jpg)
The analysis
I Ui = # of unmarked elements in A[1::i ];Un = n
I Bi+1 = # of marked elements in A[1::i ];Bn+1 = 0
I Ui + Bi+1 = i
I If A[i ] is not marked then Gi is geometrically distributed with
probability of success
(Ui � 1)=(i � 1) = (i � 1� Bi+1)=(i � 1); hence
E[Gi jMi = 0] = E
�i � 1
i � 1� Bi+1jMi = 0
�
![Page 40: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/40.jpg)
The analysis
I Ui = # of unmarked elements in A[1::i ];Un = n
I Bi+1 = # of marked elements in A[1::i ];Bn+1 = 0
I Ui + Bi+1 = i
I If A[i ] is not marked then Gi is geometrically distributed with
probability of success
(Ui � 1)=(i � 1) = (i � 1� Bi+1)=(i � 1); hence
E[Gi jMi = 0] = E
�i � 1
i � 1� Bi+1jMi = 0
�
![Page 41: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/41.jpg)
The analysis
I Ui = # of unmarked elements in A[1::i ];Un = n
I Bi+1 = # of marked elements in A[1::i ];Bn+1 = 0
I Ui + Bi+1 = i
I If A[i ] is not marked then Gi is geometrically distributed with
probability of success
(Ui � 1)=(i � 1) = (i � 1� Bi+1)=(i � 1); hence
E[Gi jMi = 0] = E
�i � 1
i � 1� Bi+1jMi = 0
�
![Page 42: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/42.jpg)
The analysis
I Ui = # of unmarked elements in A[1::i ];Un = n
I Bi+1 = # of marked elements in A[1::i ];Bn+1 = 0
I Ui + Bi+1 = i
I If A[i ] is not marked then Gi is geometrically distributed with
probability of success
(Ui � 1)=(i � 1) = (i � 1� Bi+1)=(i � 1); hence
E[Gi jMi = 0] = E
�i � 1
i � 1� Bi+1jMi = 0
�
![Page 43: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/43.jpg)
The analysis
I Bi+1 � Cn
I 0 � Bi+1 � i
I Ui 6= 1 and Bi+1 6= 1 for all 1 � i � n
I If Mi = 0 then Bi+1 < i � 1
![Page 44: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/44.jpg)
The analysis
I Bi+1 � Cn
I 0 � Bi+1 � i
I Ui 6= 1 and Bi+1 6= 1 for all 1 � i � n
I If Mi = 0 then Bi+1 < i � 1
![Page 45: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/45.jpg)
The analysis
I Bi+1 � Cn
I 0 � Bi+1 � i
I Ui 6= 1 and Bi+1 6= 1 for all 1 � i � n
I If Mi = 0 then Bi+1 < i � 1
![Page 46: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/46.jpg)
The analysis
I Bi+1 � Cn
I 0 � Bi+1 � i
I Ui 6= 1 and Bi+1 6= 1 for all 1 � i � n
I If Mi = 0 then Bi+1 < i � 1
![Page 47: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/47.jpg)
The analysis
E[G ] =X
1<i�n
E
�i � 1
i � 1� Bi+1jMi = 0
�� P[Mi = 0]
�X
1<i�n
E
�min
�i � 1;
i � 1
i � 1� Cn
��
�X
1�k�bn=2c
P[Cn = k]
0@k+1X
i=1
(i � 1) +
bn=2cXi=k+2
i � 1
i � 1� k
1A
= n � 1� E[Cn] +1
2E
�C 2n
�+ O(E[Cn log(n � Cn)])
= n + O(E�C 2n
�) + O(log n � E[Cn]) = n + O(log2 n)
![Page 48: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/48.jpg)
The analysis
E[G ] =X
1<i�n
E
�i � 1
i � 1� Bi+1jMi = 0
�� P[Mi = 0]
�X
1<i�n
E
�min
�i � 1;
i � 1
i � 1� Cn
��
�X
1�k�bn=2c
P[Cn = k]
0@k+1X
i=1
(i � 1) +
bn=2cXi=k+2
i � 1
i � 1� k
1A
= n � 1� E[Cn] +1
2E
�C 2n
�+ O(E[Cn log(n � Cn)])
= n + O(E�C 2n
�) + O(log n � E[Cn]) = n + O(log2 n)
![Page 49: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/49.jpg)
The analysis
E[G ] =X
1<i�n
E
�i � 1
i � 1� Bi+1jMi = 0
�� P[Mi = 0]
�X
1<i�n
E
�min
�i � 1;
i � 1
i � 1� Cn
��
�X
1�k�bn=2c
P[Cn = k]
0@k+1X
i=1
(i � 1) +
bn=2cXi=k+2
i � 1
i � 1� k
1A
= n � 1� E[Cn] +1
2E
�C 2n
�+ O(E[Cn log(n � Cn)])
= n + O(E�C 2n
�) + O(log n � E[Cn]) = n + O(log2 n)
![Page 50: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/50.jpg)
The analysis
E[G ] =X
1<i�n
E
�i � 1
i � 1� Bi+1jMi = 0
�� P[Mi = 0]
�X
1<i�n
E
�min
�i � 1;
i � 1
i � 1� Cn
��
�X
1�k�bn=2c
P[Cn = k]
0@k+1X
i=1
(i � 1) +
bn=2cXi=k+2
i � 1
i � 1� k
1A
= n � 1� E[Cn] +1
2E
�C 2n
�+ O(E[Cn log(n � Cn)])
= n + O(E�C 2n
�) + O(log n � E[Cn]) = n + O(log2 n)
![Page 51: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/51.jpg)
The analysis
E[G ] =X
1<i�n
E
�i � 1
i � 1� Bi+1jMi = 0
�� P[Mi = 0]
�X
1<i�n
E
�min
�i � 1;
i � 1
i � 1� Cn
��
�X
1�k�bn=2c
P[Cn = k]
0@k+1X
i=1
(i � 1) +
bn=2cXi=k+2
i � 1
i � 1� k
1A
= n � 1� E[Cn] +1
2E
�C 2n
�+ O(E[Cn log(n � Cn)])
= n + O(E�C 2n
�) + O(log n � E[Cn]) = n + O(log2 n)
![Page 52: Generating Random Derangementsconrado/research/talks/analco08.pdf · Generating Random Derangements Conrado Martínez 1 Alois Panholzer 2 Helmut Prodinger 3 1 Univ. Politècnica de](https://reader034.vdocument.in/reader034/viewer/2022051011/600fb79acd1efc177712a4e1/html5/thumbnails/52.jpg)
The analysis
Since we also have E[G ] � n � E[Cn], we have �nally
E[cost] = n � E[Cn] + E[G ] = 2n + O(log2 n)