Top Banner
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

Sep 26, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)